我提交了使用' git push -f origin master'它删除了我以前的所有提交。有什么方法可以恢复它们或者至少显示我之前的所有提交内容吗?
答案 0 :(得分:1)
你可以试试这个:
$ git reflog # show working tree, copy the last commit-hash that have all codes
$ git checkout <commit-hash> # checkout to that commit, now you've all codes
$ git checkout -b new-master # create a new branch named new-master & checkout.
$ git branch -D master # delete your local master branch
$ git checkout -b master # create master from current commit and checkout to master
$ git push -f origin master # push all the codes to remote
答案 1 :(得分:0)
使用git reflog查看缺少的提交。
然后,找到你想要的提交并使用git reset来重置它们。
重置已删除的提交后,使用git push origin master将更改推送到原点
答案 2 :(得分:0)
您可以使用本地git reflog或远程存储库中的reflog,找到要恢复的提交;
import java.awt.*;
public class myFrame extends Frame {
myFrame(){
TextField tf=new TextField(10);
setVisible(true);
setSize(400,400);
setTitle("myFrame");
setBackground(Color.red);
add(tf);
}
public static void main(String[] args){
myFrame f=new myFrame();
}
}
reflog显示反向时间顺序的HEAD所有更改的列表。第一列中的has是执行右侧操作后HEAD的值。因此,您可以通过检查其哈希值
来查找提交哈希并检出要返回您的仓库的提交git reflog //at local level
git reflog show remotes/origin/master // at remote level:
从提交
创建临时分支git checkout <commit-hash>
将其推回远程存储库。
git checkout -b new-master
但是,这将修复您的远程主服务器,但请注意您的本地主服务器仍然是您引入破坏性更改的主服务器,因此如果您不需要更改,可以使用以下命令将其删除。
git push -f origin master
或者你可能需要做一些像樱桃一样挑选丢失的所有提交。
PS:您还可以找到更适合恢复丢失提交的 git fsck