2026-03-05 23:31:05
git reset、git revert和git rebase的区别
一、git revert
git revert用于撤销某次操作,但此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交。
git revert HEAD:撤销前一次commit。
git revert HEAD^:撤销前前一次commit。
git revert <commit>(如:git revert fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff):撤销指定的版本,撤销也会作为一次提交进行保存。
二、git reset
git reset主要用于重置代码,使工作区回到过去的某个状态。
git reset --hard <commit ID>:直接把HEAD指针移动到commit ID上,无论修改是否被add、commit,都直接重置(此时暂存区被清空,工作区的修改被清空),所做的修改将全部丢失,这是非常危险的。
git reset --soft <commit ID>:把HEAD指针移动到commit ID上,暂存区和工作区不变,这是安全的。
git reset <commit>(或git reset --mixed <commit>):把HEAD指针移动到commit ID上,暂存区被清空,工作区的修改保留,这也是安全的。
三、git rebase
git rebase用于在合并分支时,保持一个更干净、线性的提交历史。
总结:
在实际使用中,应根据具体需求选择合适的命令来操作git仓库,以确保代码的正确性和项目的历史记录的完整性。