• 合并commit


    前提:不要对任何已经提交到公共仓库中的 commit 进行修改(你自己一个人玩的分支除外)

    场景:有时候开发一个功能, 修修补补 commit 了很多次 ,过多的 commit 会显得很复杂。
    或者代码写好后,发现有几个commit有些多余,可以合并或者干脆删除。
    所以,在这种情况下。我们需要整理一下 commit 的记录,让我们更好的管理提交记录。

    1 命令 git rebase -i

    这里主要用到rebase命令:

    git rebase -i [startpoint] [endpoint]
    

    其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。

    2 步骤

    假设这里要把 d c new_b合并。
    ① 使用 git log 命令查看提交历史:

    ②执行命令

    git rebase -i 8b2c5f3 
    #或者 
    git rebase -i HEAD~3
    #如果只是合并中间的new_b c
    git rebase -i 8b2c5f3 b27e655
    

    ③ 编辑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)

    根据我们的需求,我们将commit内容编辑如下:

    ④ 编辑注释修改页面

    比如 我要修改为 "new_b_c_d",这把"new_b"编辑为"new_b_c_d",然后删除 "c" "d".确认退出后

    再次查看log

    3仅两个commit的时候,怎么合并

    使用--root,则从根commit开始

    git rebase -i --root
    

    结果如图:

    剩下操作同上。

    4 同步远程仓库

    如果要同步远程仓库,则强制push

    git push --force
    #或者
    git push origin master -f
    
    懒惰不会让你一下子跌到 但会在不知不觉中减少你的收获; 勤奋也不会让你一夜成功 但会在不知不觉中积累你的成果 越努力,越幸运。
  • 相关阅读:
    漫谈怎样学习操作系统原理
    二分图的最大匹配、完美匹配和匈牙利算法
    Web报表工具FineReport中JavaScript的使用
    Java Web -- Servlet(1) 必备知识
    xxxxxxclub系统模块分类
    经典排序算法——选择排序
    github+hexo+node.js搭建个人博客基本过程及遇到的问题
    自己做小项目的流程(慢慢完善)
    二分查找
    Eclipse中遇到The type XXX cannot be resolved. It is indirectly referenced from required .class files错误
  • 原文地址:https://www.cnblogs.com/Rainingday/p/14533706.html
Copyright © 2020-2023  润新知