首先,要清楚,我没有找到正确答案来解决我的问题!!
描述 我(非常偶然地)将一个分支推入主服务器并且丢失了一些文件:-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;
}
}
投诉。
那么,如何在两者之间完成合并提交的恢复?
由于
答案 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