Git-你能用rebase做些你能做的事情吗';合并不行吗?
每次我尝试重新设置基础时,我都会卷入一个无限循环的无法解决的冲突中。在解决x冲突之前,出现y冲突,然后再次出现x冲突,依此类推Git-你能用rebase做些你能做的事情吗';合并不行吗?,git,git-rebase,Git,Git Rebase,每次我尝试重新设置基础时,我都会卷入一个无限循环的无法解决的冲突中。在解决x冲突之前,出现y冲突,然后再次出现x冲突,依此类推 关键是(显然)merge,甚至是cherry pick,提供了与rebase相同的功能,不是吗?如果不是的话,rebase的用处是什么?我只在一种情况下使用rebase。本案: 我有master分支和当前版本的应用程序 我为新功能创建功能分支 我在功能分支中进行了一些提交 我在主分支中进行了一些热提交 现在我想在feature分支中提交,在本例中我做rebase 我完成
关键是(显然)
merge
,甚至是cherry pick
,提供了与rebase
相同的功能,不是吗?如果不是的话,rebase
的用处是什么?我只在一种情况下使用rebase
。本案:
master
分支和当前版本的应用程序功能分支
功能分支中进行了一些提交
feature分支中提交,在本例中我做rebase
功能分支
,并将其合并到master中
git checkout master
git checkout feature-branch
git commit -am "feature commit #1"
git commit -am "feature commit #2"
git commit -am "feature commit #3"
git checkout master
git commit -am "hot fix"
git checkout feature-branch
git rebase master
git commit -am "i'm done"
git checkout master
git merge feature-branch
这允许我位于
master
分支的顶部,并拥有一个干净的git历史记录。rebase
重写历史记录。它确实比merge
或cherry pick
更重要,这是一个非常高级的工具,需要练习(而且可能很危险,因为它重写了历史…小心使用git push-f
)。当重设基础
的使用方式与合并
类似时,过程截然不同
git获取源代码和&git合并源代码/master
:
- 从源代码下载更改
- 在本地分支上合并更改
- 解决冲突并承诺
git获取源代码和&git重基源代码/主代码
:
- 从源代码下载更改
- 将本地分支重置为历史记录中的公共点(本地/远程回购共享的提交)
- 快进到原点
- 在新提交的基础上逐个应用您的提交
- 解决冲突并提交每个本地更改
rebase
的最大优点是,您只需更新本地回购协议,并在上面应用提交,就不会有任何“粗略”的合并提交,比如“嘿,我刚刚将这些内容合并到了中”。缺点是,如果有大量提交修改了相同的文件,由于不存在“总体”合并提交,因此必须反复解决冲突
但同样,
rebase
是一个非常高级的工具,用于重写历史。你可以修改以前的提交标题,删除过去的提交,将许多提交挤在一起,等等。所以,如此“自由”地重写历史,会使你失去可追溯性,不是吗?这是一个很好的总结,@Julen。