我有一个脚本,在一个分支中运行良好,而在另一个分支上却被破坏。我想并排看两个版本,看看有什么不同。有办法做到这一点吗?
要清楚的是,我不是在寻找比较工具(我使用Beyond compare)。我正在寻找一个Gitdiff命令,该命令允许我将主版本与当前分支版本进行比较,以查看发生了什么变化。我没有在合并或其他事情中。我只是想说
git diff mybranch/myfile.cs master/myfile.cs
我有一个脚本,在一个分支中运行良好,而在另一个分支上却被破坏。我想并排看两个版本,看看有什么不同。有办法做到这一点吗?
要清楚的是,我不是在寻找比较工具(我使用Beyond compare)。我正在寻找一个Gitdiff命令,该命令允许我将主版本与当前分支版本进行比较,以查看发生了什么变化。我没有在合并或其他事情中。我只是想说
git diff mybranch/myfile.cs master/myfile.cs
当前回答
使用提交哈希如下:
git diff <hash1> <hash2> <filename>
其中hash1可以是来自任何分支的任何提交,hash2也是如此。
其他回答
您可以这样做:git diff branch1:路径/to/file branch2:路径/to-file
如果已配置difftool,则还可以:git difftool branch1:路径/to/file branch2:路径/to-file
相关问题:如何使用首选的diff工具/查看器查看“gitdiff”输出?
我同意达尔比克的回答。如果希望将diff写入diff文件以进行代码检查,请使用以下命令。
git diff branch master -- filepath/filename.extension > filename.diff --cached
为了比较Git Bash中的两个文件,您需要使用以下命令:
git diff <Branch name>..master -- Filename.extension
该命令将在Bash本身中显示两个文件之间的差异。
对于Visual Studio代码,我强烈建议扩展:
Git历史差异文档
您可以使用它在文件之间甚至分支之间进行两次比较!
在控制台中,您可以简单地使用以下命令:
git diff <Your_Branch> <Branch_To_Compare_With> -- myfile.cs
gitdiff可以显示两次提交之间的区别:
git diff mybranch master -- myfile.cs
或者,等效地:
git diff mybranch..master -- myfile.cs
注意,必须指定文件的相对路径。因此,如果文件位于src目录中,您可以使用src/myfile.cs而不是myfile.cs。
使用后一种语法,如果任一侧是HEAD,则可以省略(例如,master..将master与HEAD进行比较)。
你也可能对我的分支机构感兴趣。。。master(来自gitdiff文档):
此表单用于查看包含第二个<commit>的分支上的更改,从这两个<commmit>的共同祖先开始。git diff A…B相当于git diff$(git merge base A B)B。
换言之,这将在master中提供不同的更改,因为它与mybranch不同(但此后在mybranch中没有新的更改)。
在所有情况下,文件名前面的--分隔符表示命令行标志的结束。这是可选的,除非如果参数引用提交或文件,Git会感到困惑,但包含它并不是一个坏习惯。参见Dietrich Epp对Git结账双破折号含义的回答。
如果配置了git difftool,则可以将相同的参数传递给git difftools。