git merge conflict的处理

注:补充一点,使用git am的时候,加上-3参数,这样conflict的时候就会出现如下的文本,方便我们解决conflict。

 

会产生conflict的,一般是在做git merge, git cherry-pick, git rebase这些事情的时候。 

conflict的时候,编辑冲突的文件,搜索<<<<,就会找到冲突的地方,一般语法是这样的:

<<<<<<< HEAD: <filename>

......

=======

...... 

>>>>>>> <commit number & commit subject/branch name(which wanna be merged)>: <filename>

 

七个<号到七个=中间的内容,是HEAD这个branch上的内容。七个=到七个>之间的内容,是要merge的patch的内容。

 

1. git merge <branch which wanna be merged>

   对于git merge来说,七个<号到七个=中间的内容,是local branch上的内容。七个=到七个>之间的内容,是要merge进来的branch上的内容。

 

2. git cherry-pick,跟git merge一样

 

3. git rebase

   git rebase的做法很简单,就是将要rebase的第一个commit之前的那个commit checkout出来到一个"no branch"(没有名字的branch),然后从要rebase的第一个patch开始,一个一个的merge到这个"no branch"中去。完成之后,将这个"no branch"改名成你运行git rebase的时候所在的branch。

   所以,在git rebase的时候, 七个<号到七个=中间的内容,是"no branch"上的内容。七个=到七个>之间的内容,是本次要rebase的那个patch的内容。七个>号后面的commit name/commit subject也证明了这一点。

   解决了冲突之后,git add即可,不需要git commit,然后git rebase --continue即可。 

posted @ 2013-04-26 14:23  super119  阅读(4128)  评论(0编辑  收藏  举报