commit管理(撤销、合并、回退、提交信息) - 1684838553/webTips GitHub Wiki

合并提交

允许对最近的 n 次提交进行编辑、合并、删除等操作

git rebase -i HEAD~n
git push -f
  • pick: 保留该提交,不做任何修改
  • reword(r): 保留该提交,但允许你修改提交信息
  • edit(e): 保留该提交,但在应用该提交后暂停,允许你进一步修改文件或添加新的提交
  • squash(s): 将该提交与前一个提交合并为一个提交。合并后的提交将保留前一个提交的提交信息,并允许你编辑合并后的提交信息
  • fixup(f): 将该提交与前一个提交合并为一个提交,但不保留该提交的提交信息
  • drop(d): 删除该提交

回退提交

1.版本回退

git reset --(soft | mixed | hard ) < HEAD ~(num) > 
指令 作用范围
--hard 全部回退,包括HEAD,index,working tree
--mixed 回退部分,包括HEAD,index
--soft 只回退HEAD

2.暂存区文件撤销 (不覆盖工作区)

git reset HEAD

3.撤销工作区修改

命令git checkout --test.txt意思就是,把test.txt文件在工作区的修改全部撤销,这里有两种情况:

  • 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  • 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态;

git checkout --

撤销提交

在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险。

git revert HEAD

git revert 命令只能抵消上一个提交,如果想抵消多个提交,必须在命令行依次指定这些提交。比如,抵消前两个提交,要像下面这样写

git revert [倒数第一个提交] [倒数第二个提交]

git revert命令还有两个参数。

--no-edit:执行时不打开默认编辑器,直接使用 Git 自动生成的提交信息。
--no-commit:只抵消暂存区和工作区的文件变化,不产生新的提交。

修改提交信息

1.修改commit信息

git commit --amend -m "Fixes bug"
git commit --amend --author="xx <[email protected]>"
git commit --amend --author="drunk <[email protected]>"

撤销当前分支的变化

在当前分支上做了几次提交,突然发现放错了分支,这几个提交本应该放到另一个分支。

# 新建一个 feature 分支,指向当前最新的提交
# 注意,这时依然停留在当前分支
$ git branch feature

# 切换到这几次提交之前的状态
$ git reset --hard [当前分支此前的最后一次提交]

# 切换到 feature 分支
$ git checkout feature
⚠️ **GitHub.com Fallback** ⚠️