Learning Git


Centralize vs Decentralized
Centralized (SVN)
- Server-based (required)
- Network connection needed to checkout, commit, revert, branch, etc.
- Operations can be slow based on server and connection speed
- All commits, branches and tags are public

Decentralized (Git)
- Client based (you have the entire repo on your machine)
- No server is needed to use git locally
- Committing will only commit to you local cloned/init'd repo
- Branching and tagging happens locally
- Changes are "pushed" to the server in a separate step
- Stash incomplete changes and apply any time
- Pull changes from a server or other users
- Multiple remote repositories

Management Server
- Stash, GitHub, Bitbucket, etc.
- Custom Workflows for team projects
- Fork a repo
- Pull requests using remotely accessible repository
- Review code before merging in to blessed branch
- Commenting
- User Roles

Git Basics
Starting a project
$ mkdir MyProject
$ cd MyProject
$ git init
OR
Cloning an exiting repo
$ git clone git@github.com:vml-akoebbe/mustached-dubstep.git
Cloning into 'mustached-dubstep'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 3 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.
$ ls
mustached-dubstep
Commit Some Code
$ git push origin master
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 456 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:vml-akoebbe/mustached-dubstep.git
Push Commits to Server
$ git add cssgen.py
$ git commit -m "Added python css generator"
[master 43bd5eb] Added python css generator
1 file changed, 4 insertions(+)
create mode 100644 cssgen.py
Branching
$ git branch NewFeature
$ git branch
NewFeature
* master
$ git checkout NewFeature
Switched to branch 'NewFeature'
Commit and Push to a Branch
$ git commit -a -m "Added a new line"
[NewFeature e5a4c95] Added a new line
1 file changed, 1 insertion(+)
$ git push origin NewFeature
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 315 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:vml-akoebbe/mustached-dubstep.git
* [new branch] NewFeature -> NewFeature

Pull Request Examples
Resources
- https://try.github.io/
-
https://www.youtube.com/watch?v=1ffBJ4sVUb4 (Git For Ages 4 and Up)
Workflows
Questions?
Learning Git
By akoebbe
Learning Git
- 2,456