2. What will be covered
• Benefits of using a proper branching model with Git
• Introducing Sourcetree
• Learning the command line git commands
• Importance of learning the command line
• What is Sourcetree
• Why you should be using it
• Git-flow
Questions?
3. What will not be covered
• What is Git
• Why do we use Git
• Why do we need a GUI
Questions?
4. Benefits of a proper branching model
• No inconsistencies in working copy of code when multiple developers are on the same project
• Easy management of production code in terms of adding hotfixes whilst other development
projects are in progress
• Structured approach to developing new features and releases
• Easy & clean rollback to previous iterations of source code
• Easy prevention of deleting of code done by other developers with new code
• Simple synchronization of separate developments running in parralel
Questions?
5. Sourcetree
• Sourcetree is a Git GUI for making working with Git a lot simpler
• Sourcetree over Tortoise Git
• Better visibility of branching
• More control over what you are actually doing due to simpler interface and more semantic UI
• Integration with Git-flow
Questions?
6. Git-flow
• Branching paradigm
• Separation of developments and hotfixes
• Avoiding conflict
• New git workflow
• Specific branches for specific developments and hotfixes
• Why?
• Introducing Git-flow (git extension)
• What is it?
• What does it do?
• Why should we use it?
Questions?
7. Git-flow explained: Feature branches
• May branch from develop branch
• Must merge back into develop branch
• What are they for?
• New features
• Future release
• Etc…
Questions?
8. Git-flow explained: Release
branches
• May branch from develop branch
• Must merge back into develop or master branch
• What are they for?
•
•
•
•
Preparation for new production release
Minor bug fixes
Consolidation of features into a single release
Documentation!
• Where do they come from?
• Develop branch
• Including merged feature branches for the release
Questions?
9. Git-flow explained: Hotfix branches
• May branch from master branch
• Must merge back into develop and master branch
• What are they for?
• Fixing critical issues on live code
Questions?
10. What’s the point?
A lot of developers, primarily on less “strict” programming languages don’t exactly learn these kind of
practices, especially since usually they have only ever worked alone and never in a team on the same
project.
It’s usually something you’ll come into contact with when working with a much more strict albeit
structured language, a good example is working on an Objective C program which you are managing
for submission to the Apple App store.
One can understand why developers may question the need for this type of control, however there
are very good reasons for using a structured source control approach, namely;
•
•
•
•
•
•
Easier work between developers on the same project
Better documentation on all work undertaken
Clear visibility of all changes
Clear visibility on release versions
Much more!
Come to see me if you want a more in depth explanation, too much to cover in an hour! Happy committing!