I have master branch with initial state:
touch file
git add file
git commit -m "initial"
Then I did some changes:
echo "123" >> file
git commit -am "feature1"
which really belong to a feature branch, so I branched:
git branch TEST
and reverted change in master (I don't know if this is the best way to do it but it did what needed at the time):
git revert <last commit hash>
Then I did some more changes on feature branch:
git checkout TEST
echo "456" >> file
git commit -am "feature 1 continued"
And now I have problem merging master to it. What I want is to be able to merge all future changes in master to a TEST branch and keep my feature branch changes.
Code is already pushed to a remote.
To be able to merge the TEST
branch you'll need to revert the revert, so that the TEST
history can be applied cleanly.
I.e. whereas originally the master branch history was:
$ git checkout master
$ git log --oneline
yyyyyyy Revert "wanted change"
xxxxxxx wanted change
....
And the TEST
branch history is:
$ git checkout TEST
$ git log --oneline
aaaaaaa Test development commits
xxxxxxx wanted change
....
What you'll need is to achieve this:
$ git checkout TEST
$ git log --oneline
aaaaaaa Test development commits
zzzzzzz Revert "Revert "wanted change"" # <-
yyyyyyy Revert "wanted change"
xxxxxxx wanted change
....
I.e. a checkout at xxxxxxx
and at zzzzzzz
would be exactly the same.
To do that, a relatively easy way is to use an intermediary branch:
$ git checkout master
$ git checkout -b merge-resolution
$ git revert yyyyyyy
$ git merge TEST
And then merge that branch with master:
$ git checkout master
$ git merge merge-resolution
$ git branch -d merge-resolution
This should result in a clean/consistent history in master, with the changes of TEST
cleanly applied.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With