千家信息网

git怎么比较不同分支的差异

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,这篇文章主要讲解了"git怎么比较不同分支的差异",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"git怎么比较不同分支的差异"吧!前两天,在做集成的时候
千家信息网最后更新 2024年10月21日git怎么比较不同分支的差异

这篇文章主要讲解了"git怎么比较不同分支的差异",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"git怎么比较不同分支的差异"吧!

前两天,在做集成的时候碰到了一件闹心事。事情是这样的,良许的一位同事不小心把一个错误的 dev 分支 merge 到了 master 分支上,导致了良许编译不通过。于是,我们需要将版本回退到 merge 之前的状态。

如果是下面这个状态,那很好处理:


这种情况下,我们只需一个 git reset 命令即可:

git reset --hard HEAD~

但是,如果下面这种状态,情况就没那么简单了:

这种情况下,就不能简单使用 git reset 命令了。这就是良许这次碰到的问题。为了解决这个问题,我们就需要找出合并后的分支与合并前的分支的差异,再进行版本回退。这种情况下的版本回退,就不能单用 git reset 了,而是要配合 git revert 了,在后面我们将详细介绍如何优雅的进行版本回退。

回到正题,我们如何找出合并后的分支与合并前分支的差异呢?这里我们需要使用到 git log 命令了。我们先模拟出这两个分支的提交情况:

  • dev 分支提交情况:

  • [alvin@VM_0_16_centos git-log]$ git log dev commit b191410906ae20a865fde3f163bb01fd6cfc1f11 Author: Liangxu  Date:   Sat Dec 8 21:03:13 2018 +0800     [dev] 版本6 commit 793c9582ab0a45c4f8f548be36c06bc5ca427c62 Author: Liangxu  Date:   Sat Dec 8 21:02:30 2018 +0800     [dev] 版本5 commit dbe54166608772486408c1dea05304de45dba430 Author: Liangxu  Date:   Sat Dec 8 21:00:27 2018 +0800     [both] 版本3 commit 31894364b1396b00d2935373387397ef930416e4 Author: Liangxu  Date:   Sat Dec 8 20:59:26 2018 +0800     [both] 版本2 commit 4872f653a8fd7c8541abb4a292d628dc7625884b Author: Liangxu  Date:   Sat Dec 8 20:58:05 2018 +0800     [dev] 版本4 commit fac6c60ed28c5acfcd01284336d4201cc55ee2e7 Author: Liangxu  Date:   Sat Dec 8 20:57:01 2018 +0800     [both] 版本1
  • master 分支提交情况:

  • [alvin@VM_0_16_centos git-log]$ git log master commit c690054c67b833b22dce4120899526743b20d36d Author: Liangxu  Date:   Sun Dec 9 07:31:47 2018 +0800     [master] 版本7 commit dbe54166608772486408c1dea05304de45dba430 Author: Liangxu  Date:   Sat Dec 8 21:00:27 2018 +0800     [both] 版本3 commit 31894364b1396b00d2935373387397ef930416e4 Author: Liangxu  Date:   Sat Dec 8 20:59:26 2018 +0800     [both] 版本2 commit fac6c60ed28c5acfcd01284336d4201cc55ee2e7 Author: Liangxu  Date:   Sat Dec 8 20:57:01 2018 +0800     [both] 版本1

在这些提交里 [both] 表示两个分支都有的提交, [dev] 表示只有在 dev 分支的提交,[master] 表示只在 master 分支的提交

1. 查看dev有,而 master 分支没有的提交

方法一

命令:

git log dev ^master

结果:

[alvin@VM_0_16_centos git-log]$ git log dev ^master commit b191410906ae20a865fde3f163bb01fd6cfc1f11 Author: Liangxu  Date:   Sat Dec 8 21:03:13 2018 +0800     [dev] 版本6 commit 793c9582ab0a45c4f8f548be36c06bc5ca427c62 Author: Liangxu  Date:   Sat Dec 8 21:02:30 2018 +0800     [dev] 版本5 commit 4872f653a8fd7c8541abb4a292d628dc7625884b Author: Liangxu  Date:   Sat Dec 8 20:58:05 2018 +0800     [dev] 版本4

很明显看到,版本4,5,6这三个提交只在 dev 分支里。

相反,如果想看到 master 分支有,而 dev 分支没有的提交,就可以使用如下命令:

git log master ^dev

结果:

[alvin@VM_0_16_centos git-log]$ git log master ^dev commit c690054c67b833b22dce4120899526743b20d36dAuthor: Liangxu Date:   Sun Dec 9 07:31:47 2018 +0800     [master] 版本7

方法二

使用如下命令:

git log master..dev

如果想查看只在 master 分支,而不在 dev 分支的提交,则将 master 与 dev 对调过来即可:

git log dev..master

这两条命令的执行结果与上述相同,故不重复贴结果了。

2. 提前未知两个分支提交情况,如何查看两个分支的差异?

在这种情况下,上述的几个命令都跑一遍,其实也可以知道个大概了。但有没有更简单的办法呢?git 同样为你想到了这个问题,也提供了解决办法:

git log master...dev

结果:

[alvin@VM_0_16_centos git-log]$ git log master...dev commit c690054c67b833b22dce4120899526743b20d36d Author: Liangxu  Date:   Sun Dec 9 07:31:47 2018 +0800     [master] 版本7 commit b191410906ae20a865fde3f163bb01fd6cfc1f11 Author: Liangxu  Date:   Sat Dec 8 21:03:13 2018 +0800     [dev] 版本6 commit 793c9582ab0a45c4f8f548be36c06bc5ca427c62 Author: Liangxu  Date:   Sat Dec 8 21:02:30 2018 +0800     [dev] 版本5 commit 4872f653a8fd7c8541abb4a292d628dc7625884b Author: Liangxu  Date:   Sat Dec 8 20:58:05 2018 +0800     [dev] 版本4

请注意,在这里,master 与 dev 之间有三个点,有别于之前的命令(两个点)。而且,这个命令的执行结果与 git log dev...master 完全一样。

我们这里是为了方便演示,加了 [master] 、 [dev] 、 [both] 这样的记号,但在实际开发过程中,很少会这样操作。那我们在执行 git log master...dev 时,怎么知道有差异的提交是在 master 分支里,还是 dev 分支里?我们只需加上 --left-right 选项即可。

git log --left-right master...dev

结果:

[alvin@VM_0_16_centos git-log]$ git log --left-right master...dev commit < c690054c67b833b22dce4120899526743b20d36d Author: Liangxu  Date:   Sun Dec 9 07:31:47 2018 +0800     [master] 版本7 commit > b191410906ae20a865fde3f163bb01fd6cfc1f11 Author: Liangxu  Date:   Sat Dec 8 21:03:13 2018 +0800     [dev] 版本6 commit > 793c9582ab0a45c4f8f548be36c06bc5ca427c62 Author: Liangxu  Date:   Sat Dec 8 21:02:30 2018 +0800     [dev] 版本5 commit > 4872f653a8fd7c8541abb4a292d628dc7625884b Author: Liangxu  Date:   Sat Dec 8 20:58:05 2018 +0800     [dev] 版本4

我们会发现,在 commit 与哈希值之间多了个 < 或 > ,其中 < 表示只在 master 分支的提交, > 表示只在 dev 分支的提交。

感谢各位的阅读,以上就是"git怎么比较不同分支的差异"的内容了,经过本文的学习后,相信大家对git怎么比较不同分支的差异这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

分支 版本 情况 命令 差异 结果 两个 不同 问题 状态 学习 三个 之间 内容 办法 只需 就是 方法 明显 相同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 ncode材料数据库 服务器进安全模式了怎么办 山西高性能服务器 服务器登录mysql 外文图书数据库有哪些 杭州捕快网络技术有限公司 福建服务器机柜设计方案 南平极刊成软件开发 网络安全责任制度及考核 手机上怎么打开服务器 股票期权软件开发去哪里 小蝌蚪互联网科技待遇 槲寄生小说软件开发 最新网络安全通报预警 宣传网络安全的作文100字 数据库系统三级模式结构及其作用 斑马网络技术刘梦颖 米米的我的世界服务器 华为云服务器是否安全 天津滴滴网络安全部 招聘 服务器信息安全大数据区块链 Gauss统计数据库空间 福田区无源网络技术开发经验丰富 蓝湖私有服务器地址是什么意思 亚马逊服务器如何上传网站数据库 招募软件开发帖范本 移动网络安全基础知识 数据库系统三级模式结构及其作用 数据库批量数据替换加工 深圳市盛众互联网科技有限公司
0