【问题标题】:Git cherry pick also introduced a new file - how to get some of the commit?Git cherry pick 还引入了一个新文件——如何获得一些提交?
【发布时间】:2013-10-25 13:41:08
【问题描述】:

我使用来自主题分支的cherry-pick 合并到一个提交中,因为它有一些对主分支有用的更改。不幸的是,我没有注意到提交还引入了一个在主题分支上启动的新文件。这意味着在合并过程中,我得到了大部分文件并准备添加,但与标记为“我们已删除”的文件发生冲突。

我不确定我的下一步行动。我想保留提交的其余部分,然后当主题分支中的其余提交合并时,新文件及其所有更改都会不受阻碍地进入。这可能吗?

我认为我的下一步行动是:

  • git rm 文件,将cherry-pick 标记为ok,并希望这不会在合并时删除文件。
  • 将其合并并忽略它(我相信大多数开发人员会这样做但不会承认:)
  • 合并失败,返回主题分支,恢复提交,重新提交而不添加新文件,然后重新合并回主分支。我希望有比这更简单的方法。

非常感谢任何帮助。

【问题讨论】:

    标签: git merge


    【解决方案1】:

    我建议拆分提交,如this chapter of the Git book 中所述。

    【讨论】:

      【解决方案2】:

      如果您成功 cherry-picked 并且只丢失了一个文件,您可以从 HEAD^ 执行 checkout 并以最近的方式恢复文件:

      git checkout HEAD^ the/path/to/file
      

      【讨论】:

        【解决方案3】:

        假设您选择的提交足够理智(即 - 一个无法拆分为较小更改的单个更改),则其他文件中的更改需要该文件。没有该文件,工作树将处于损坏状态。如果在合并过程中修改了其他代码不使用该文件,您也可以在合并过程中删除该文件。

        如果提交可以拆分为较小的更改,您可以尝试这样做。

        【讨论】:

          猜你喜欢
          • 2018-04-17
          • 2013-03-09
          • 2012-11-05
          • 2013-03-19
          • 2016-10-24
          • 1970-01-01
          • 2011-08-08
          • 2021-01-18
          • 2011-12-09
          相关资源
          最近更新 更多