huhongfei 2014-07-21
这是个纯git的问题
困扰了我2天,后来我就搞清楚问题缘由了。
问题是这样的:
我使用git branch admin创建了一个分支,然后使用git checkout admin进入此分支写代码,此后admin相关的工作都在这个分支上进行。当我想要提交时,先使用git checkout master切回我当前的主线,然后使用git merge admin将分支合并到主线master上。重点来了,这个时候我使用git pull --rebase,之后就出现大量的merge,而出现merge的内容是我上次提交过的代码,甚至有的代码重复出现,一团糟,让我直接怀疑git这个工具存在的必要。
后来针对这个问题我进行学习和了解:
光是使用这些git的命令行来使用git却对它们能造成的影响我有点不甚了解,所以我定位问题出在我不了解上。最后了解了我不该使用git pull --rebase,而应该使用git pull。
因为加了--rebase就等于是将自己与服务器主线合并,而此时master刚刚merge了branch,因此git将已经merge过的master,以及admin一同与服务器上的代码进行合并,那面会有重复和大量不识别。
而直接使用git pull则等于是merge了服务器上的主线,是以当前master作为主线去merge了服务器上的主线。这时,你是以master为主,去分别merge了两个分支,因此不会出现问题。
其实使用上诉办法并不是最好,最好是切回主线时,先git pull --rebase,然后再merge分支。