由于某些错误的选择,我的本地 Git 存储库当前比源服务器提前了 5 次提交,并且状态不佳。我想摆脱所有这些提交,然后重新开始。
显然,删除我的工作目录并重新克隆就可以做到,但是再次从 GitHub 下载所有内容似乎有点过头了,并且不能很好地利用我的时间。
也许git revert
是我所需要的,但是我不想在源头(甚至六个)之前完成10 次提交,即使它确实使代码本身回到了正确的状态。我只想假装最后一个半小时未曾发生。
有一个简单的命令可以做到这一点吗?这似乎是一个显而易见的用例,但我找不到任何示例。
请注意,这个问题专门针对commits , 而不是 :
如果多余的提交仅对您可见,则只需执行git reset --hard origin/<branch_name>
即可返回原点。这会将存储库的状态重置为上一次提交,并将丢弃所有本地更改。
进行git revert
会使新提交删除旧提交,从而保持每个人的历史记录正常。
只需删除您的本地 master 分支并按如下方式重新创建它即可:
git branch -D master
git checkout origin/master -b master
尝试:
git reset --hard <the sha1 hash>
将您的头部重置到您想要的任何位置。使用 gitk 查看您要执行的提交。您也可以在 gitk 中进行重置。
删除最近的提交:
git reset --hard HEAD~1
删除最近的提交,而不会破坏您所做的工作:
git reset --soft HEAD~1
如果您使用的是Atlassian SourceTree应用程序,则可以使用上下文菜单中的 reset 选项。
在您的分支尝试:
git reset --hard origin/<branch_name>
因此,使用 “ git log
” 或 “ git status
” 来验证反转(到没有本地提交的git status
)。
git reset --hard @{u}
* 删除当前分支上的所有本地更改,包括提交。令我惊讶的是,没有人发布此消息,因为考虑到您不必查找要还原到分支或与分支一起玩的提交。
* 也就是说,重置为@{upstream}
的当前分支 - 通常为origin/<branchname>
,但不总是如此
要查看 / 获取您也想返回的提交的 SHA-1 ID
gitk --all
回滚到该提交
git reset --hard sha1_id
!注意。在提交之后进行的所有提交都将被删除(以及您对项目的所有修改)。因此,首先最好将项目克隆到另一个分支或复制到另一个目录。
我遇到了一种情况,我想删除未推送的提交,但是该提交在另一个提交之前。为此,我使用了以下命令
git rebase -i HEAD~2
> 它将对最近的两次提交进行重新设置
我使用 “drop” 作为要删除的提交签名。
对于未推送的本地提交,您还可以使用git rebase -i
删除或压缩提交。