【问题标题】:How to merge a branch made from an old commit如何合并从旧提交创建的分支
【发布时间】:2015-03-22 15:31:46
【问题描述】:

这与merge branch that was created from old commit to master 相同的问题从未得到完整的答案。 所以我的development 分支出现以下情况

$ git commit
commit 1

一切都好。

更改文件abc

$ git commit
commit 2

自动化测试失败

回滚文件

$ git commit
commit 3
$ git checkout 2
$ git branch failed

b 中查找错误,修复,测试

$ git commit
commit 4
$ git checkout development
$ git merge failed

只有b 被合并。 ac 不是。我通过实际查看文件来确认,并注意到它们是不同的。 git diff development..failed 进一步表明它们是不同的。

我需要所有文件。当我做git merge 时,我希望所有东西都能被传递,因为它们基本上是相同的。

我可以对文件进行微小的更改以强制它合并,我可以复制failed 分支并将文件手动复制到development 并以这种方式检查它们,我确定有我可以通过强制 git 将 failed 作为新的 development 分支来做其他事情,但是这些都感觉是错误的答案,尤其是当我认为我的实际情况比三个文件和人为错误的可能性很大。

如何正确执行此操作?如何正确地将与此failed 分支不同的所有文件合并回development

谢谢。

【问题讨论】:

  • 我理解你的意思吗?您希望 ac 在合并 failed(从 commit 2 开始)后与 commit 2 中的相同吗?
  • 如果我先执行git checkout 2,然后执行git branch failed,则不会创建名为failed 的分支。我仍然处于分离的 HEAD 状态,并且在切换回 development 作为 git 警告状态时会丢失任何提交。您确定创建了failed 分支吗?
  • 我可能记错了我到底做了什么,我一直在试图弄清楚如何做我想做的事情,但最终结果是我有一个分支“失败”,即“提交 2”,然后我修改了文件“b”。我想将这个分支,所有三个文件合并回开发中(其他人也做了更改,但没有对这些特定文件进行更改)。
  • 如果你在failed 上没有对它们进行任何更改,git 应该如何知道它应该合并ac?您可以放弃在 failed 分支之后对 development 所做的所有更改,但您说其他开发人员也进行了更改,我怀疑您是否想丢失这些更改。
  • "如果您在失败时没有对它们进行任何更改,git 应该如何知道它应该合并 a 和 c?"是的,就是这个问题。

标签: git merge branch commit


【解决方案1】:

正确的答案是简单地还原revert并从那里合并。

在我的具体情况下,其他开发人员已经对还原的代码进行了更改,我也需要对其进行挑选。

【讨论】:

    猜你喜欢
    • 2013-09-21
    • 2017-07-07
    • 2011-11-02
    • 2012-02-20
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2015-06-08
    相关资源
    最近更新 更多