6. Why Git?
• Fast, secure, safe, solid
• Great collaboration tools: built-in and from
third parties
7. Why Git?
• Fast, secure, safe, solid
• Great collaboration tools: built-in and from
third parties
• Distributed (think offline mode, freedom to
tinker)
8. Why Git?
• Fast, secure, safe, solid
• Great collaboration tools: built-in and from
third parties
• Distributed (think offline mode, freedom to
tinker)
• Cross-platform: UNIX, Mac OS X,Windows
9. Why Git?
• Fast, secure, safe, solid
• Great collaboration tools: built-in and from
third parties
• Distributed (think offline mode, freedom to
tinker)
• Cross-platform: UNIX, Mac OS X,Windows
• Proven track record: Linux Kernel, KDE,
X.org, KDE, Gnome,Android, Debian,
Fedora, openSUSE, Mono, Perl, Ruby, Samba,
PostgreSQL,Wine, and many others
18. Git “Server”
• “Server” is what you want it to be: an SSH
account, a simple HTTP server, or a CGI-
capable HTTP server
19. Git “Server”
• “Server” is what you want it to be: an SSH
account, a simple HTTP server, or a CGI-
capable HTTP server
• No centralized server built-in concept
20. Git “Server”
• “Server” is what you want it to be: an SSH
account, a simple HTTP server, or a CGI-
capable HTTP server
• No centralized server built-in concept
• One or more repositories in well-known
locations become the central repository
21. Git “Server”
• “Server” is what you want it to be: an SSH
account, a simple HTTP server, or a CGI-
capable HTTP server
• No centralized server built-in concept
• One or more repositories in well-known
locations become the central repository
• Social convention wins
23. Centralized Git Servers
Gitosis Gitolite
Managed by git Managed by git + shell
Maintained? Active development
repo x user
repo x user x branch x
action
24. Centralized Git Servers
Gitosis Gitolite
Managed by git Managed by git + shell
Maintained? Active development
repo x user
repo x user x branch x
action
25. Centralized Git Servers
Gitosis Gitolite
Managed by git Managed by git + shell
Maintained? Active development
repo x user
repo x user x branch x
action
26. Centralized Git Servers
Gitosis Gitolite
Managed by git Managed by git + shell
Maintained? Active development
repo x user
repo x user x branch x
action
34. One final tool...
• Hudson
• Continuous integration solution
• Integrates very well with Git
35. One final tool...
• Hudson
• Continuous integration solution
• Integrates very well with Git
• Its *very* easy to install
36. One final tool...
• Hudson
• Continuous integration solution
• Integrates very well with Git
• Its *very* easy to install
• ... and it has Chuck Norris quotes!
58. git branches
• Byte strings, so mixing codepages bad idea
• Use directories to organize branches
• feature/*, test/*, <dev_handle>/*
• Think globally to minimize clashes
68. Common branch
names
• Everybody has a production branch: master
• Release branches: release/*
• New features get a branch each: feature/*
69. Common branch
names
• Everybody has a production branch: master
• Release branches: release/*
• New features get a branch each: feature/*
• If you have multiple developers on the
same feature: feature/NAME/DEV
70. Common branch
names
• Everybody has a production branch: master
• Release branches: release/*
• New features get a branch each: feature/*
• If you have multiple developers on the
same feature: feature/NAME/DEV
• If you need a “next production”: develop
71. Common branch
names
• Everybody has a production branch: master
• Release branches: release/*
• New features get a branch each: feature/*
• If you have multiple developers on the
same feature: feature/NAME/DEV
• If you need a “next production”: develop
• When things go wrong: hotfix/*
75. Conclusions
• Git is ready for big teams
• Git is also ready for small teams
• There is no right way...
76. Conclusions
• Git is ready for big teams
• Git is also ready for small teams
• There is no right way...
• ... but start with current best practices
77. Conclusions
• Git is ready for big teams
• Git is also ready for small teams
• There is no right way...
• ... but start with current best practices
• Whatever you do, the important thing is to
use a source control system