$ git rebase -i <commitid>
# 然后使用 r 修改 commit message
git rebase -i [startpoint] [endpoint] 中 [startpoint] [endpoint] 是指定一个编辑区间,如果不指定 [endpoint],则改区间的终点默认为当前分支 HEAD 所指向的 commit。且该区间指定的是一个前开后闭 (startpoint, endpoint]的区间。
$ git rebase -i <commitid>
# 然后使用 s 将需要合并的 commit 合并到最上面 pick 所在的 commit
$ git rebase -i <commitid>
# 可以将未显示的手动添加
# 更换需要合并的 commit 的位置,执行 squash
$ git commit --amend
# 或者
$ git commit --amend -m '<commit message>'
git commit --amend 命令严格来说应该是代替(或者说修改)上一次提交,不仅仅只是修改 message,而是会将暂存区的内容生成一个新的 commit,再将当前最新的 commit 替换成上一提交的那一个。
除此之外,漏提交也可以使用该命令。遗漏提交部分更新,再次 commit 时,会出现两次 commit。这不是我们想要的。可以使用 git commit --amend --no-edit 。
$ git add <filename>
$ git commit --amend --no-edit # 在不更改提交消息的情况下修改提交-
不添加任何暂存文件的情况下向分支推送一个空提交
$ git commit --allow-empty -m “Message”
$ git reset --soft HEAD^
**HEAD^**表示回退到上一个提交。
**--soft**选项表示保留对文件的修改,将这些修改放入暂存区域。