git 冲突覆盖_Git分支在合并时会覆盖主机而不会产生冲突

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 project

cd project

git init

inside project directory I have one file called index.php with this code:

/**

* 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:

/**

* 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 master

git 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, please bare with me:

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.

I am really confused. Thanks

解决方案

Merging a branch means that you want to add the changes suggested by the branch. You can NOT selectively merge a branch. It get's merged as a whole.

To see what is the diff b/w two branches for reviewing before merging, run

git diff master my_branch

If you don't feel like the code in the my_branch is up to your standards OR is errorenous, don't merge it.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值