📜  git remove commit before push - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:00:56.357000             🧑  作者: Mango

Git Remove Commit Before Push - Shell/Bash

在Git中,当我们在本地仓库做了一些变更并且提交了多次commit之后,我们需要将这些变更上传到远程仓库中。但是,有时候我们会发现之前提交的某个commit是有问题的或者是需要撤销的。

在这种情况下,我们可以使用Git命令来删除我们提交的指定commit或者一系列的旧的commit。

以下是在Shell/Bash中使用Git删除commit的方法。

1. 使用git log查看提交历史

在删除commit之前,我们应该使用git log查看所有的提交记录。

$ git log

这将列出所有的提交记录,包括commit的哈希值、提交者、提交时间,以及提交的消息。

2. 使用git rebase删除指定的commit

如果我们想要删除某个指定的commit,我们可以使用git rebase -i命令来打开互动式的rebase编辑器。

在编辑器中,我们可以选择删除任何以前的commits。删除指定commit的方法是在互动式编辑器中选择“edit”选项,并保存退出编辑器。

$ git rebase -i HEAD~n

这里的n是要回滚的commit数量。这将打开互动式rebase编辑器。在这里,我们可以选择哪些提交需要保留,哪些提交需要删除。为了删除某个commit,我们可以将其前面的pick改为drop

例如,如果我们要删除最新的提交,我们会使用以下命令:

$ git rebase -i HEAD~1

选择“edit”选项后,可以在编辑器中将pick改为drop

...
drop 123abc This is the commit we want to delete
pick abc456 Another commit we want to keep
...

保存并退出编辑器,然后使用git rebase --continue来完成剩余的rebase操作。

$ git rebase --continue
3. 使用git reset删除多个commit

如果我们想删除多个commit或回滚到某个指定的commit,我们可以使用git reset命令。

$ git reset HEAD~n

这里的n是要回滚的commit数量。

如果我们想删除最新的提交,我们可以使用以下命令:

$ git reset HEAD~1

这将使我们回滚到上一个提交。如果我们想回滚到更早的提交,可以使用更小的数字。

如果我们需要删除远程仓库中已经提交的commit,我们需要使用git push -f强制推送到远程仓库。

$ git push -f

这将覆盖远程仓库,如果不确定是否正确,应谨慎使用。

以上是在Shell/Bash中使用Git删除指定的commit或多个commit的方法。