Answers:
git diff
可以向您显示两次提交之间的区别:
git diff mybranch master -- myfile.cs
或者,等效地:
git diff mybranch..master -- myfile.cs
使用后者的语法,如果任何一方是HEAD
可以省略(例如master..
比较master
来HEAD
)。
您可能也有兴趣mybranch...master
(来自git diff
docs):
此表格用于查看包含且直到第二个分支的更改,从两个分支
<commit>
的共同祖先开始<commit>
。git diff A...B
等同于git diff $(git-merge-base A B) B
。
换句话说,这会带来一些差异,master
因为它与背道而驰mybranch
(但从那时起就没有新的变化mybranch
)。
在所有情况下,--
文件名前的分隔符都表示命令行标志的结尾。这是可选的,除非如果自变量引用提交或文件,则Git会感到困惑,但是包括进来并不是一个坏习惯。有关一些示例,请参见https://stackoverflow.com/a/13321491/54249。
git difftool
如果已配置,则可以将相同的参数传递给。
--
。常见且容易犯的错误。)
git diff --name-status branch1..branch2
(可能很明显,但我想我会提到它,以防其他人遇到与我相同的麻烦)。
你可以这样做:
git diff branch1:path/to/file branch2:path/to/file
如果已配置difftool,则还可以:
git difftool branch1:path/to/file branch2:path/to/file
相关问题: 如何使用视觉差异程序查看git diff输出
branch1:./file
)。如果文件位于分支之间的单独位置(例如git diff branch1:old/path/to/file branch2:new/path/to/file
),这也很有用。
git diff branch1 branch2 path/to/file
。
有两种方法可以比较来自两个不同分支的文件:
选项1:如果要将文件从n个特定分支与另一个特定分支进行比较:
git diff branch1name branch2name path/to/file
例:
git diff mybranch/myfile.cs mysecondbranch/myfile.cs
在此示例中,您将“ mybranch”分支中的文件与“ mysecondbranch”分支中的文件进行比较。
选项2:简单方法:
git diff branch1:file branch2:file
例:
git diff mybranch:myfile.cs mysecondbranch:myfile.cs
该示例类似于选项1。
选项3:如果要将当前工作目录与某个分支进行比较:
git diff ..someBranch path/to/file
例:
git diff ..master myfile.cs
在此示例中,您将实际分支中的文件与master分支中的文件进行比较。
最好的方法是通过git diff
以下方式使用:
git diff <source_branch> <target_branch> -- file_path
它将检查这些分支中文件之间的差异。请参阅本文,以获取有关git命令 及其工作方式的更多信息。
有两种方案可以比较文件:
方案1:比较远程分支上的文件(两个分支都应存在于远程存储库中)
方案2:将本地文件(在本地工作区副本中)与远程存储库中的文件进行比较。
逻辑很简单。如果为diff提供两个分支名称,它将始终比较远程分支,如果仅提供一个分支名称,它将始终将本地工作副本与远程仓库(您提供的一个)进行比较。您可以使用range提供远程存储库。
例如结帐一个分支
git checkout branch1
git diff branch2 [filename]
在这种情况下,如果提供文件名,它将把文件名的本地副本与名为“ branch2 ”的远程分支进行比较。
git diff branch1 branch2 [filename]
在这种情况下,它将比较名为“ branch1 ”与“ branch2 ”的远程分支的文件名
git diff ..branch2 [filename]
在这种情况下,它还将比较来自名为“ branch1 ”与“ branch2 ”的远程分支的文件名。因此,与上面相同。但是,如果刚从另一个分支创建了一个分支,则说“ master”,而当前的分支在远程存储库中不存在,它将比较远程“ master ”与远程“ branch2 ”。
希望它有用。
git diff branch1 branch2 myfile.cs
。(--
不再需要,因为它最多可以包含两个修订参数。)