0


Git 撤销一个已经push到远端仓库的commit

在 Git 中,撤销一个已经推送到远程仓库的改动有几种不同的方法,具体取决于你是否想要完全删除改动,还是只是恢复文件的某个状态。以下是常见的几种方法:

git revert 撤销特定的commit

git revert 是最安全的方法,因为它会生成一个新的 commit 来撤销之前的改动,而不会改变提交历史。
步骤:

1.找到你想要撤销的 commit 的哈希值:

git log

找到要撤销的提交的哈希值(如:abc123)。

2.使用 git revert:

git revert abc123

这会创建一个新的 commit,反向应用你指定的提交的更改。

3.推送新的提交:

git push origin branch_name

优点:不会修改历史记录,只会产生一个新的 commit 来撤销不需要的更改。
缺点:这种方法会导致本地修改也被删除,比如说你想push本地的某一个改动上去,结果不小心push了很多改动,这种操作会导致你的本地改动全部丢失。
在这里插入图片描述

使用 git reset 重置到某个状态

git reset 可以将分支重置到指定的提交点。如果你想要完全撤销推送的改动并修改历史,可以使用这个方法。但这种方式修改历史,可能会影响其他团队成员。

软重置:

如果你不想丢失工作区的更改(比如你想保留修改但不想提交),可以用软重置。

git reset --soft HEAD~1

这个命令会撤销最后一次提交的改动,但保留修改在工作区中。

硬重置:

如果你想要彻底移除提交,并丢弃工作区的更改,可以用硬重置。

git reset --hard HEAD~1

这个命令会重置到上一个 commit,并丢弃工作区中的所有改动。

强制推送:

使用 git reset 之后,你需要强制推送到远程仓库。

git push origin branch_name --force

注意:git reset --hard 会修改提交历史,且需要使用 --force 推送,会覆盖远程仓库的历史记录,其他开发人员的本地仓库可能会因此出问题。通常建议谨慎使用这种方式,特别是在共享的分支上。
使用这种方法需要谨慎,因为这个会修改分支上的提交内容,导致共享分支可能出现问题。

如果有多个提交需要撤销

如果要撤销多个提交(例如最后 3 个提交),可以使用:

git revert HEAD~3..HEAD

或者使用 reset:

git reset --hard HEAD~3
git push --force

总结:

如果想要保留历史记录,使用 git revert。
如果你想完全删除某次提交,并修改历史,使用 git reset 然后强制推送 (–force)。
选择方法时要小心,尤其是在共享分支上修改历史时。

标签: git

本文转载自: https://blog.csdn.net/qq_42429142/article/details/142521716
版权归原作者 四号少年 所有, 如有侵权,请联系我们删除。

“Git 撤销一个已经push到远端仓库的commit”的评论:

还没有评论