【git】git rebase

git merge 与git rebase异同

当要合并两个分叉的分支时,merge的方式是将待合入分支和当前分支不同的部分,在当前分支新建节点,如下图所示

 

 

rebase与merge不同,rebase会将合入分支上超前的节点在待合入分支上重新提交一遍,如下图,B1 B2会变为B1’ B2’,看起来会变成线性历史: 

使用 rebase(让历史更干净):

git fetch origin
git rebase origin/main

本地提交会“放到远程提交之后”,提交历史更整洁。如果遇到冲突,也需要手动解决,然后:

git rebase --continue

 

操作步骤解析

查询命令git status, 会提示哪些文件冲突:

git status

输出类似:

both modified: file1.txt
both modified: file2.txt

打开冲突文件,会看到类似标记:

<<<<<<< HEAD
本地改动
=======
远程改动
>>>>>>> origin/main
  • <<<<<<< HEAD → 本地提交的内容
  • ======= → 分隔符
  • >>>>>>> origin/main → 远程提交内容

2. 解决完冲突后,使用命令git add:

git add file1.txt file2.txt

3. 继续rebase:

git rebase --continue

4. 如果觉得冲突太多或者操作错误,可以放弃 rebase,回到操作前状态:

git rebase --abort

参考资料

1. 使用git rebase合并多次commit

2. (Git)合并多个commit

3. git rebase命令

4. 图解4种git合并分支方法

5. git rebase 用法详解与工作原理

posted @ 2020-10-11 21:59  苏格拉底的落泪  阅读(290)  评论(0)    收藏  举报