1. <span style="font-size:18px;">git checkout -b lab4 origin/lab4  
  2. git merge lab3</span>  


执行上面2条命令是创建一个新的本地分支lab4,并且将分支origin/lab4的内容放到新分支lab4中,最后将本地lab3分支的内容合并到新创建的本地lab4分支中。

合并过程中若出现冲突,比如:

  1. <span style="font-size:18px;">Auto-merging lib/syscall.c  
  2. Auto-merging lib/printfmt.c  
  3. Auto-merging kern/trapentry.S  
  4. Auto-merging kern/trap.c  
  5. CONFLICT (content): Merge conflict in kern/trap.c  
  6. Auto-merging kern/syscall.c  
  7. Auto-merging kern/pmap.c  
  8. CONFLICT (content): Merge conflict in kern/pmap.c  
  9. Auto-merging kern/init.c  
  10. CONFLICT (content): Merge conflict in kern/init.c  
  11. Auto-merging kern/env.c  
  12. CONFLICT (content): Merge conflict in kern/env.c  
  13. Auto-merging kern/console.c  
  14. CONFLICT (content): Merge conflict in kern/console.c  
  15. Automatic merge failed; fix conflicts and then commit the result.  
  16. </span>  


我们需要消除冲突,手动消除冲突的方法:

1. 打开编辑冲突的文件,kern/trap.c,对于形如这样的冲突结构进行处理:

  1. <span style="font-size:18px;">hello  
  2. <<<<<<< HEAD  
  3. world  
  4. =======  
  5. hadoop  
  6. >>>>>>> lab3  
  7. next</span>  


介于 <<<<<<<(七个‘<’) HEAD  和 ======= 的内容是lab4中原有的内容:world

介于 ======= 和 >>>>>>> lab3 的内容是lab3中原有的内容:hadoop

这样标记表示 将lab3中的内容整合进lab4中的过程中,上述标记的2块内容会发生冲突,解决办法就是我们手动编辑去掉冲突,即先编辑冲突,然后git commit提交。

注:对于git来讲,编辑冲突跟平时的修改代码没什么差异。修改完成后,都是要把修改添加到缓存,然后commit。