Git常用命令和场景(三)--版本差别查看

代码更新上线前,需要进行代码评审和走查,对于git,主要是查看现行版本和线上版本代码的差别,即使用git diff。
首先,还是查看程序版本,git log
[lixinglei@bogon my]$ git log
commit d87f3ea30f8e1a31ef26523c43d17237e4b7285c
Merge: bf468f2 2e47641
Author: lixinglei <lixinglei@zhangyue.com>
Date:   Tue Jul 16 21:12:58 2013 +0800

    Merge branch 'master' of   127.0.0.1:my

commit bf468f2aea582956e98d91af6eeea27da9812ba9
Author: lixinglei <lixinglei@zhangyue.com>
Date:   Tue Jul 16 21:08:31 2013 +0800

    二号需求

commit 2e476412c34a63b213b735e5a6d90cd05b014c33
Author: lixinglei <lixinglei@zhangyue.com>
Date:   Tue Jul 16 20:31:39 2013 +0800

    一号需求——bug修复

commit c0f28a2ec490236caa13dec0e8ea826583b49b7a
Author: lixinglei <lixinglei@zhangyue.com>
Date:   Fri Jul 16 19:41:07 2013 +0800

    一号需求

commit c34d6a8216a0aba5194a9b8dd2f41f7ca41499a8
Merge: 7f8fd44 32f74cd
Author: lixinglei <lixinglei@zhangyue.com>
Date:   Tue Jul 16 16:30:05 2013 +0800

    Merge 127.0.0.1:my

commit 32f74cd586788caf66ac1ae15281aedfb23d71db
Author: lixinglei <lixinglei@zhangyue.com>
Date:   Tue Jul 16 16:29:05 2013 +0800

    bug1001

commit 7f8fd44d9404859608515c7d0f389890bcc4a529
Author: lixinglei <lixinglei@zhangyue.com>
Date:   Tue Jul 16 16:24:12 2013 +0800

    bug2002

如果要查看版本之间的差异,通过git diff就可以了,这里又有一些区别,关于merge的版本和非merge的版本的。如果两个版本之间是不存在分支,也就是没有经过merge的,比如在这一段时间只有一个人在一个分支上开发,然后提交更新版本,这种情况下,两个版本之间直接通过git diff 版本号就可以查看差别了。而如果是多个人同时在提交,或者一个人开了不同的分支,在提交,则后提交的在git pull之后,自动进行过merge操作,即将这段时间其他分支上(可能是不同的人提交的,也可能是同一个人开不同的分支提交的)的代码进行合并,这样在查看版本区别的时候,需要区分来看。

例子中的版本中,对于有merge的情况,如:
要查看bug1001改变的内容使用git diff "bug1001对应版本号" "merge后的版本号",即:
git diff  32f74cd586788caf66ac1ae15281aedfb23d71db  c34d6a8216a0aba5194a9b8dd2f41f7ca41499a8
查看bug2002的改变内容则使用git diff "bug1002对应版本号" "merge后的版本号",即:
git diff   7f8fd44d9404859608515c7d0f389890bcc4a529   c34d6a8216a0aba5194a9b8dd2f41f7ca41499a8

对于没有merge的情况,如:
要查 看“一号需求bug修复”的内容,则由于“一号需求”和“一号需求bug修复”之间没有merge,即同一段时间内同一分支内提交的内容,则直接对比两个版本之间的差别即可,即:
git diff  c0f28a2ec490236caa13dec0e8ea826583b49b7a  2e476412c34a63b213b735e5a6d90cd05b014c33

对于以上情况没有遵守的,会出现如下情况,如果是有分支合并的情况要查看版本差别,如查看bug1001的变化,而直接使用了连续两个版本的差别,即:
git diff  7f8fd44d9404859608515c7d0f389890bcc4a529    32f74cd586788caf66ac1ae15281aedfb23d71db
则会出现,对于bug1001提交的内容会正确展示,同时会将bug1002提交的部分以反向的方式展示。即如果是bug1002增加的代码,这里会显示为"-",对于bug1002删除的代码,则又会展示出"+"。看起来相当诡异...!git 的版本号不是很友好,乱糟糟的一团,不过基本不影响正常使用,只是不太容易描述,这也要求版本提示信息一定要认真填写,不然真的无从描述哪个版本了。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页