git - 恢复提交范围(已推送),其间包含合并提交

时间:2017-12-14 10:49:33

标签: git version-control undo

首先,要清楚,我没有找到正确答案来解决我的问题!!

描述 我(非常偶然地)将一个分支推入主服务器并且丢失了一些文件:-S(它们不在推送的分支中)。我想通过回滚到第n次提交来检索它们。

How to revert Git repository to a previous commit?中,据说使用还原,我同意。但是当我执行revert时,丢失的文件仍然丢失,如果根据git checkout <nth-previous_right_commit>定义它撤消更改,在这种情况下似乎不会发生。

如果我git commit,我会将丢失的文件返回,但我无法进行有效的提交(我的意思是,git revert -m 1 <nth-previous-commit>..HEAD没有提交任何内容:-S )。

编辑: 以前我没有注意到我想要检索的快照是第4次到第5次提交,但是之间存在合并提交,所以做了关于没有合并提交的public void insert(E x) { if(q.size()==0){ q.add(0, x); } else{ int place = binarySearch(x); q.add(place, x); } } private int binarySearch (E x) { int size = q.size(); int low = 0; int high = size - 1; int middle = 0; while(high > low) { middle = (low + high) / 2; if(q.get(middle).getPriority() == x.getPriority()) { return middle; } if(q.get(middle).getPriority() < x.getPriority()) { low = middle + 1; } if(q.get(middle).getPriority() > x.getPriority()) { high = middle - 1; } } 投诉。

那么,如何在两者之间完成合并提交的恢复?

由于

1 个答案:

答案 0 :(得分:2)

使远程存储库的master成为:

git push origin -f <nth-previous_right_commit>:master

如果远程存储库具有设置访问控制权,则可能需要强制推送权。

在当地,

git checkout master
git reset <nth-previous_right_commit> --hard

你可以做到这两点,

git checkout master
git reset <nth-previous_right_commit> --hard
git push origin -f master:master
相关问题