删除尚未推送的git提交

时间:2009-10-23 03:19:02

标签: git

我做了git commit,但我还没有把它推到存储库。 所以当我做git status时,我得到'#你的分支超过'master'提前1次。

因此,如果我想回滚我的顶级提交,我可以这样做:

git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316

鉴于当我git log时,我得到了:

commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
Date:   Tue Sep 29 11:21:41 2009 -0700


commit db0c078d5286b837532ff5e276dcf91885df2296
Date:   Tue Sep 22 10:31:37 2009 -0700

11 个答案:

答案 0 :(得分:513)

实际上,当您使用git reset时,您应该参考您要将重置为的提交;所以你可能想要db0c078提交。

更简单的版本是git reset --hard HEAD^,重置为当前头之前的前一次提交;这样你就不必复制提交ID了。

当您执行任何git reset --hard时要小心,因为您可能会丢失任何未提交的更改。您可能需要检查git status以确保您的工作副本是干净的,或者您确实想要删除那里的任何更改。

此外,您可以使用origin/master作为参考,而不是HEAD,如@bdonlan在评论中所建议的那样:git reset --hard origin/master

答案 1 :(得分:486)

如果您没有将更改推送到远程

git reset HEAD~1

git status检查工作副本是否干净。

您已将更改推送到远程

git revert HEAD

此命令将恢复/删除最后一次提交/更改,然后您可以按

答案 2 :(得分:137)

git reset --hard origin/master

将其重置为原点所在的位置。

这是由@bdonlan在comments发布的。我为那些没有阅读评论的人添加了这个答案。

答案 3 :(得分:26)

只需在控制台中输入:

$ git reset HEAD~

此命令丢弃所有在远程HEAD之前的本地提交

答案 4 :(得分:24)

此问题有两个分支(回滚提交并不意味着我要丢失所有本地更改):

1。。要还原最新的提交并放弃已提交文件中的更改,请执行以下操作:

git reset --hard HEAD~1

2。。要还原最新的提交,但保留本地更改(在磁盘上),请执行以下操作:

git reset --soft HEAD~1

此命令(后面的命令)将带您进入执行git add时的状态。

如果要在此之后取消暂存文件,请执行

git reset

现在,您可以在添加然后再次提交之前进行更多更改。

答案 5 :(得分:21)

删除推送前的最后一次提交

Exception triggered at 0x00007FF95C9398E9 (ucrtbased.dll) in Test.exe: 0xC0000005: Access violation when writing at position 0x0000019155DF1000.

<FlatList data={allergins} keyExtractor={(allergin, index) => index} renderItem={({allergin}) => ( this.renderAllergins(allergin) )} /> 表示最后一次提交,如果要删除两个最后使用的git reset --soft HEAD~1,依此类推*

答案 6 :(得分:14)

我遇到了与下面相同的情况,因为这样容易得多。 通过commit-Id,您可以访问您想要的特定提交:

git reset --hard {commit-id}

由于您要删除上次提交,因此需要将commit-Id传递到需要移动指针的位置:

git reset --hard db0c078d5286b837532ff5e276dcf91885df2296

答案 7 :(得分:14)

我相信其中之一会满足您的需求

1-撤消提交并保留所有文件为暂存状态: git reset --soft HEAD~;

2-撤消提交和取消登台所有文件: git reset HEAD~;

3-撤消提交并完全删除所有更改: git reset --hard HEAD~;

here is were I found the answer

答案 8 :(得分:8)

这就是我的所作所为:

首先检查您的分支(对于我的案例master分支):

git checkout master

然后重置为远程HEAD ^(它将删除所有本地更改),强制清理并拉动:

git reset HEAD^ --hard && git clean -df && git pull

答案 9 :(得分:0)

一种方法是删除本地分支并从服务器检出该分支,如果您的本地分支通过多次提交超出远程,并且您需要取消提交所有这些分支。

答案 10 :(得分:0)

我只是遇到了同样的问题而最终做了:

git rebase -i HEAD~N

(N是git将显示给您的提交次数)

这将提示您的文本编辑器,然后您可以通过删除与之关联的行来删除所需的提交。