Mar*_*air 322
你可以做:
git diff master~20:pom.xml pom.xml
Run Code Online (Sandbox Code Playgroud)
...比较您当前pom.xml与master20个修订版之前通过第一个父级的那个.master~20当然,您可以使用提交的对象名称(SHA1sum)或指定修订的许多其他方法中的任何一种来替换.
请注意,这实际上是将旧pom.xml版本与工作树中的版本进行比较,而不是提交的版本master.如果你想要,那么你可以改为:
git diff master~20:pom.xml master:pom.xml
Run Code Online (Sandbox Code Playgroud)
Ben*_*ack 134
git diff <revision> <path>
Run Code Online (Sandbox Code Playgroud)
例如:
git diff b0d14a4 foobar.txt
Run Code Online (Sandbox Code Playgroud)
Ger*_*rdo 38
如果您想查看单个文件的最后一次提交之间的区别,您可以执行以下操作:
git log -p -1 filename
Run Code Online (Sandbox Code Playgroud)
这将为您提供git中文件的差异,而不是比较您的本地文件.
Jua*_* NR 18
要查看上次提交中文件中的更改内容:
git diff HEAD~1 path/to/file.
Run Code Online (Sandbox Code Playgroud)
您可以将数字(~1)更改为要与其进行区分的第n次提交.
为了与当前的 5 次提交进行比较,两者都在master,只需执行以下操作:
git diff master~5:pom.xml master:pom.xml
Run Code Online (Sandbox Code Playgroud)
您也可以参考提交散列号,例如,如果散列号是x110bd64,您可以执行以下操作以查看差异:
git diff x110bd64 pom.xml
Run Code Online (Sandbox Code Playgroud)
小智 6
通用语法:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
Run Code Online (Sandbox Code Playgroud)
对于您的仓库中任何位置名为"FileName.xml"的所有文件.
注意" - "和"**"之间的空格
回答你的问题:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
Run Code Online (Sandbox Code Playgroud)
和git一样,你可以使用标签/ sha1 /"HEAD ^"来识别提交.
在Ubuntu上使用git 1.9.1进行测试.
如果提交都不是你的HEAD那么bash的大括号扩展证明非常有用,特别是如果你的文件名很长,上面的例子:
git diff master~20:pom.xml master:pom.xml
Run Code Online (Sandbox Code Playgroud)
会成为
git diff {master~20,master}:pom.xml
Run Code Online (Sandbox Code Playgroud)
更多关于使用bash 进行Brace扩展.