当前位置:  开发笔记 > 开发工具 > 正文

如何从大师分支以来git diff所有变化?

如何解决《如何从大师分支以来gitdiff所有变化?》经验,为你挑选了2个好方法。

我在我的分支上做了几次提交,现在我要看到从master分支时的变化.然而,由于我最初将其分支合并,因此现在的大师现在已经合并了其他分支.

类似于 显示git分支中的所有提交,因为来自master的原始分支点,但是关于日志.

我确实试过了

git diff  --boundary master..

但我仍然看到比我的更多变化.

编辑: 我真的希望有一种方法不需要任何SHA的知识或者提交了多少次提交.如果我不需要它们,我可以自动化,自动化和自动化,并且可以更轻松,无故障地对其进行别名.

git diff my_branch_name...master

似乎很接近但不正确.



1> torek..:

正如Jonathan Brink已经指出的那样,听起来您想要将合并库提交下存储的版本与您自己分支顶端的版本进行比较.

使用git merge-base --fork-point通常是矫枉过正(在git 1.9之前的旧版本的git上不可用).它处理其他分支本身被重新定位的情况,所以如果没有发生,你可以坚持使用gitrevisions中更简单的三点语法:

git diff master...my_branch_name

其中(正如您在评论中所述)也可以使用HEAD或者只使用末尾的空字符串来编写:

git diff master...

当你使用三个点时,git diff找到左侧和右侧之间的1个合并基础提交SHA-1(从名称获得,或默认为HEAD),并将其替换为左侧SHA-1.右侧SHA-1(从名称解析)保持不变.

请注意,这与双点语法不同,git diff它接管两种语法(合成语法?no, syntaxes),因此两者都没有更常用的gitrevisions含义.


1如果有多个合并库,则只选择其中一个.实际git merge意愿(如果您使用默认的"递归"策略)合并两个"最佳"合并库以获得"虚拟合并基础",然后使用它合并到您当前的HEAD提交.这种情况非常罕见.



2> Jonathan.Bri..:

使用merge-base确定派生叉的sha,并将其传递给diff:

git diff `git merge-base --fork-point master`

--fork-point
查找分支(或导致的任何历史记录)从另一个分支(或任何引用)分支的点。这不仅要查找两次提交的共同祖先,而且还要考虑的引用日志,以查看导致的历史记录是否来自分支的较早版本的分支(请参见下面的此模式)。

您可以将其包装成这样的别名:

git config --global alias.sincemaster '!git diff `git merge-base --fork-point master`'

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有