由于一些糟糕的挑选,我的本地git存储库目前在原点之前提交了5个提交,并且状态不佳 . 我想摆脱所有这些提交并重新开始 .
显然,删除我的工作目录和重新克隆会做到这一点,但再次从github下载所有内容似乎有点矫枉过正,并没有很好地利用我的时间 .
也许 git revert
是我需要的,但我不希望在原点(甚至6)之前提交10次提交,即使它确实使代码本身恢复到正确的状态 . 我只想假装最后半小时从未发生过 .
是否有一个简单的命令可以做到这一点?这似乎是一个明显的用例,但我没有找到任何例子 .
请注意,这个问题具体是关于提交,而不是关于:
-
未跟踪文件
-
非分期更改
-
暂存但未提交的更改
10 回答
如果您的超额提交仅对您可见,您可以执行
git reset --hard origin/<branch_name>
以返回原点所在的位置 .做一个
git revert
进行新的提交以删除旧的提交,以保持每个人的历史正确 .只需删除您的本地主分支并重新创建它,如下所示:
尝试:
将头重置到你想要的任何地方 . 使用gitk查看您想要的提交 . 你也可以在gitk中重置 .
如果您使用的是 Atlassian SourceTree app,则可以使用上下文菜单中的reset选项 .
删除最近的提交:
git reset --hard HEAD~1
删除最近的提交,而不会破坏您已完成的工作:
git reset --soft HEAD~1
在您的分支尝试:
使用“
git log
" or "git status
”验证反转(到状态,没有本地提交) .要查看/获取您想要返回的提交的sha1 id
回滚到该提交
!注意 . 在该提交之后进行的所有提交都将被删除(以及对项目的所有修改) . 因此,首先要将项目克隆到另一个分支或复制到另一个目录 .
git reset --hard @{u}
*删除当前分支上的所有本地更改,包括提交 . 我必须查找提交恢复或使用分支的内容 .*也就是说,重置为@ - common-origin / <branchname>的当前分支,但并非总是如此
对于未被推送的本地提交,您还可以使用
git rebase -i
删除或压缩提交 .我有一种情况,我想删除未被推送的提交,但提交是在另一个提交之前 . 为此,我使用了以下命令
git rebase -i HEAD~2
- >它将改变最后2次提交我使用'drop'作为我想删除的提交签名 .