了解rebase如何在git中工作
我已经使用了$ git pull origin master
(这是fetch
和merge
的组合)和$ git push origin master
。 现在我正在听到关于rebase
。 我已阅读关于它的文档,但令人遗憾的是,我无法理解它是如何工作的。
两个问题:
一: '
(它在D
和E
的顶部)是什么意思?
before rebase:
A <- B <- C
^ ^
D <- E <- F
after git rebase master:
A <- B <- C <- D' <- E'
二:当我不应该用$ git rebase
? (也是一样的git pull --rebase
?)
一: '
(它在D
和E
的顶部)是什么意思?
'
意味着提交D'
和E'
已经由原来的D
和E
被git的rebase功能改变了。 因此,尽管它们可能会以相同的代码更改(除非存在冲突),但它们不是字面上相同的提交,这正是因为它们至少与D
和E
具有不同的历史记录。 在git中,具有不同历史的提交在设计上有所不同,并且它们将具有不同的哈希值。
二:当我不应该用$ git rebase
? (也是一样的git pull --rebase
?)
当结果被推送到一个已经是共享远程的分支时,这里的“共享”意味着其他人已经检查出它并至少对其进行了本地修改(或者你不确定其他人是否这样做)。
从git文档:
其他人基于工作的分支(或任何其他形式的重写)是一个坏主意:它下游的任何人都被迫手动修改其历史记录。
链接地址: http://www.djcxy.com/p/45101.html上一篇: Understanding how rebase works in git
下一篇: why do files I didn't touch become merge conflicts after a pull