How to compare files from two different branches?
我有一个脚本在一个分支中运行良好,在另一个分支中被破坏。我想并排看两个版本,看看有什么不同。有什么办法吗?
很明显,我不是在寻找一个比较工具(我使用超越比较)。我正在寻找一个git diff命令,它允许我将主版本与当前的分支版本进行比较,以查看发生了什么变化。我不在合并或其他事情的中间。我只想说
1 | git diff mybranch/myfile.cs master/myfile.cs |
1 | git diff mybranch master -- myfile.cs |
或者,等价地:
1 | git diff mybranch..master -- myfile.cs |
号
使用后一种语法,如果任意一方是
您也可能对
This form is to view the changes on the branch containing and up to the second
, starting at a common ancestor of both . git diff A...B is equivalent togit diff $(git-merge-base A B) B .
号
换言之,这将使
在所有情况下,文件名前面的
如果配置了一个参数,则可以将相同的参数传递给
您可以这样做:
如果配置了difftool,则还可以:江户十一〔一〕号
相关问题:如何使用Visual Diff程序查看Git Diff输出
更现代的语法:
埃多克斯1〔14〕
双点前缀表示"从当前工作目录到"。你也可以说:
master.. ,即与上述相反。这与master 相同。mybranch..master ,显式引用当前工作树以外的状态。v2.0.1..master ,即引用一个标记。[refspec]..[refspec] ,基本上是Git可以识别为代码状态的任何东西。
有许多方法可以比较来自两个不同分支的文件:
选项1:如果要将文件从n个特定分支与另一个特定分支进行比较:
1git diff branch1name branch2name path/to/file例子:
1git diff mybranch/myfile.cs mysecondbranch/myfile.cs。
In this example you are comparing the file in"mybranch" branch to the
file in the"mysecondbranch" branch.号
选项2:简单方法:
1git diff branch1:file branch2:file。
例子:
1git diff mybranch:myfile.cs mysecondbranch:myfile.csThis example is similar to the option 1.
号
选项3:如果要将当前工作目录与某个分支进行比较:
1git diff ..someBranch path/to/file。
例子:
1git diff ..master myfile.csIn this example you are comparing the file from your actual branch to
the file in the master branch.号
我只不过做了一件事。
这将检查文件之间的差异。
假设
同意@dahlbyk建议的答案。如果要将diff写入diff文件进行代码检查,请使用以下命令。
1 | git diff branch master -- filepath/filename.extension > filename.diff --cached |
如果要与当前分支进行比较,可以操作并使用:
埃多克斯1〔28〕
这样它将从当前分支到引用的分支(分支)。
在我的例子中,我使用以下命令:
1 | git diff <branch name> -- <path + file name> |
。
此命令可以帮助您比较两个不同分支中的同一个文件
按如下方式使用提交哈希:
1 | git diff <hash1> <hash2> <filename> |
号
其中hash1可以是来自任何分支的任何提交,hash2也是如此。
最好的方法是通过以下方式使用
它将检查这些分支中的文件之间的差异。查看本文,了解关于git命令及其工作方式的更多信息。
要比较Git bash中的两个文件,需要使用以下命令:
1 | git diff <Branch name>..master -- Filename.extension |
。
这个命令将显示bash本身中两个文件的区别。