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:合并更改的主要内容,如果未能解决你的问题,请参考以下文章