Git Primer

44
Git > SVN ..and most other VCS

description

Uploaded from Google Docs

Transcript of Git Primer

Page 1: Git Primer

Git > SVN ..and most other

VCS

Page 2: Git Primer

whygitisbetterthanx?

awesome branching!

the staging area

it's local!

fast, small, distributed...

http://thkoch2001.github.com/whygitisbetter/

http://whygitisbetterthanx.com

Page 3: Git Primer

setup...

git config --global user.name "Keith Mascarenhas"

git config --global user.email "[email protected]"

git config --global color.ui true

Page 4: Git Primer

lets begin!

cd app

git init

Page 5: Git Primer

local staging..

Make changes to app..

git status OR git diff

git add .

git commit -m 'made xyz change'

Page 6: Git Primer

useful git add shortcuts..

git add . [stages modified and deleted, without new]

git add -u [stages new and modified, without deleted]

git add -A [stages All]

Page 7: Git Primer

branching! ^^

git branch <new_branch_name> [creates branch]

git checkout <branch_name> [switch current working

directory to this branch]

'master' is our default root branch.

Page 8: Git Primer

branching! ^^

git checkout master

+

git branch issue53

+

git checkout issue53

=

git checkout -b issue53 master

git checkout -b [new branch name] [source branch name]

Page 9: Git Primer

merging! ^^

git checkout master

git merge issue53

Page 10: Git Primer

deleting branches..

git branch -d <branch_name> [Recommended]

Page 11: Git Primer

lets work remote!

Page 12: Git Primer

setting up unfuddle

cd ../app/

git init

git remote add unfuddle [email protected]:efl/app-dev.git

git config remote.unfuddle.push refs/heads/master:refs/heads/master

Page 13: Git Primer

or just migrate our svn repo!

git svn clone [svn_repo_url] /path/to/git/repo

cd /path/to/git/repo

git remote add origin [email protected]:efl/app-dev.git

git push origin master

Page 14: Git Primer

now clone it! [svn checkout]

git clone [email protected]:efl/app-dev.git

Page 15: Git Primer

[svn commit]

Make changes in xyz..

git commit -am "changed xyz"

git push <-> [svn commit]

git push origin master

git push [remote_name] [branchname_you_want_to_commit]

Page 16: Git Primer

[svn update]

git fetch

+

git merge origin/master

=

git pull

git pull origin/master <-> [svn update]

git pull origin [branch_name]

Page 17: Git Primer

push a branch to remote!

git checkout -b issue53 branch_x

git commit

git push origin issue53

Someone else..

git fetch

Page 18: Git Primer

tagging..

git tag -a v1.0

git tag [list them]

git tag -l 'v1.4.2.*' v1.4.2.1

v1.4.2.2

v1.4.2.3

v1.4.2.4

git show v1.0

git push origin --tags

Page 19: Git Primer

misc..

git log [--oneline] [--graph] [--all] [--stat]

git config --global alias.lolz "log --oneline --graph -all"

git lolz --decorate

git config --global alias.co "checkout"

git log issue53 ^master [incoming: origin/master ^master]

git log issue52 ^issue53 [outgoing: master ^origin/master]

Page 20: Git Primer

git roundup!

Page 21: Git Primer

git config

Page 22: Git Primer

git init

Page 23: Git Primer

git clone

Page 24: Git Primer

git status

Page 25: Git Primer

git add

Page 26: Git Primer

git commit

Page 27: Git Primer

git branch

Page 28: Git Primer

git checkout

Page 29: Git Primer

git merge

Page 30: Git Primer

git push

Page 31: Git Primer

git fetch

Page 32: Git Primer

git merge

Page 33: Git Primer

our workflow

thanks to Vincent Driessen (http://nvie.com/posts/a-successful-git-branching-model/)

Page 34: Git Primer

(app-prod)(app-stg)(app-dev)

app85

app85.0.1

app87

Page 35: Git Primer

(app-prod)(app-stg)(app-dev)

app85

app85.0.1

app87

Page 36: Git Primer

don't freak out!

(app-prod)(app-stg)(app-dev)

app85

app85.0.1

app87

Page 37: Git Primer

(app-prod)(app-stg)(app-dev)

app85

app85.0.1

app87

Page 38: Git Primer

(app-dev)(app-dev) (app-prod)

main branches

app85

app87

app89

Page 39: Git Primer

feature branches

Creating a feature branch

When starting work on a new feature, branch off from the develop branch.$ git checkout -b myfeature developSwitched to a new branch "myfeature"

Incorporating a finished feature on develop

Finished features may be merged into the develop branch definitely add them to the upcoming release:$ git checkout developSwitched to branch 'develop'$ git merge --no-ff myfeatureUpdating ea1b82a..05e9557(Summary of changes)$ git branch -d myfeatureDeleted branch myfeature (was 05e9557).$ git push origin develop

feature:branch off develop

merge back into develop

name: anything except: master, develop, hotfix-*, release-*

Page 40: Git Primer

(app-dev) (app-prod)

--no-ff?

app85

app87

Page 41: Git Primer

release & hotfix branches

(app-prod)(app-stg)(app-dev)

app85

app85.0.1

app87

Page 42: Git Primer

release:branch off develop

merge back into develop & master

name: release-*

hotfix:

branch off master

merge back into develop & master

name: hotfix-*

(app-prod)(app-stg)(app-dev)

app85

app85.0.1

app87

Page 43: Git Primer

thats it!

Page 44: Git Primer

you dont need to rtfd but it helps..

gitref.org

git-scm.com/docs

Introduction to Git - Scott Chacon

bit.ly/introtogit

bit.ly/introtogitdeck

Branching Model

bit.ly/branchingmodel

This awesome deck!

http://bit.ly/thisdeck