我有一个脚本,在一个分支中运行良好,而在另一个分支上却被破坏。我想并排看两个版本,看看有什么不同。有办法做到这一点吗?
要清楚的是,我不是在寻找比较工具(我使用Beyond compare)。我正在寻找一个Gitdiff命令,该命令允许我将主版本与当前分支版本进行比较,以查看发生了什么变化。我没有在合并或其他事情中。我只是想说
git diff mybranch/myfile.cs master/myfile.cs
我有一个脚本,在一个分支中运行良好,而在另一个分支上却被破坏。我想并排看两个版本,看看有什么不同。有办法做到这一点吗?
要清楚的是,我不是在寻找比较工具(我使用Beyond compare)。我正在寻找一个Gitdiff命令,该命令允许我将主版本与当前分支版本进行比较,以查看发生了什么变化。我没有在合并或其他事情中。我只是想说
git diff mybranch/myfile.cs master/myfile.cs
当前回答
我同意达尔比克的回答。如果希望将diff写入diff文件以进行代码检查,请使用以下命令。
git diff branch master -- filepath/filename.extension > filename.diff --cached
其他回答
最好的方法是按以下方式使用gitdiff:
git diff<source_branch><target_branch>--文件路径
它将检查这些分支中文件之间的差异。查看本文,了解有关Git命令及其工作方式的更多信息。
在我的情况下,我使用以下命令:
git diff <branch name> -- <file path + file name>
此命令可以帮助您比较两个不同分支中的同一文件。
有两种方案可以比较文件:
场景1:比较远程分支处的文件(两个分支都应存在于远程存储库中)
场景2:将本地文件(在本地工作区副本)与远程存储库中的文件进行比较。
逻辑很简单。如果您向diff提供两个分支名称,它将始终比较远程分支,如果您只提供一个分支名称的话,它将总是将本地工作副本与远程存储库(您提供的)进行比较。您可以使用范围提供远程存储库。
例如,签出分支:
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 <hash1> <hash2> <filename>
其中hash1可以是来自任何分支的任何提交,hash2也是如此。
我只需执行git diff branch1 branch2路径/to/file
这将检查文件之间的差异。分支1的变化将显示为红色。分支2的变化将为绿色。
假设分支1是过去,分支2是未来。您可以通过反转diff:gitdiffbranch2-branch1中分支的顺序来反转这一点