将已删除的文件从分支合并回主控

Merge back deleted file from a branch to master

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

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

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

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

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 来修改,然后再修复。它不会引起意外。

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