【问题标题】:Merge back deleted file from a branch to master将已删除的文件从分支合并回 master
【发布时间】:2015-09-07 13:40:26
【问题描述】:

我在 git repo 中有一个分支 A 和 master。

在分支 A 中,我做了几次添加、删除。在某些时候,这些更改也合并到了 Master 中,但我们不得不在没有这些更改的情况下发布 master,因此我们删除了 master 中的文件。

现在,当将 master 合并到分支 A 时,为了获取最后的更改,Git 显然会删除文件,因为它们在最后一次更改后已在 master 中删除。

在合并回最后一个 Master 更改的同时保持分支 A 更改的最简单方法是什么?

【问题讨论】:

  • 你能提供你的 git 仓库的简短历史吗?使用简单的resetcheckout 应该可以解决问题,但根据您的历史,它应该有更好的方法:)

标签: git git-merge


【解决方案1】:

git 所做的事情是有道理的,听起来你同意这一点。我会让git 做它所做的事情并保留默认的合并提交,然后在额外的提交中重新添加丢失的文件:

$ git checkout master
$ git merge A    # the file is gone
$ git checkout A -- file.txt
$ git add file.txt
$ git commit -m"Reintroduce file.txt, which was deleted for release"

我不喜欢手动修改合并提交,而是让git 做它们,然后再修复。它引起的意外更少。

【讨论】:

    【解决方案2】:

    我会继续将 master 合并到 A 中,然后将已撤消的提交挑选回 A 中。假设您添加的文件是在提交 abc123 中完成的;在 A 上,只需执行 git cherry-pick abc123。对所有已撤消更改的提交重复此操作,或者如果它们是连续的提交列表,您可以指定一个范围来挑选,例如git cherry-pick 123..xyz

    【讨论】:

      猜你喜欢
      • 2013-12-13
      • 2015-11-15
      • 2012-07-02
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多