当HEAD处于先前提交时,Git删除上次提交

时间:2016-08-17 18:51:47

标签: git github commit

在本地,测试和开发存储库不同步导致的一些冗长的事件序列中,我最终做了一些现在需要删除的提交。

特别是最新的提交,称之为A是需要删除的提交。在它之前的提交,称之为B是HEAD所在的那个。

当我运行git status时,我得到了

  

目前不在任何分支上。没有提交(工作目录清理)

如何摆脱提交A?另外,将自动删除它让Git意识到它在主分支上?

3 个答案:

答案 0 :(得分:1)

如果要在命令

下删除任何提交执行

第1步:git revert commit_id

步骤:2 git push origin branch_name

答案 1 :(得分:1)

第1步:您需要列出您拥有的所有git分支

git branch

第2步:您需要从列表中签出特定分支,并确保只有在您要删除特定提交的位置才能结帐到该分支

git checkout branch_name

第3步:现在您需要列出该分支的所有提交

git log

setp 4:现在您需要从列表中选择要删除的提交ID

步骤5:现在您需要执行命令来删除特定提交。 以下branch_name与您目前的相同

git revert commit_id

git push origin branch_name

步骤6:现在,如果执行git log,则会发现有新的提交,并且在此提交代码中是您要执行的删除操作。 现在,如果您转到代码库,则会删除不需要的代码

我希望它会帮助你。

感谢。

答案 2 :(得分:1)

简易方法:

git branch -f master

正确的方法:

git checkout master
git reset --hard HEAD~1

请参阅How to revert Git repository to a previous commit?

另外:如果head在上一次提交中,那么您的主分支不会被检出。你的头是分开的。

说明:

D <- master
C <- head
B
A

如果你已经签出了C,你只需将master强制转为C.

如果您已签出D,则只需将master恢复为C.