Git:合并落后的更改

4
场景:
  • 计算机A和计算机B都从Github上克隆了一个git仓库。
  • 在计算机A上,我对一个仓库进行更改,提交并推送到Github。
  • 在计算机B上,我更改了其他不相关的文件,并提交。
  • 在计算机B上,我尝试推送,但由于忘记先拉取我的更改,因此无法推送。
  • 在计算机B上,我拉取更改,Git创建了一个"Merge branch 'master' of github.com:user/repo"提交。
  • 在计算机B上,我将更改推送到Github,但提交历史记录中有一个烦人且不必要的"Merge"提交。
如何使用git merge将合并提交放置在所有未推送的提交之前?如果这会破坏未推送提交的SHAs,则可以接受。
我需要git rebase吗?
2个回答

4

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

git pull --rebase

这将自动将您在计算机B上的更改合并到一起,使历史记录呈线性状态。关于rebase更多信息,请参阅此答案

如果您已经将从计算机B到github的合并提交推送,则为时已晚:该合并提交将永远保留在那里。如果没有,您仍然可以进行rebase。但是,更容易的方法是简单地使用git pull --rebase来避免它在未来发生。


1
如果您想让git pull默认使用rebase行为,您也可以将以下内容放入您的配置文件中:
git config --global branch.autosetuprebase always

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

git pull --no-rebase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接