我该如何从我的分支历史记录中删除一个提交?我应该使用 git reset --hard HEAD
吗?
我该如何从我的分支历史记录中删除一个提交?我应该使用 git reset --hard HEAD
吗?
如上图所示,我想删除还原“测试更改2”的提交记录(SHA1 ID:015b5220c50e3dfbb1063f23789d92ae1d3481a2(你可以使用git bash中的gitk
命令获取SHA1 ID))。
为此,我可以使用以下命令(以下所有命令仅在本地工作。删除后需要推送):
git reset --hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2
//它将备份到该提交记录(测试更改4的SHA1 ID为515b5220c50e3dfbb1063f23789d92ae1d3481a2)git reset --hard HEAD~1
//它将备份到前一个提交记录。git reset --hard HEAD^
//从git中删除最后一次提交删除后:
允许您删除提交,而不会删除您当前的文件:
git reset --soft Id commit
然后使用强制推送本地更改:
git push -f origin nameBranch
git reset --hard
撤销所有的修改,并将HEAD指向最新的提交。git push origin HEAD --force
强制推送当前分支的所有修改到远程仓库。如果有一个或多个提交被打了标签,请先删除标签。否则,已打标签的提交不会被删除。
$ git rebase -i HEAD~98
# Delete everything except for the most recent commit on the shown editor caused by "rebase"
$ git push origin -f production-static
注意: 在强制推送以减少我的注释后,我又推送了另一组文件,然后在另一台电脑上使用相同的“存储库和分支”进行了拉取。令人惊讶的是,没有冲突。这成为我减少存储库大小并避免其他本地使用相同git时出现拉取冲突的方法。
git reset --hard @{u}
测试一下并告诉我。我尝试了几个不同的,但这是唯一一个帮助我的。
使用 git revert https://git-scm.com/docs/git-revert 命令。它将撤销所有代码,然后您可以进行下一次提交。然后 head 将指向该最后一次提交。被撤销的提交不会被删除,但不会影响您的最后一次提交。
假设您尚未推送到远程存储库,则可以重新克隆存储库。这是我几次选择的方法。
cherry-pick
和delete
一次性提交,即使这个提交发生在很久以前。 - Chrisgit reset --soft HEAD~1
正是你所需要的。 在这种情况下,你将撤销提交并保存你的工作。reset --hard
将完全删除提交。 - sergpankgit commit -a
,认为它是git commit --amend
的缩写(实际上不是),并且在一个新的空提交消息中。我可以使用空消息取消编辑器(在vim中使用:wq
),git不会创建提交,而是返回“由于空提交消息而中止提交。” - questionto42