git merge的容易忽略的问题

现在越来越多的使用git来做代码管理工具,它的确比svn更加强大。
前几天在使用git合并代码的时候,发现一个小问题
比如branch1修改文件a.txt中的一处内容,把a=3改为了a=4
同时branch2也修改了文件a.txt,并且是把a=3改为a=5
以上两个分支都进行了提交,并push到了远程仓库
这时,我们为了上线,需要把branch2这个分支合并到branch1中,于是我们在branch1分支上执行了合并命令:git merge origin/branch2
这时候你会发现a.txt文件有冲突,然后我们以branch1的内容为准,即相当于覆盖掉branch2的修改,当你这么做之后,你就会发现a.txt文件没有在add文件列表中。
这是因为a.txt在合并之后,其内容跟branch1原本内容一致,并没有任何修改,git默认的就没有任何可以提交的文件。
由于我是在idea工具下操作的,这时可以清楚的看到当前的分支名为merging branch1,意思很明确,说明分支还处于merge的状态中,没有真正提交上去(注意:虽然没有提交到远程,但是上线却不受影响,因为a.txt的内容是对的,比较恶心)。
这时你用git status命令查看的话,可以清楚的看到有这么一句话:
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)
git比较棒的地方,就是你在使用命令行时都可以自动的提示你该执行什么了,这里也是一样,虽然没有任何可提交的文件,但是这里我们需要git commit一下(利用idea工具的话,我暂时未发现该如何操作)。
当这样操作之后,你就会发现有内容可以push到远程仓库了,这些内容分别为branch2对a.txt的修改,以及合并时的修改。
当然,若一开始就以branch2的修改为准,那就不会遇到以上看不到需提交文件的情况,因为a.txt文件跟branch1有了区别。
同时最近一名实习生问我,为啥有时候合并之后要进行两次提交才行,这种情况是idea工具带来的,若是使用命令操作就没有这个疑问。
idea工具当你把a.txt文件合并之后,在没提交到远程仓库之前,你若是又把a.txt文件修改了,这时候你利用idea工具的commit操作,就会先把合并的操作进行提交,刚刚做的修改不会提交,故而分成了两次提交。 

猜你喜欢

转载自jjhpeopl.iteye.com/blog/2326058