Sauter Git Workflow : Merge a feature branch in another feature branch - sauter-hq/git-guidelines GitHub Wiki
It is possible that you are working on a feature branch and you need to merge the features of another feature branch to be able to develop further ( e.g. Your new gui needs the functionality of the new config file parser), to do this simply perform the following :
SourceTree
-
Checkout locally the feature branch you want to take as merge source ( e.g. feature/new-config-files-format)
-
Checkout the feature branch where you want to merge things in ( e.g. feature/ui-redesign)
-
Right click on the feature branch you want to merge ( e.g. feature/new-config-files-format) and click on Merge feature branch into current branch
Command Line
-
Checkout locally the feature branch you want to take as merge source ( e.g. feature/new-config-files-format)
git checkout -b feature/new-config-files-format origin/feature/new-config-files-format git pull origin
-
Checkout the feature branch where you want to merge things in ( e.g. feature/ui-redesign)
git checkout feature/ui-redesign
-
Now merge the feature branch you want the changes in your current one :
git merge feature/new-config-files-format
If there are no unresolvable conflict git will ask you to create a commit to validate the merge, in case there are conflicts you'll need to open the merge resolution tool:
Auto-merging tests/t01-rawobj.c CONFLICT (content): Merge conflict in tests/t01-rawobj.c Removing src/revwalk.h Auto-merging src/oid.c Automatic merge failed; fix conflicts and then commit the result.
git mergetool
Merging: tests/t01-rawobj.c Normal merge conflict for 'tests/t01-rawobj.c': {local}: modified file {remote}: modified file Hit return to start merge resolution tool (kdiff3):
This will drive you through all the steps of the merge, and ask you which changes you want to keep and which not. When changes are two files modified at the same time it should open up kdiff3, which will present you a merge resolution window.
Finally the merge can be validated by a commit. If you prefer aborting the merge because you are unsure, there is a command :
git merge --abort
.