了解rebase如何在git中工作

我已经使用了$ git pull origin master (这是fetchmerge的组合)和$ git push origin master 。 现在我正在听到关于rebase 。 我已阅读关于它的文档,但令人遗憾的是,我无法理解它是如何工作的。

两个问题:

一: ' (它在DE的顶部)是什么意思?

before rebase:

A <- B <- C
^         ^
          
  D <- E <- F

after git rebase master:

A <- B <- C <- D' <- E'

二:当我应该用$ git rebase ? (也是一样的git pull --rebase ?)


一: ' (它在DE的顶部)是什么意思?

'意味着提交D'E'已经由原来的DE被git的rebase功能改变了。 因此,尽管它们可能会以相同的代码更改(除非存在冲突),但它们不是字面上相同的提交,这正是因为它们至少与DE具有不同的历史记录。 在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