Reputation: 1240
So I have 3 branches;
develop
- my continued development branchversion_1
- a release branchversion_2
- a release branchI had to do a hotfix on version_2
to reship that version, it was a 2 line change in 2 files, very small.
I wanted to apply that fix to version_1
and develop
.
So I;
git checkout version_1
git merge <commit checksum>
I thought a commit only contains the changes, so would only apply those. But the merge conflicts because it tries to update all the changes between the two branches.
Is there a way to merge/move/apply ONLY the changes in a small commit to other branches?
I could just manually re-implement the hotfix on those branches, but this seems a lot of hard work, especially as more hotfixes may need to re applied and rolled out to all other branches.
Cheers, Will
Upvotes: 2
Views: 3815
Reputation: 9654
You need to cherry-pick
those commits.
Switch to the branch where you want to add the commits:
git checkout develop
Then, cherry-pick
the commit. First do a git reflog
and get the SHA-1
of the commit of the hotfix.
Then, while you are on the branch develop
, cherry-pick
it
git cherry-pick <commit SHA obtained above>
Perform similar actions on the other branch version_1
.
Upvotes: 2
Reputation: 1329732
Merging only one or a few commits mean using git cherry-pick
First cancel the merge you just did: see "Undo a Git merge?".
Then:
git checkout version_1
git cherry-pick <commit checksum>
That can apply to multiple commits or a range of commits: see "How to cherry pick a range of commits and merge into another branch".
Upvotes: 3