pom.xml
)从master分支与Git中的任意较旧版本进行比较?#1 楼
您可以执行以下操作:git diff master~20:pom.xml pom.xml
...将您当前的
pom.xml
与20个修订版中的master
到第一个父级的版本进行比较。当然,您可以用提交的对象名称(SHA1sum)或指定修订版本的许多其他方式中的任何一种来替换master~20
。请注意,这实际上是将旧的
pom.xml
与版本进行比较在您的工作树中,而不是在master
中提交的版本。如果需要,则可以改为执行以下操作:git diff master~20:pom.xml master:pom.xml
#2 楼
git diff <revision> <path>
例如:
git diff b0d14a4 foobar.txt
评论
如果文件不在当前目录中,则不适用于1.7.11版本。示例:'git diff f76d078 test / Config'产生“错误:无法访问'test / f76d078'”
–简单用户
2013年12月4日21:21
@ user1663987仅传递相对于项目根目录的完整路径:git diff <版本>根目录/路径/文件。
–user456814
14年6月27日在17:23
test / Config是相对于根目录的(例如test是根目录的子目录)。但是您的示例根目录/路径/文件似乎包含根目录了吗?
–简单用户
2014年6月29日下午5:55
#3 楼
如果要查看单个文件的最后一次提交之间的区别,可以执行以下操作:比较您的本地文件。评论
这没有返回任何东西
– Andrei Cristian Prodan
14-10-17在12:05
@AndreiCristianProdan然后,您在那里没有任何更改。您可以逐步增加-1,直到获得更改。
– kaiser
2014年10月30日11:30
很好我创建了一个可能有用的bash函数:gitlog(){git log-$ {3 :-p}-$ {2:-1} $ 1; }的用法:gitlog Rakefile或gitlog Rakefile 5和gitlog Rakefile 10 s。第一个显示一个差异。第二个显示五个差异;第三个显示十个-不打补丁。
–辅助总线
18年6月7日在13:12
#4 楼
要查看上次提交中文件中的更改:git diff HEAD~1 path/to/file
您可以将数字(〜1)更改为要与之进行比较的第n个提交。
评论
这个答案实际上只是这个更通用答案的一个特例,用HEAD〜1代替
–user456814
14年7月17日在21:52
这不起作用!致命:参数“ HEAD〜1”不明确:未知版本或不在工作树中的路径。使用“-”将路径与修订分开
– Andrei Cristian Prodan
14-10-17在12:04
对于我来说,这个答案很简单且实用。
–道格拉斯·弗里(Douglas Frari)
19年5月9日在11:46
#5 楼
通用语法:$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
用于仓库中所有名为“ FileName.xml”的文件。
注意“-”之间的空格和“ **”
回答您的问题:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
和git一样,您可以使用tag / sha1 /“ HEAD ^“表示提交。
在Ubuntu上使用git 1.9.1进行了测试。
#6 楼
要比较5个提交给当前提交的提交,只需在master
上执行以下操作即可:git diff master~5:pom.xml master:pom.xml
还可以引用提交哈希数,例如,如果哈希数是
x110bd64
,您可以执行以下操作以查看区别:git diff x110bd64 pom.xml
#7 楼
如果两个提交都不是您的HEAD,那么bash的大括号扩展被证明真的很有用,特别是如果您的文件名很长,则上面的示例:git diff master~20:pom.xml master:pom.xml
pre >
将成为
git diff {master~20,master}:pom.xml
有关Brace扩展的更多信息重击。
#8 楼
git diff -w HEAD原始/主路径/到/文件#9 楼
git diff master~20 -- pom.xml
如果您也不在master分支中,也可以工作。
#10 楼
如果您可以使用图形工具(甚至更喜欢),可以:gitk pom.xml
在gitk中,您可以单击任何提交(“选择”它),然后右键单击任何其他提交,以根据您喜欢的顺序在弹出菜单中选择“差异为->选定”或“差异为->此”。
#11 楼
对于有兴趣从GitHub执行相同操作的人,请参阅比较不同时间的提交。#12 楼
例如,如果您需要对存储中的单个文件进行比较,则可以git diff stash@{0} -- path/to/file
#13 楼
如果您要查找特定提交上的差异,并且要使用github UI而不是命令行(例如,您要将其链接到其他人),则可以执行以下操作:https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
例如:
https://github.com/grails/grails-core/commit/02942c5b4d832b856fbc04c186f1d02416895a7e/grails-test-suite-uber/build.gradle
请注意右上角的Previous和Next链接,这些链接使您可以浏览提交中的所有文件。
尽管这仅适用于特定的提交,但不适用于在任意两个版本之间进行比较。
评论
请注意,这不仅适用于文件,还适用于(子)目录,例如git diff
–user456814
2014年7月5日在18:59
还要注意,在Windows上,如果您使用的是版本说明符,则需要对目录使用正斜杠,否则git会给您有关该版本中不存在的文件/目录的错误。
–迪伦·尼斯利(Dylan Nissley)
2014年11月21日13:38
@DylanNissley否则它不会给您带来任何错误和差异。这就是我所看到的。无论如何,感谢您提供有关使用正斜杠而不是反斜杠的提示。
–加里·谢泼德(Gary Sheppard)
17年8月17日在20:05
使用Windows文件,我发现更容易更改目录,然后调用git diff master〜20:./ pom.xml ./pom.xml
–劳埃德
18年8月24日在6:16
某些版本的git在
–乔什
20-4-27的3:36