Git:合并更改

Posted

技术标签:

【中文标题】Git:合并更改【英文标题】:Git: merge behind changes 【发布时间】:2013-09-26 13:50:25 【问题描述】:

场景:

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

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

我需要git rebase 什么吗?

【问题讨论】:

【参考方案1】:

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

git pull --rebase

这会自动重新设置计算机 B 上的更改基础,使历史看起来是线性的。有关 rebase 的更多信息,请查看this answer。

如果您已经将合并提交从计算机 B 推送到 github,那么为时已晚:此合并提交将永远保留在那里。如果没有,您仍然可以重新设置基准。不过以后直接git pull --rebase就比较容易避免了。

【讨论】:

【参考方案2】:

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

git config --global branch.autosetuprebase always

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

git pull --no-rebase

【讨论】:

以上是关于Git:合并更改的主要内容,如果未能解决你的问题,请参考以下文章

Git:合并期间的其他更改而没有冲突

更改 git 合并分支冲突消息 [重复]

git revert 后,合并显示没有更改并且已经更新

在拉取期间解决 Git 合并冲突以支持其更改

未更改的文件上的 Git 合并冲突

如何将本地未提交的更改合并到另一个 Git 分支?