Distributed Revision Control
Alexander Bernauer
Outline
Part 1:
Revision Control
Motivation
Big Picture
Basic Terms
Part 2:
Centralized vs. Distributed
The Usual Subjects
Centralized
CVS
Distributed
Centralized
Problems
Decentralized
Example:
Open Source Project
fetch
public repository
main
developer
push
external
contributor
fetch
public
fork
push
Part 3:
git
Repository
File Status Lifecycle
Stages
working
copy
index
repository
remote
push/fetch
commit
add
checkout
Demo
References
master
References
master
v 1.0
References
master
v 1.0
feature X
References
master
v 1.0
feature X
References
master
v 1.0
feature X
References
master
v 1.0
feature X
References
master
v 1.0
feature X
v 1.1
References
master
v 1.0
feature X
v 1.1
References
master
v 1.0
feature X
v 1.1
References
master
v 1.0
feature X
feature Y
v 1.1
References
master
v 1.0
feature X
feature Y
v 1.1
References
master
v 1.0
feature X
feature Y
v 1.1
remotes/frank/feature Y
References
master
v 1.0
feature X
feature Y
v 1.1
remotes/frank/feature Y
References
master
v 1.0
feature X
v 1.1
remotes/frank/feature Y
References
master
v 1.0
feature X
v 1.1
References
master
v 1.0
feature X
v 1.1
References
master
v 1.0
feature X
v 1.1
References
master
v 1.0
v 1.1
References
master
v 1.0
v 1.1
v 2.0
References
master
v 1.0
v 1.1
v 2.0
Objects
BLOB
Tree
Commit
Tag
I need the latest version that works
$ git checkout master
$ git checkout v1.0
What is different now?
$ git log master..HEAD
$ git diff 924ee25
Which change introduced the bug?
$ git bisect start d5ddff1 HEAD
$ git bisect good
$ git bisect bad
$ git bisect run <cmd>
Who wrote this code?
$ git show cb0192d
$ git log -- foo.c
$ git blame foo.c
How to collaborate with others?
$ git clone http://...
$ git branch feature_x
<create commits>
$ git remote add peter git@...
$ git pull peter feature_x
How to manage security fixes for a release?
$ git checkout v1.3.0
$ git cherry-pick a5bd83f
$ git tag -a v1.3.1
$ git push origin v1.3.1
Add a new feature but stay synced with upstream
$ git branch feature_x
<edit files>
$ git add .
$ git commit
$ git fetch upstream
$ git merge upstream/master
More features
git...
References
http://gitready.com/
Git Magic
Sources