通常在使用git更新本地仓库中的新提交时,我们会使用git fetch和git rebase命令。但是我们不使用git fetch git merge命令。通常,原因是我们不想添加新的提交(合并提交),只是想在我们的代码顶部获取所有新的提交。那么为什么git pull的默认行为不是使用合并呢?我知道我们可以更改它,但是否有更好的理由使用fetch-merge而不是fetch-rebase?
git pull
时,默认行为是合并而不是变基合并拉取的更改。git pull -r
。git pull -r
命令来将本地修改进行变基(rebase),而不是合并它们(这本质上与先使用 fetch 再进行变基相同,但更简短)。但是,你只应该对没有其他人接收到的 本地 修改使用此命令。在所有其他情况下(以及当你有疑问时),只需使用 git pull
命令进行合并即可。 - pokepull
命令吗? - Narekpull
等同于拉取和合并;pull -r
等同于拉取和变基) - poke我认为默认情况下它的工作方式是为了避免重写本地历史记录并更改现有提交的哈希值。这些提交可能已经被推送到远程。 rebase
是一种破坏性的命令,从远程拉取更改默认情况下不应该破坏任何东西。
您可以使用 git pull --rebase
或者创建别名来执行此操作。
origin
进行 rebase
操作后,提交的 SHA-1 值仍然保持不变,对吗? - Narekgit pull --rebase
,因为在这种情况下合并提交是无用的。 - Stas