Git - 整理标签以及整合提交
整理标签
若删除所有的标签,可以执行如下命名:
git fetch --all
git tag -l | xargs -n 1 git push --delete origin
git tag | xargs git tag -d
若删除指定的标签,可以执行如下命令,tagname
是标签名称:
git tag -d tagname
git push origin :refs/tags/tagname
整合提交
将多个提交整合为一个提交,精简提交历史记录。如下图1所示,想精简从 7cd790e6
往上的所有提交。通过 git rebase -i hash
实现,其中 hash 是提交的 hash 值。
整合之前,确保当前暂存库中没有更改的文件,否则会导致 rebase 失败,因此请先清除暂存库或者将内容存入缓存中(stash)。
# 确保本地仓库的提交记录和远程仓库的提交记录保持一致,避免出现合并的麻烦情况
git fetch
git rebase -i 7cd790e6
如下图2所示,终端显示了这些历史提交,从最新的提交 2e640f8
到 7cd790e6
的前一个 3d9b04a
。pick
表示该提交保留;squash
表示当前提交塞入前一个提交,且保留提交信息,所以在 :wq
之后会进入编辑提交信息的界面;fixup
表示与前一个提交合并但不保留提交信息。
如下图3所示,这是图2的步骤结束之后进入的另一个终端页面,该页面表示如何保留提交信息,可以清除这些信息只写一条。
修改提交信息之后,按下 esc
-> 输入 :wq
,保存退出。如下图4所示,终端列出修改信息结束此次步骤。
如下图5和下图6所示,图6是图3步骤进行时的提交图形,基于蓝色分支拉出了一条粉色分支,整合之后并入蓝色最新的节点。
结束了图4的步骤之后,如图6所示,本地和远程都只有一个蓝色的主分支。