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


当前回答

资料来源:https://gist.github.com/sagarjethi/c07723b2f4fa74ad8bdf229166cf79d8

删除上次提交

例如,您最后一次提交

git推送原点+aa61ab32^:主

现在您要删除此提交,然后使用以下简单方法

步骤

首先将分支重置为当前提交的父级用力将其推至遥控器。

git reset HEAD^--硬git推送原点-f

对于特定的提交,您希望重置如下

git reset bb676878^ --hard

git push origin -f

其他回答

git rebase -i HEAD~2

这里“2”是您要重新设置基准的提交次数。

'git rebase -i HEAD`

如果您想重新设置所有提交的基础。

然后,您可以选择其中一个选项。

p、 pick=使用提交

r, reword = use commit, but edit the commit message
e, edit = use commit, but stop for amending
s, squash = use commit, but meld into previous commit
f, fixup = like "squash", but discard this commit's log message
x, exec = run command (the rest of the line) using shell
d, drop = remove commit

这些线路可以重新订购;它们是从上到下执行的。如果您删除此处的一行,则承诺将丢失。但是,如果您删除了所有内容,则重新启动将被中止。注意,空提交被注释掉

您只需使用选项“d”或删除包含您提交的行即可删除该提交。

当我提交并推送时,我通常会做什么(如果有人推送他的提交,这可以解决问题):

git reset --hard HEAD~1

git push -f origin

希望这有帮助

这是另一种方法:

签出要还原的分支,然后将本地工作副本重置为远程服务器上最新的提交(之后的所有内容都将再见)。为此,在SourceTree中,我右键单击并选择“Reset BRANCHNAME To this commit”。我认为命令行是:

git reset --hard COMMIT_ID

因为您刚刚从远程签出了分支,所以您不会担心丢失任何本地更改。但如果你这样做,这将失去他们。

然后导航到存储库的本地目录并运行以下命令:

git -c diff.mnemonicprefix=false -c core.quotepath=false \
push -v -f --tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME

这将删除本地存储库中当前提交之后的所有提交,但仅限于该分支。

使用git还原https://git-scm.com/docs/git-revert。它将还原所有代码,然后您可以进行下一次提交。然后head将指向上一次提交的代码。还原的提交不会删除,但不会影响您上次提交。

git重置--硬

git推原点HEAD—力

如果一个或多个提交被标记,请首先删除标记。否则,标记的提交不会被删除。