I have master project and one branch made from it. When I merge master with branch, code in branch overwrites the one in master, and I would like to insert only different code from branch in master, or at least to be asked which code I want to keep. Here is one simple example of how I set up everything:
mkdir projectcd projectgit init
inside project directory I have one file called index.php with this code:
<?php /** * This is master code. */ class ClassName extends AnotherClass { function __construct(argument) { // this is from master } } Then I make branch:
git checkout -b my_branch
And I put this code inside index.php:
<?php /** * This is branch code. */ class ClassName extends AnotherClass { function __construct(argument) { // this is from branch } } Then I checkout to master and try to merge:
git checkout mastergit merge my_branch
And then branch code will override the one from master. In my master I will have same code like in branch. Shouldn't git offer me to chose which code to keep, or is there any way to force that ? If not, what I am doing wrong ?
If I make this change in branch code:
class ClassName extends AnotherClass => class ClassName extends MyClass
Then git would do recursive strategy merge, and would take MyClass from branch and keep everything else from master.
I do not know if I am showing you good examples, let me try to explain the situation once again:
1) I have some code in master that do not exists in branch.
2) I have some code in branch that do not exists in master.
How should I deal with this and not lose that different codes in both master and branch ? If that can not happen on some clean, good planned way, can I at least force git to ask me what I want to do with those differences ? I can only mange to make branch override master, and that is bad.