前提:不要对任何已经提交到公共仓库中的commit进行修改(你自己一个人玩的分支除外)想要修改commit的名字,可分修改最近一次的commit,和之前的某次commit。
用到的命名分别为:
git commit --amend
git rebase -i [start point] [endpoint]
1.重命名最新的commit
概述 命名分支最新commit,主要使用到git commit --amend -m 'new_message'
命令。(这里的new message用单引号 双引号都可以)。如下图所示。
注意:git commit --amend -m 'new_message'
命令相当于撤销之前的提交,然后携带新的信息进行一次新的提交,所以重命名后,该节点的id会发生变化。
2. 重命名历史commit
- 场景 假如我觉得之前提交的commit中有不妥的,想要重命名。又分第一个commit和中间commit(第一个和最新的之间)。
- 概述 重命名历史commit相对比较复杂,需要配合
rebase
相关命令:git rebase -i [start commit_id]
。- 其中[start commit_id]为需要重命名commit的前面的节点的id。如此情景中我们修改
1
,因此需要其前面的commit_id。 - 使用 git rebase -i HEAD~3(HEAD~3表示将修改当前版本的近三条commit)
- 其中[start commit_id]为需要重命名commit的前面的节点的id。如此情景中我们修改
- 步骤 git log --oneline 查看commit
假如要修改b的名字。则git rebase -i 8b2c5f
①
② 执行2后,会进入如下界面:
③在"b"那一行 写入r,即reword <commit>,然后就进入下一个界面。写入要修改的name即可。
-
以上使用git rebase -i 8b2c5f后(8b2c5f即对应a),可操作的只有b,c,d。那么如何修改第一个<commit>。
使用git rebase -i --root,输入执行后,结果如图。剩下的操作同上。
3提交远程仓库
如果不光是本地的修改,则使用强制push提交到远程仓库
git push --force #当前
git push origin master -f #主线