This document provides an overview of Git and compares its project structure, branching, merging, tagging, and other features to Subversion (SVN). It notes that Git uses a single working directory instead of separate directories for branches like SVN. It outlines how Git handles operations like cloning repositories, branching, merging, tagging, and pushing/pulling changes. The document also discusses common Git commands and how to get help. It includes sections on branching strategies for development, release, and hotfix branches as well as tooling options for Git on the command line, OSX, Windows, and within IDEs like Eclipse and IntelliJ.
11. development master
Main initial
branches commit
• Infinite lifetime production
• master = stable release
Production Release
Tag X.X.0
git checkout master
git merge development
git tag x.x.x
git push origin master
git push --tags
Tag X.X.1
latest
12. featureX development
Feature
branches
• Usually local
• Use non-fast-
forward
Creating Feature Branch
merge with
git checkout –b featureX --no-ff
Integrating Feature Branch
git checkout development
git merge --no-ff featureX
delete
git branch –d featureX
branch
git push origin development
13. development release-x.x master
Release
branches release
features
complete
• Production release
preparation
• Release bugfixing release
Creating Release Branch bugfixes
git checkout –b release-x.x
Finishing Release
git checkout master Tag
git merge --no-ff release-x.x
git tag x.x.0
14. development hotfix-x.x.x master
Hotfix
branches branch from
master
• Severe production
bugfixes
• Tag on master
afterwards
Tag
merge into
master AND
development
16. Command Line
$ The fastest way to go
$ Auto-completion support
$ Aliases for the lazy
$ Gitk – visual history viewer
$ Git bash on Windows
$ Good help
17. OSX - Sourcetree
• Standalone Client
• Free (Belongs to Atlassian by now)
• Excellent GUI
• Alternatives: Tower
18. Windows - SmartGit
• Standalone client
• Free (for personal use)
• All you need out of the box
• SmartGit 3 out soon
• Alternatives: TortoiseGit
19. Eclipse / IntelliJ
• eGit • Fully integrated
• jGit base • Needs getting
• It got a LOT used to
better…
The --no-ff flag causes the merge to always create a new commit object, even if the merge could be performed with a fast-forward. This avoids losing information about the historical existence of a feature branch and groups together all commits that together added the feature
The --no-ff flag causes the merge to always create a new commit object, even if the merge could be performed with a fast-forward. This avoids losing information about the historical existence of a feature branch and groups together all commits that together added the feature
The --no-ff flag causes the merge to always create a new commit object, even if the merge could be performed with a fast-forward. This avoids losing information about the historical existence of a feature branch and groups together all commits that together added the feature