git 中 rebase、reset、revert 有什么区别?

文章类型:git

发布者:hp

发布时间:2024-11-22

一:概述

ebase、reset、和 revert 是 Git 中用于修改提交历史的三个不同的命令,它们的作用和效果有所不同,那么,区别在哪里呢

二:方式

1:rebase,用于将一个分支的提交移到另一个分支上,并重新应用这些提交

整理提交历史:将多个小的提交合并成一个更为清晰的提交历史,避免历史混乱。

将本地提交与远程同步:在拉取远程更改之前,通过 rebase 将本地提交移动到远程提交的后面,使历史更为干净。


git pull --rebase origin branch_name

2:reset,用于移动 HEAD 指针和当前分支的引用

–soft:只移动 HEAD 指针,不改变工作目录和暂存区,保留更改

–mixed(默认):移动 HEAD 指针和暂存区,但不改变工作目录,将更改放回工作目录

–hard:移动 HEAD 指针、暂存区和工作目录,将所有更改丢弃

git reset --soft commit_hash

git reset --mixed commit_hash
git reset --hard commit_hash

3:revert ,用于创建一个新的提交,用来撤销之前的提交,不修改提交历史,而是创建新的提交来撤销之前的更改

git reset --mixed commit_hash

三:总结

  1. rebase 用于修改提交历史的顺序,将提交重新应用到新的基底上。
  2. reset 用于移动 HEAD 指针,可以用来撤销提交、取消暂存区的更改或者彻底丢弃更改。
  3. revert 用于创建新的提交,撤销之前的提交,不改变历史