此表单用于查看包含第二个<commit>的分支上的更改,从<commit>的共同祖先开始。“git diff A...B”等同于“git diff $(git-merge-base A B) B”。您可以省略<commit>中的任何一个,这与使用HEAD具有相同的效果。 为了防止你做一些奇怪的事情,应该注意的是,上面描述中的所有<commit>,除了最后两种使用“..”符号的形式,都可以是任何<tree>。 有关拼写<commit>的更完整列表,请参阅gitrevisions[7]中的“指定修订”部分。然而,“diff”是关于比较两个端点,而不是范围,并且范围符号(“<commit>..<commit>”和“<commit>...<commit>”)并不意味着gitrevisions[7]中“指定范围”部分定义的范围。
5条答案
按热度按时间but5z9lq1#
合并基准是
branch
与master
的分叉点。Git diff支持特殊语法:
从Git 2.30.0开始,特殊语法甚至有一个特殊开关作为简写:
你不能交换两边,因为那样你会得到另一根分支。你想知道自从
branch
从master
分叉以来,branch
发生了什么变化,而不是相反。您可能希望将此语法中的
branch
替换为HEAD
,甚至完全删除它-以下所有内容都显示当前分支的内容,因为它与master分支不同:松散相关:
请注意,
..
和...
的语法与其他Git工具中的语法不同。它与man gitrevisions
中指定的含义不同。引用
man git-diff
:git diff [--options] <commit> <commit> [--] [<path>…]
这是为了查看两个任意
<commit>
之间的变化。git diff [--options] <commit>..<commit> [--] [<path>…]
这与前一种形式同义。如果省略一侧的
<commit>
,则与使用HEAD
具有相同的效果。git diff [--options] <commit>...<commit> [--] [<path>…]
此表单用于查看包含第二个
<commit>
的分支上的更改,从<commit>
的共同祖先开始。“git diff A...B
”等同于“git diff $(git-merge-base A B) B
”。您可以省略<commit>
中的任何一个,这与使用HEAD
具有相同的效果。为了防止你做一些奇怪的事情,应该注意的是,上面描述中的所有
<commit>
,除了最后两种使用“..”符号的形式,都可以是任何<tree>
。有关拼写
<commit>
的更完整列表,请参阅gitrevisions[7]
中的“指定修订”部分。然而,“diff”是关于比较两个端点,而不是范围,并且范围符号(“<commit>..<commit>
”和“<commit>...<commit>
”)并不意味着gitrevisions[7]
中“指定范围”部分定义的范围。3okqufwl2#
以下是对我有效的方法:
这只显示我当前选择的本地分支和远程主分支之间的更改,并忽略来自合并提交的本地分支中的所有更改。
mhd8tkvw3#
正如John Szakmeister和VasiliNovikov所指出的,从master的Angular 获取分支上的完整差异的最短命令是:
这将使用master的本地副本。
要比较特定文件用途:
输出示例:
e0bqpujr4#
根据**Documentation**
git diff显示工作树和索引或树之间的更改、索引和树之间的更改、两个树之间的更改、合并导致的更改、两个blob对象之间的更改或磁盘上两个文件之间的更改。
在
git diff
中-两个点..
和三个点...
在我们的仓库中比较分支或拉取请求的方式上有很大的不同。我会给予你一个简单的例子来说明它。**示例:**假设我们正在从master checkout 新分支并推送一些代码。
*两个点-如果我们想显示所有变化之间的差异在当前时间发生在双方,我们将使用
git diff origin/master..feature
或只是git diff origin/master
,输出:(
H, I
对A, B, C, D
)*三个点-如果我们想显示最后一个共同祖先(
A
)之间的差异,也就是我们开始新分支的检查点,我们使用git diff origin/master...feature
,output:(H, I
对A
)。20jt8wwn5#
将git diff between branches/commitIDs放到一个patch file(只有在没有删除或创建文件的情况下才可以),然后在新分支中应用它。
其中abcde 123是主设备中的提交ID,其中尚未出现不需要的更改。
基本上,你不需要大师。你可以将当前提交与当前分支中的任何提交进行比较,例如:开始更改之前的最后一次提交。