Git:从旧提交中恢复所有已更改的文件

时间:2015-03-25 23:59:49

标签: git

我在这里看到了许多用于恢复单个文件的答案,但是我遇到的情况是,同事设法吹走了与特定提交相关的所有更改。

有没有办法检查特定提交中已更改的所有文件,并将它们推送到当前主服务器?

我试过了:

git checkout 3ed2aa8        //go to the commit with the change
git checkout -b getOldFiles //make it a legit branch
git rebase master           //get branch up to date
git checkout master         //go to local master
git merge getOldFiles       //in theory, get the changed files back

我不是百分百肯定,但我认为它没有取得任何成果。

1 个答案:

答案 0 :(得分:1)

这不会做任何事情,因为3ed2aa8是较旧的提交并且合并优先级较新的更改。您可以执行rebase -i [在3ed2aa8之前提交],然后将3ed2aa8重新排序到前面。在分支中执行此操作以确保它能够执行您想要的操作。

git checkout -b fix
git rebase -i 3ed2aa8~ [Reorder list in text editor]
git checkout master
git merge fix 

否则,为什么不在同事的修改中使用git revert来消除提交?

git revert --no-commit [bad_rev1]
git revert --no-commit [bad_rev2]
git revert --no-commit [bad_rev...]
git commit

请参阅 Revert multiple git commits