我在这里看到了许多用于恢复单个文件的答案,但是我遇到的情况是,同事设法吹走了与特定提交相关的所有更改。
有没有办法检查特定提交中已更改的所有文件,并将它们推送到当前主服务器?
我试过了:
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
我不是百分百肯定,但我认为它没有取得任何成果。
答案 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