git还原master中已删除的文件,保持功能工作文件不变

时间:2012-06-11 00:01:41

标签: git revert git-flow

在本地“myfeature”分支中工作时,我删除了一些文件并在本地提交。一路上,这些提交然后与远程origin / master合并。我需要恢复那些已删除的文件,所以我为最新的主人做了git pull并剪切了一个'hotfix'分支,其中我:

git revert <commit id>

以这些错误提交的逆时间顺序排列并将这些已删除的文件恢复。我基于git-flow分支模型,所以纠正我,如果我错了,我现在应该将'hotfix'合并到master,以及任何'release'分支,开发和任何其他'feature'分支?

我是否需要对目前仍处于进行中的'myfeature'分支做任何事情,我希望将这些文件删除?合并“myfeature”后,这些文件会被删除吗?或者合并后这些文件会复活吗?

我没有使用git-flow,只是模型。

2 个答案:

答案 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就不会为你创建一个恢复提交,你可以先操作更改,然后自己提交。此外,这允许您一次进行多次恢复。理想情况下,当有多个提交一起引入了您不再需要的更改时,您可以在一次提交中将它们全部恢复以修复它。