Die Situation ist wie folgt:
Ich habe heute eine frühere Einreichung gefunden und gerade festgestellt, dass einige Dateien gelöscht wurden.
Jetzt wollen wir das angegebene Versions-Commit zurückgeben:20a3725c
git reset --hard 20a3725c
Dann scheiterte der erneute Versuch git push
, Eingabeaufforderung:
To git@xxx/xxx.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@xxx/xxx.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Jetzt müssen wir die Version 20a3725c
wiederherstellen. Wie lässt sich das Problem lösen?
Eine weitere Frage ist: Können die ursprünglich gelöschten Dateien in der aktuellen Version wiederhergestellt werden? (Weil die aktuelle Version einige Dateien hinzugefügt oder gelöscht hat (in anderen Ordnern, nicht im selben Ordner wie die gelöschten Dateien))
还没有想到办法解决。
(先备份当前有修改过的文件)
最好,先返回指定版本
git reset old_commit_id
然后,新建分支
git branch -b rcommit_id
再,删除线上的
master
分支(将默认分支切换到其它分支)git push origin :master
然后,将之前备份的文件覆盖当前分支内的文件。
最后,将分支名改为
master
,再提交即可,再设置为默认分支。必须要修改下才可以推送。。。
如果你只是要恢复某个版本,可以使用git revert来把那个提交取消掉
git revert '20a3725c
git push