前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >git问题场景和log颜色查看

git问题场景和log颜色查看

原创
作者头像
mariolu
发布2019-07-21 22:07:16
2.8K0
发布2019-07-21 22:07:16
举报

一、问题场景

正常我们使用git,比如git add ,git commit , git push这些完成个人的代码暂存、修改、提交和推送操作。

在多人协作下,你提交的文件修改可能对方也在修改同一个文件,并且比你先修改完先push到远程。这时候你不得不pull下别人的分支,在重新push,如果有confilict,还需要手动修改冲突文件,该是你的保留,不想要的删除,最终再提交。

这些是最基本的场景,但是你有没有遇到过以下棘手的场景:

1.1、别的同事提交了master(或者dev分支),但是下一个临时发布版本需要暂时剔除这个代码,并且需要合并你自己负责的那部分代码提交。

当然你可以说先找到别的同事提交之前的那个版本,然后在branch一个分支,merge上你的代码。但是问题是如果master已经提交了很多个commit,而别的同事提交的那个暂时不想要(比如说他提交的是一个大功能模块,上线可可能需要比较谨慎,所以这次不发表),其他的还是要一起发布。

      --C----D----          some commit must kick off
     /            \<merge>
----A----B----C----D----E   master
     \
      --O----P----Q         my branch
                    \
                     --B----E   release brance

这个时候如果想要制造出像release branch那样子的提交。可以这么做:

可以先从my branch中rebase一个release branche。然后git cherry-pick B, git cherry-pick E即可。其中B和E是commit log md5串。这个commit id可以通过git log查看,这个commit id是一串很长的字符串,但是其实只需要前面几个字母组成的字符串,只要这个字符串是能让git联想到唯一的commit id就可以。需要注意的是cherry-pick保持原来的B和E提交顺序。

和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,因为Git是分布式的版本控制系统,多人在同一个版本库里工作,如果都用1,2,3……作为版本号,那肯定冲突了。

二、学会查看,git log的线条、形状和颜色

git初学者或者从svn刚切换到git的使用者,一开始就敲复杂的命令可能会有点困难。这时候如果使用跟tortoise svn类似的git软件,会比较好上手git。

git log日志每条记录有三栏,第一栏是分支图,第二栏是代表提交是否修改、新增和删除文件。第三轮是git分支(或tag)加上本commit的提交日志。

2.1. git上的版本线

  • 每一条版本线代表着一个分支。
  • 还有有些颜色会中断,然后在另外一个地方继续,这里其实已经是不同的分支,也就是git log的颜色同样,如果遇到分支,或者断续 可能代表的是另一个分支
  • 这里有分叉,有断线再接上,同一个颜色(绿色)代表了5个不同的分支。
图1. 某个repo的版本记录图
图1. 某个repo的版本记录图

2.2 版本线交叉上的形状

四方块代表merge,圆形代表一个提交。每条横线记录代表着一个事件。形状记录了是什么事件,merge或者哪个版本提交commit事件。

git log的Walk Behaviour里面有一堆按钮:注意下如果只是想看分支间的关系,可以把compressed graph,而如果还想看清每个分支的提交,就把这个按钮关掉。

图2. 简略版本(多次提交被只显示一条)
图2. 简略版本(多次提交被只显示一条)
图3. 完整的提交
图3. 完整的提交

2.3 提交记录的版本/分支信息

由于log显示的是所有分支,所有需要在第三栏,messege那栏有显示当次更改涉及的分支或者tag。git log上有tag比如这种,

图4 修改的tag
图4 修改的tag

还有branch

图5. 修改的branch
图5. 修改的branch

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、问题场景
    • 1.1、别的同事提交了master(或者dev分支),但是下一个临时发布版本需要暂时剔除这个代码,并且需要合并你自己负责的那部分代码提交。
    • 二、学会查看,git log的线条、形状和颜色
      • 2.1. git上的版本线
        • 2.2 版本线交叉上的形状
          • 2.3 提交记录的版本/分支信息
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档