I have the following branches:
master
test1
, which was created from master
test2
, which was also created from master
.I've done multiple commits on the test1
branch, and also, since I created the test1
branch, I've created multiple commits on master
.
There are also commits on test2
, which I intend to merge back into master
later.
The thing right now is that I need my changes from master
, and if possible, from test2
on test1
.
I want to know if I can merge master
into test1
, so I get the commits from master
on test
, and after I finish my feature on test1
, merge that again to master
. Is that possible? Or it will raise conflicts?
Is it possible to merge also test2
into test1
, then merge test2
into master
, and, finally, merge test1
into master
?
Will Git understand that some commits are already merged into the branch that is being merged?
git merge master will update your current branch with the changes from your local master branch, the state of which will be that of when you last pulled while on that branch.
Every developer has a different Git branch management strategy, be it the popular GitFlow method or some other, home-grown concoction. But whatever branch management strategy you use, developers aren't supposed to merge master into branches. In fact, the exact opposite is supposed to happen.
Ideally, use smaller branches and commit/merge to main branch more frequently. Failing that, get to a clean commit point in your branch and merge/rebase latest master into your branch - keep it up to date.
In a good workflow, the feature branch is deleted once its merged back into master. New branches should be created for each new feature(s) that you work on.
I want to know if I can merge MASTER into TEST1, so I get the commits from master on test, and after I finish my feature on test1, merge that again to MASTER. is that possible? or it will raise conflicts?
That exactly how it is done. You may get conflict when you merge master into test1, that you have to resolve manually. After that you should be able to merge test1 into master without conflicts.
If thats possible, is possible to merge also test2 into test1, next merge test2 into master, and next merge test1 into master?
It is possible, but not advisable. Instead merge master into test2, then test2 back to master. (The same what you have done to test1.)
After this all your changes should be in master.
Will git understand that some commits are already merged into the branch that is being merged?
Yes, unlike SVN, Git is aware of such commits.
To be always up to date with and raise no conflicts when merging back to it you could do the following:
git checkout test1 git rebase master
At this point you will be up to date with master and have your commits on test1 on top of it.
rebase
would do the following:
After this, merging back to master will be a fast-forward.
git checkout master git merge test1
What I like about this approach is the following:
I've applied this for quite some time, and it seems to fit what you're trying to accomplish.
A visual explanation of how rebasing works may also be helpful.
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