赞
踩
如果你已经将提交推送到了远程仓库,并且想要撤销这次提交,你可以使用 git revert
命令。
如果你只是要撤销最近的一次提交,可以使用 HEAD 指针来引用它:
git revert HEAD
**请注意,使用 git revert
并不会从项目历史中删除任何提交,这个命令会创建一个新的提交,这个新提交会“反做”之前的提交,从而撤销那些更改。这样做的好处是不会改变项目的历史记录,因此是协作项目中推荐的做法。
如果你需要彻底从历史记录中删除提交,那么需要考虑使用 git reset
并之后使用 --force
选项与远程仓库同步,但这种做法风险较高,因为它会改变项目的历史记录。**
撤销最后一次提交,但是保留更改在暂存区。提交信息和更改都会撤销,但是更改的内容还在暂存区,可以重新提交。
git reset --soft HEAD~1
撤销最后一次提交,但是保留更改在工作目录。提交信息会被撤销,更改的内容会保留在工作目录中,需要重新暂存和提交。
git reset --mixed HEAD~1
这是默认的 git reset
行为。它会重置 HEAD 和暂存区到指定的提交,但不改变工作目录。
相当于 git reset HEAD~1
撤销最后一次提交,并且丢弃所有更改。提交信息和更改都会被永久丢弃,工作目录、暂存区和HEAD都会回退到上一个提交的状态。
git reset --hard HEAD~1
--hard
,你将失去最后一次提交的所有更改,这是不可逆的。如果你使用 --soft 或 --mixed,你将保留更改,可以重新提交。如果你的更改已经推送到了远程仓库,并且其他人可能已经基于这些更改进行了操作,使用 --hard
重置可能会导致问题。
如果你使用 --soft
重置,并且想要撤销更改,你可以使用 git clean
来清除未提交的更改:
git clean -fd
这个命令会删除未跟踪的文件和目录,-f
表示强制,-d
表示删除目录。
git reset 用于移动 HEAD 指针,git reset之后云端仍有上次提交的记录,所以撤销之后的重新提交需要在git push之后加上 -f
用于强制覆盖上次不用的提交。直接git push会出现问题
git push --force
如果你已经将提交推送到了远程仓库,并且想要撤销这次提交,你可以使用 git revert
命令。这个命令会创建一个新的提交,这个新提交会“反做”之前的提交,从而撤销那些更改。这样做的好处是不会改变项目的历史记录,因此是协作项目中推荐的做法。
以下是使用 git revert
命令的步骤:
找到要撤销的提交的哈希值:
使用 git log
查看提交历史,并找到你想要撤销的提交的哈希值。
执行 revert 操作:
使用 git revert
命令加上提交的哈希值来撤销这次提交:
git revert [提交哈希值]
如果你只是要撤销最近的一次提交,可以使用 HEAD 指针来引用它:
git revert HEAD
解决可能出现的冲突(如果有的话):
如果撤销过程中出现冲突,Git 会停止并让你手动解决这些冲突。解决完冲突后,你需要添加这些更改到暂存区并完成 revert 操作:
git add [解决冲突的文件]
git revert --continue
推送 revert 操作到远程仓库:
完成 revert 操作并测试没有问题后,将这次 revert 提交推送到远程仓库:
git push origin [分支名]
请注意,使用 git revert
并不会从项目历史中删除任何提交,它只是添加一个新的提交来“反做”之前的更改。如果你需要彻底从历史记录中删除提交,那么需要考虑使用 git reset
并使用 --force
选项与远程仓库同步,但这种做法风险较高,因为它会改变项目的历史记录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。