1

在本地“myfeature”分支中工作时,我删除了一些文件并在本地提交了它们。在此过程中,这些提交随后与远程源/主服务器合并。我需要找回那些已删除的文件,所以我git pull在 master 上做了一个最新的操作,并在其中剪切了一个“修补程序”分支:

git revert <commit id>

按这些错误提交的时间倒序排列,并取回那些已删除的文件。我基于 git-flow 分支模型,所以如果我错了请纠正我,我现在应该将“修补程序”以及任何“发布”分支、开发和任何其他“功能”分支合并到 master 中?

我是否需要对我目前仍在进行中的“myfeature”分支做任何事情,我想保留这些文件被删除?一旦我合并“myfeature”,这些文件会一直被删除,还是在我合并时这些文件会复活?

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

4

2 回答 2

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

这样,您就可以保证其他修改的安全。

关于流程:我不太了解您正在使用哪个流程,但是如果您创建一个提交,其操作是重新创建您已删除的文件,那么是的,在其他分支中合并此提交将应用相同的操作。

于 2012-06-11T07:39:59.643 回答
0

如果您恢复提交,那么是的,该提交的所有更改都将被恢复,但除此之外没有别的。因此,如果您的错误更改被隔离在提交中,您可以简单地还原这些更改,同时保留好的提交。

但是,如果您有混合了好的和坏的行为的提交,那么当您像这样恢复它们时,您也会失去这些好的行为,所以我建议您不要这样做。

相反,您应该进行部分还原。-n通常,在使用标志进行还原时,您可以更好地控制还原。这样,Git 不会为您创建还原提交,您可以先操作更改,然后自己提交。此外,这允许您一次进行多个还原。因此,理想情况下,当有多个提交一起引入了您不再需要的更改时,您可以在一个提交中将它们全部还原以修复它。

于 2012-06-11T07:31:59.663 回答