Lav*_*chi 88 git commit repository reset git-bare
考虑到有几个git命令在裸存储库中没有意义(因为裸存储库不使用索引而没有工作目录),
git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)
不是解除对此类存储库中的最后一次更改的解除.
搜索通过互联网,所有我能找到相关的话题就是这个,在我提出这样做的方式有三种:
1."手动更新裁判(其中涉及水暖)";
2." git push -f
来自非裸库";
3." git branch -f this $that
".
您认为哪种解决方案更合适,或者有哪些方法可以做到这一点?不幸的是,我发现的关于git bare存储库的文档相当差.
Syl*_*sne 126
您可以使用该git update-ref
命令.要删除最后一次提交,您将使用:
$ git update-ref HEAD HEAD^
Run Code Online (Sandbox Code Playgroud)
或者,如果您不在您无法删除最后一次提交的分支中:
$ git update-ref refs/heads/branch-name branch-name^
Run Code Online (Sandbox Code Playgroud)
如果你想要你也可以传递一个sha1:
$ git update-ref refs/heads/branch-name a12d48e2
Run Code Online (Sandbox Code Playgroud)
请参阅git-update-ref命令的文档.
Haz*_*zok 30
如果您在裸仓库中使用以下内容:
git reset --soft <commit>
Run Code Online (Sandbox Code Playgroud)
然后你不会遇到你使用的问题--hard
和--mixed
裸仓库中的选项,因为你没有尝试改变裸仓库没有的东西(即工作树和索引).在你的情况下,你会想要使用(从裸仓库):
git reset --soft HEAD^
Run Code Online (Sandbox Code Playgroud)
要在远程仓库上切换分支,请执行以下操作:
git symbolic-ref HEAD refs/heads/<branch_name>
Run Code Online (Sandbox Code Playgroud)
本git push -f
应工作的优良:
假如克隆了裸回购,除去最后提交的(git reset --hard HEAD^
你提到,但在当地的一个非裸露的回购协议),并推回(-f
):