【问题标题】:Git merge commit with no changes removes edits to file没有更改的 Git 合并提交会删除对文件的编辑
【发布时间】:2016-02-26 19:21:31
【问题描述】:

我和一位同事正在开展一个使用 git 进行源代码控制的项目。今天下午,我对一个特定的文件MyFile.txt 做了几次提交。我将我的更改推送到我们的主分支 (trunk),不久之后我的同事合并了他的(不相关的)更改。这是一个视觉效果:

在我的同事进行合并提交(上面标记为1.0.1834 的提交)后,我的所有更改都消失了!

我切换回我的提交(标记为1.0.1833)以验证我是否正确提交了我的更改;我做到了 - MyFile.txt 从那天下午开始我所有的变化。但是,如果我切换到同事的合并提交(标记为 1.0.1834),MyFile.txt 将处于原始状态,而我没有任何更改。

我同事的合并提交 (1.0.1834) 不包含任何更改 - gitk 中的“差异”窗口为空。这是我们 GitLab 网站提交的另一个视图:

发生了什么?我的改变去哪儿了?我怎样才能防止这种情况在未来发生?

【问题讨论】:

    标签: git version-control merge git-merge


    【解决方案1】:

    如果您的同事完成了git merge --ours,则可能会发生这种情况。

    生成的合并提交将与他之前的提交 HEAD 相同。

    这是我们的合并策略:

    合并的结果树始终是当前分支头的树,有效地忽略了所有其他分支的所有更改。它旨在用于取代分支的旧开发历史。
    请注意,这与 recursive 合并策略的 -Xours 选项不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      相关资源
      最近更新 更多