【问题标题】:Git: merge behind changesGit:合并更改
【发布时间】: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 什么吗?

【问题讨论】:

    标签: git github merge


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多