如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?


当前回答

正如您在上图中看到的,我想删除revert“test change 2”提交(SHA1 ID:015b5220c50e3dfbb1063f23789d92ae1d3481a2(您可以使用gitbash中的gitk命令获取SHA1 ID))。

为此,我可以使用(以下所有命令仅适用于本地。删除后需要推送):

git reset--hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2//将您备份到该提交(测试更改4提交的SHA1 ID为515b5220C50e3dfbb 1063f23799d92ae 1d3481A2)gitreset-hardHEAD~1//它在一次提交之前备份您。git reset--hard HEAD ^//从git中删除最后一次提交

删除后:

其他回答

这里我只发布了一条清晰的管道

步骤1:使用gitlog获取提交ID。

git log

步骤2:使用git reset返回到以前的版本:

git reset --hard <your commit id>

如果您刚刚弄糟了上一次提交(错误的消息,忘记添加一些更改),并想在将其推送到公共回购之前修复它,为什么不使用:

git commit --amend -m "New message here"

如果您有新暂存的更改,它们将与上一次提交(您正在尝试删除)合并,并将替换该提交。

当然,如果你在推送之后修改了一个承诺,你就是在改写历史,所以如果你这样做,一定要理解其中的含义。

如果您希望使用上一次提交的消息,也可以传递“--no edit”选项而不是“-m”。

文件:http://git-scm.com/docs/git-commit.html

// display git commit log    
$ git log --pretty=oneline --abbrev-commit

// show last two commit and open in your default editor
// then delete second commit line and save it
$ git rebase -i HEAD~2

参考:如何在git、本地和远程中删除提交

在我的情况下,我对这只小狗的魔法代码是这样的:

git reset --hard @{u}

测试一下,告诉我。我试过几种不同的方法,但只有这一种对我有帮助。

这里有30多个回答者,我将简单介绍适合我的答案

删除.git文件夹可能会导致git存储库出现问题。如果您希望删除所有提交历史记录,但将代码保持在当前状态,则可以按照以下方式进行操作:

结账

git checkout --orphan latest_branch

添加所有文件

git add -A

提交更改

git commit -m "commit message"

删除分支

git branch -D master

将当前分支重命名为主分支

git branch -m master

最后,强制更新存储库

git push -f origin master

PS:这不会保留您以前的提交历史。