将已删除的文件从分支合并回主控
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
。
我在 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
。