0


git rebase 合并提交,精简 git log

  • 步骤概括1. 查看提交的历史git log --graph --pretty=oneline --abbrev-commit2. 用 git rebase 合并提交1. 从 HEAD版本 开始合并,包括 HEAD版本,到之前的 n 个提交git rebase -i HEAD~n2. (可选,通常在合并大量 commit 的时候使用)指定一个前开后闭的合并提交的区间,startpointendpoint,意思就是 startpoint 不参与合并。startpointendpoint 的值是 commit id,比如具体操作第 1 步中的****​326e415git rebase -i [startpoint] [endpoint]参数说明:- -i 的意思是 --interactive,即弹出交互式的界面让用户编辑完成合并操作- startpointendpoint 指定了一个编辑区间- 如果不指定 endpoint,则该区间的终点 endpoint 默认是当前分支 HEAD 所指向的提交

  • 具体操作(后面主要转载此链接)1. git log 查看提交历史如请添加图片描述2. 比如执行 git rebase -i HEAD~3 会弹出类似以下合并设置窗口请添加图片描述上图的内容改成如下的意思就是把第二次、第三次提交都合并到第一次提交上。pick 85697ee This is first commit.squash ee461c1 This is second commit.squash 326e415 This is third commit.- 操作说明:- pick:保留该 commit(缩写:p)- reword:保留该 commit,但我需要修改该 commit 的注释(缩写:r)- edit:保留该 commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)- squash:将该 commit 和前一个 commit 合并(缩写:s)- fixup:将该 commit 和前一个 commit 合并,但我不要保留该提交的注释信息(缩写:f)- exec:执行 shell 命令(缩写:x)- drop:我要丢弃该 commit(缩写:d)- 注意 ❗第一个提交不能是 squash,因为如图说明,它们是从头到尾的串行执行,且 squash 的意思是将该 commit 和前一个 commit 合并。如果读者也遇到只需要保留其中某个 commit 的信息,可以先保证第一行是 pick 操作,之后都是合并到第一行,在本文后续第四步的最终提交的编辑窗口再确定和输入此次合并的 commit 信息- 温馨提醒如果读者有大量 commit 要合并,在进入合并设置窗口后,可以结合 vim 的丰富编辑功能操作,比如快速替换除第一行外的 picksquash1. 显示行号:set number2. Vim 在选定范围内查找和替换:<start line number>, <end line number>s/old/new/g 如笔者要合并 11 个 commit 则 :2,11s/pick/squash/g,回车3. :wq 保存退出,Git 会压缩提交历史。如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。修改以后要记得敲下面的命令:gitadd.git rebase --continue如果你想放弃这次压缩的话,执行以下命令:git rebase --abort4. 如果没有冲突,或者冲突已经解决,则会出现最后的本次合并提交的 commit 说明编辑窗口请添加图片描述比如Commit feature branch!#This is first commit.#This is second commit.#This is third commit.``````:wq保存提交后即可再查看日志git log --graph --pretty=oneline --abbrev-commit请添加图片描述

  • 参考链接https://www.cnblogs.com/sunbines/p/15478014.htmlhttps://segmentfault.com/a/1190000021007417https://liaoxuefeng.com/books/git/branch/rebase/index.html

标签: git

本文转载自: https://blog.csdn.net/Tuna____/article/details/142216188
版权归原作者 Penguido 所有, 如有侵权,请联系我们删除。

“git rebase 合并提交,精简 git log”的评论:

还没有评论