1 提交错误或遗漏 git commit --amend
- 仅修改错误的commit信息
git commit --amend -m '要修改的备注信息'
- 提交遗漏(合并最近两次提交为一次)
git add 指定文件(或者'.'全部文件)
git commit --amend -m '要修改的备注信息'
2 撤销文件修改 git checkout
git checkout -- 文件名
危险操作命令!慎用!该操作会直接抹去工作目录下该文件的修改,以当前版本最新一次的commit取而代之。建议手动备份后再进行操作!
3 重置命令 git reset
无论官方文档还是诸多博客,大都是以git reset --soft/mix/hard HEAD^1/HEAD\~1的方式重置工作区、暂存区、本地仓库,但对于HEAD^和HEAD~的操作难免产生错误(尤其多分支合并),因此建议精确定位,使用commit id来重置
git reset --soft "commit id"
仅仅将HEAD指针移动至当前版本对应的某次提交上,暂存区和工作区无任何改变
git reset --mix "commit id"
默认命令,git reset等同于git reset --mix,该命令将HEAD指针移动至当前版本对应的某次提交上,并同步该commit内容替换暂存区
git reset --hard "commit id"
该命令将HEAD指针移动至当前版本对应的某次提交上,清空工作区并同步该commit内容替换暂存区和工作区
4 撤回中间提交 git revert
git revert "commit id"
撤回中间的某次提交,该中间提交的前后提交不变,并且将该次中间提交作为最新一次提交。撤回后,该中间提交的内容彻底消失在工作区和暂存区中(比如使用git diff 历史commit id 不再出现该中间提交的修改内容)。该命令使用极容易产生冲突,尤其该中间提交和后续的提交属于同一文件。不推荐无脑使用,建议本地备份后,再进行该危险操作