用命令行一时爽,一直用命令行一直爽

git的merge操作

前情提要:这里假设要把feature/BACKEND-136合并到RELEASE/1.1上

  1. 切换到要合并到的分支上,使用git checkout RELEASE/1.1

    image2019-5-15_20-48-59.png

    如果不记得分支名字了可以用git branch -a查看下分支信息

    2

  2. 执行一下git pull,保证本地该分支代码为最新的

  3. 使用git merge feature/BACKEND-136命令将feature/BACKEND-136合并到当前所在的分支RELEASE/1.1上

    image2019-5-15_20-53-29.png

  4. 然后可以用git log命令看一下提交记录,可以看到后面的都是feature/BACKEND-136分支上的注释(里面<E8>什么的是中文乱码,所以以后提交要不都用英文吧,对windows用户友好,😓)

    image2019-5-15_20-55-42.png

  5. 现在我想要把这些注释都合成一行,不需要那么多注释,只想要这一个注释:finish feature BACKEND-136,那接下来就可以用git的rebase命令了

  6. 按下q退出git log的状态,我这里执行git rebase -i e1ba525035be07564ca4a484a054a8edf5112774,里面一大串指的是commit后面的那串编号(看别人的貌似可以缩写),他会把这个commit之上的commit都拿到,让你后续进行操作。 然后会看到一个vim界面类似的,按下i开始编辑,我把除了第一个的pick改成了s

    image2019-5-15_21-4-8.png

    pick:保留该commit(缩写:p)
    reword:保留该commit,但我需要修改该commit的注释(缩写:r)
    edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
    squash:将该commit和前一个commit合并(缩写:s)
    fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
    exec:执行shell命令(缩写:x)
    drop:我要丢弃该commit(缩写:d)
    

    大概意思是把s标注的都往前合并,最后就只留下第一个commit了。然后按下esc,输入:wq回车出来

  7. 这时会来到另一个页面(也是vim样界面),写上这个commit的注释就好了,把其他的通通删掉

    image2019-5-16_19-36-21.png

    改成了这样:

    image2019-5-16_19-37-12.png

    把注释改完之后,同样的方式:esc,输入:wq回车退出

  8. 再次执行git log看看,发现你之前的记录都消失了,只留下了最后你输入的哪个commit

    image2019-5-15_21-13-8.png

  9. 最后万事大吉直接git push就好了,希望不要出意外,少女祈祷中。就完事了。

来源

一些来源参考: https://www.jianshu.com/p/4a8f4af4e803