4

设想:

  • 计算机 A 和计算机 B 分别从 Github 克隆了一个 git 存储库。
  • 在计算机 A 上,我对存储库进行更改、提交并推送到 Github。
  • 在计算机 B 上,我对其他不相关的文件进行更改并提交。
  • 在计算机 B 上,我尝试推送,但不能,因为我忘了先拉出我的更改。
  • 在计算机 B 上,我拉取更改,然后 git 创建一个“合并 github.com:user/repo 的分支‘主’”提交。
  • 在计算机 B 上,我将更改推送到 Github,但在提交历史记录中有一个烦人且不必要的“合并”提交。

如何在所有尚未推送的提交之前git merge放置合并提交?如果这弄乱了未推送提交的 SHA 也没关系。

我需要git rebase什么吗?

4

2 回答 2

4

避免“烦人”合并提交的最简单方法:

git pull --rebase

这将自动重新调整计算机 B 上的更改,使历史看起来是线性的。有关 rebase 的更多信息,请查看此答案

如果您已经将合并提交从计算机 B 推送到 github,那么为时已晚:此合并提交将永远保留在那里。如果没有,您仍然可以重新设置基准。但是以后简单git pull --rebase地避免它会更容易。

于 2013-09-21T05:37:14.817 回答
1

如果你想git pull默认有一个变基行为,你也可以把它放在你的配置中:

git config --global branch.autosetuprebase always

当您为每个分支拉取时,配置中的此选项将设置变基行为。如果您想在设置后通过合并进行拉动,您可以使用 option 来完成--no-rebase

git pull --no-rebase
于 2013-09-21T05:56:23.203 回答