Git:合并更改后面



场景:

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

如何使用git merge将合并提交放在所有未推送的提交之前?如果这会弄乱未推送提交的 SHA,也没关系。

我需要git rebase一些东西吗?

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

git pull --rebase

这将自动在计算机 B 上重新设置更改的基准,使历史记录显示为线性。有关变基的更多信息,请查看此答案。

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

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

git config --global branch.autosetuprebase always

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

git pull --no-rebase

最新更新