在本地“myfeature”分支中工作时,我删除了一些文件并在本地提交。一路上,这些提交然后与远程origin / master合并。我需要恢复那些已删除的文件,所以我为最新的主人做了git pull
并剪切了一个'hotfix'分支,其中我:
git revert <commit id>
以这些错误提交的逆时间顺序排列并将这些已删除的文件恢复。我基于git-flow分支模型,所以纠正我,如果我错了,我现在应该将'hotfix'合并到master,以及任何'release'分支,开发和任何其他'feature'分支?
我是否需要对目前仍处于进行中的'myfeature'分支做任何事情,我希望将这些文件删除?合并“myfeature”后,这些文件会被删除吗?或者合并后这些文件会复活吗?
我没有使用git-flow,只是模型。
答案 0 :(得分:1)
关于取回已删除的文件:
如果您的历史记录如下:
* aa1234 last commit
* bb2345 commit
* cc3456 commit
* dd4567 deleted fileC dirD/fileD & made other changes
* ee5678 deleted filA dirB/fileB & made other changes
* ff6789 commit
并且您想要删除文件A,B,C,D,就像删除它们一样,您可以使用git checkout <hash> -- <path/to/file>
逐个检查它们:
git checkout ee5678 -- fileA
git checkout ee5678 -- dirB/fileB
git checkout dd4567 -- fileC dirD/fileD
这样,您可以安全地进行其他修改。
关于流程:我没有完全了解您正在使用哪个流程,但是如果您创建一个提交,其操作是重新创建已删除的文件,那么是的,在其他分支中合并此提交将应用相同的操作
答案 1 :(得分:0)
如果您还原提交然后是,那么该提交的所有更改都将被还原,但除此之外别无其他。因此,如果错误的更改在提交中被隔离,您可以简单地还原那些更改,同时保留良好的提交。
如果你有好的和坏的行为混合的承诺,那么当你还原它们时你也会失去那些好的行为,所以我建议你不要这样做。
相反,你应该做部分还原。通常,在使用-n
标志执行恢复时,您可以更好地控制恢复。这样Git就不会为你创建一个恢复提交,你可以先操作更改,然后自己提交。此外,这允许您一次进行多次恢复。理想情况下,当有多个提交一起引入了您不再需要的更改时,您可以在一次提交中将它们全部恢复以修复它。