扔掉git中的本地提交
由于一些糟糕的樱桃采摘,我的本地git存储库目前提交5个提交源,并没有一个良好的状态。 我想摆脱所有这些提交,并重新开始。
显然,删除我的工作目录和重新克隆会做到这一点,但从github再次下载一切似乎是矫枉过正,并没有很好地利用我的时间。
也许git revert
是我所需要的,但是我不想在原点(甚至是6)之前提交10个提交,即使它确实让代码本身恢复到正确的状态。 我只是想假装从来没有发生的最后一个半小时。
有一个简单的命令会做到这一点? 这似乎是一个明显的用例,但我没有find任何的例子。
请注意,这个问题具体是关于提交 , 而不是关于:
- 未跟踪的文件
- 未分期的变化
- 上演但未经承诺的变化
如果你的超额提交只对你可见,你可以做git reset --hard origin/<branch_name>
来回到原始位置。
做一个git revert
使新的承诺,以保持每个人的历史健全的方式删除旧的承诺。
只需删除您的本地主分支,并重新创build它就像这样:
git branch -D master git checkout origin/master -b master
尝试:
git reset --hard <the sha1 hash>
重新设置你的头到你想成为的任何地方。 使用gitk来查看你想要的提交。 您也可以在gitk中重置。
如果您正在使用Atlassian SourceTree应用程序,则可以使用上下文菜单中的重置选项。
在你的分支尝试:
git reset --hard origin/<branch_name>
因此,使用“ git log
”或“ git status
”validation反转(到没有本地提交的git status
)。
要查看/获取您想要返回的提交的sha1 ID
gitk --all
回滚到提交
git reset --hard sha1_id
!注意。 所有提交后提交的提交将被删除(以及所有对项目的修改)。 因此,首先将项目克隆到另一个分支或复制到另一个分支。
对于没有被推送的本地提交,你也可以使用git rebase -i
删除或压缩提交。
我有一种情况,我想删除提交没有推,但提交是在另一个之前。 为此,我使用了以下命令
git rebase -i HEAD~2
– >它会在最后2次提交
我用'drop'来提交我想删除的签名。