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 HEAD3.撤销工作区修改
命令git checkout --test.txt意思就是,把test.txt文件在工作区的修改全部撤销,这里有两种情况:
-
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
-
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态;
git checkout --在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险。
git revert HEADgit 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