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


当前回答

这是另一种方法:

签出要还原的分支,然后将本地工作副本重置为远程服务器上最新的提交(之后的所有内容都将再见)。为此,在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

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

其他回答

如果您已经推送,请首先在HEAD($GIT_commit_HASH_HERE)找到您想要的提交,然后运行以下命令:

git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force

然后,在复制了回购的每个位置,运行:

git reset --hard origin/master

git重置--硬HEAD~1你现在将处于前一个位置。拉动树枝。推送新代码。提交将从git中删除

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

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

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

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

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

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

#[快速回答]

您有许多选择,例如:

备选方案1:git rebase-i<YourCommitId>~1将YourCommitId更改为要还原回的提交次数。备选方案2:git reset--硬YourCommitIdgit push<origin><branch>--force将YourCommitId更改为要还原回的提交次数。我不建议使用此选项,因为您可能会丢失正在进行的工作。备选方案3:git reset—软HEAD~1你可以保留你的工作,只撤销承诺。

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

git reset --hard HEAD~1

git push -f origin

希望这有帮助