我有一个脚本在一个分支中工作正常,在另一个分支中被破坏.我想并排看两个版本,看看有什么不同.有没有办法做到这一点?
要明确我不是在寻找比较工具(我使用Beyond Compare).我正在寻找一个git diff命令,它允许我将主版本与我当前的分支版本进行比较,看看有什么变化.我不是在合并或任何事情的中间.我只想说些什么
git diff mybranch/myfile.cs master/myfile.cs
Run Code Online (Sandbox Code Playgroud)
dah*_*byk 2065
git diff 可以告诉你两个提交之间的区别:
git diff mybranch master -- myfile.cs
Run Code Online (Sandbox Code Playgroud)
或者,等效地:
git diff mybranch..master -- myfile.cs
Run Code Online (Sandbox Code Playgroud)
使用后者的语法,如果任何一方是HEAD可以省略(例如master..比较master来HEAD).
您可能也对mybranch...master(来自git diffdocs)感兴趣:
此表单用于查看包含和最多为第二个的分支上的更改
<commit>,从两者的共同祖先开始<commit>.git diff A...B相当于git diff $(git-merge-base A B) B.
换句话说,这会产生一些变化,master因为它会偏离mybranch(但从那以后没有新的变化mybranch).
在所有情况下,--文件名前的分隔符表示命令行标志的结束.这是可选的,除非Git在参数引用提交或文件时会感到困惑,但包括它不是一个坏习惯.有关示例,请参阅/sf/answers/932504401/.
git difftool如果配置了相同的参数,则可以传递相同的参数.
Tim*_*gan 391
你可以这样做:
git diff branch1:path/to/file branch2:path/to/file
如果您配置了difftool,那么您还可以:
git difftool branch1:path/to/file branch2:path/to/file
相关问题: 如何使用visual diff程序查看git diff输出
Joe*_*ger 151
更现代的语法:
git diff ..master path/to/file
双点前缀表示"从当前工作目录到".你也可以说:
master..,即与上述相反.这是一样的master.mybranch..master,显式引用当前工作树以外的状态.v2.0.1..master,即引用标签.[refspec]..[refspec],基本上可以识别为git的代码状态.Jav*_* C. 29
有许多方法可以比较来自两个不同分支的文件:
选项1:如果要将来自n个特定分支的文件与另一个特定分支进行比较:
git diff branch1name branch2name path/to/file
Run Code Online (Sandbox Code Playgroud)
例:
git diff mybranch/myfile.cs mysecondbranch/myfile.cs
Run Code Online (Sandbox Code Playgroud)
在此示例中,您将"mybranch"分支中的文件与"mysecondbranch"分支中的文件进行比较.
选项2:简单方法:
git diff branch1:file branch2:file
Run Code Online (Sandbox Code Playgroud)
例:
git diff mybranch:myfile.cs mysecondbranch:myfile.cs
Run Code Online (Sandbox Code Playgroud)
此示例类似于选项1.
选项3:如果要将当前工作目录与某个分支进行比较:
git diff ..someBranch path/to/file
Run Code Online (Sandbox Code Playgroud)
例:
git diff ..master myfile.cs
Run Code Online (Sandbox Code Playgroud)
在此示例中,您将实际分支中的文件与主分支中的文件进行比较.
Mou*_*uki 23
对于 Visual Studio Code,我强烈建议扩展:
Git 历史差异 文档
您可以使用它在文件甚至分支之间进行比较!
从控制台,您可以简单地使用以下命令:
git diff <Your_Branch> <Branch_To_Compare_With> -- myfile.cs
Run Code Online (Sandbox Code Playgroud)
iGb*_*nam 11
我只是这样做 git diff branch1 branch2 path/to/file
这将检查文件之间的差异.变化branch1将为红色.变化branch2将是绿色.
假设这branch1是过去,branch2是未来.您可以通过反转diff中分支的顺序来反转此操作:git diff branch2 branch1
小智 10
比较文件有两种情况:
场景 1:比较远程分支上的文件(两个分支都应该存在于远程存储库中)
场景 2:将本地文件(位于本地工作区域副本)与远程存储库中的文件进行比较。
逻辑很简单。如果您向 diff 提供两个分支名称,它总是会比较远程分支,如果您只提供一个分支名称,它总是会比较您的本地工作副本与远程存储库(您提供的那个)。您可以使用 range 来提供远程存储库。
例如,检查一个分支:
git checkout branch1
Run Code Online (Sandbox Code Playgroud)
git diff branch2 [filename]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果您提供filename ,它会将文件名的本地副本与名为“ branch2 ”的远程分支进行比较。
git diff branch1 branch2 [filename]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它将比较名为“ branch1 ”和“ branch2 ”的远程分支的文件名
git diff ..branch2 [filename]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它也会比较名为“ branch1 ”和“ branch2 ”的远程分支的文件名。所以,和上面的一样。但是,如果您刚刚从另一个分支创建了一个分支,例如“master”,并且您当前的分支不存在于远程存储库中,它将比较远程“ master ”与远程“ branch2 ”。
小智 5
同意@dahlbyk建议的答案。如果您希望将差异写入差异文件以进行代码检查,请使用以下命令。
git diff branch master -- filepath/filename.extension > filename.diff --cached
Run Code Online (Sandbox Code Playgroud)
就我而言,我使用以下命令:
git diff <branch name> -- <file path + file name>
Run Code Online (Sandbox Code Playgroud)
该命令可以帮助您比较两个不同分支中的同一文件。
| 归档时间: |
|
| 查看次数: |
685097 次 |
| 最近记录: |