当头部处于特定提交时,我想获得一个diff文件,这样我就可以将头部缩小到一个更低的水平,然后在应用和不应用diff文件的情况下尝试测试功能.那么有没有办法生成特定提交的diff文件.
尽管有一种方法可以在提交之前和之后更改头部,但这种方法更方便.
Saj*_*han 12
查看特定提交的更改.
$ git diff <commit-sha> -p
OR,
$ git show --decorate <commit-sha> # see 'Author', 'Date' and 'diff'
Run Code Online (Sandbox Code Playgroud)
查看两个提交的差异.
$ git diff <commit1> <commit2>
Run Code Online (Sandbox Code Playgroud)
查看file
特定提交的更改.
$ git show <commit>:<file>
Run Code Online (Sandbox Code Playgroud)
查看持续时间的所有更改(例如1 day
).
$ git whatchanged --since="1 day ago" -p
$ git whatchanged --since="1 day ago" -p <file> # see changes for a specific file only
Run Code Online (Sandbox Code Playgroud)
Raf*_*ver 12
从gitrevisions(7)
:
r1^! 表示法包括提交 r1 但不包括其所有父项。该符号本身表示单个提交 r1。
这可以显示单个提交的差异。例如,你可以这样做:
git log --oneline | grep thingamabob
Run Code Online (Sandbox Code Playgroud)
这将为您提供短 SHA-1 哈希值,这样您就可以看到该提交的差异:
git diff 'b7f57543^!'
Run Code Online (Sandbox Code Playgroud)
如果我正确理解您的要求,那么您想获得一个低于HEAD级别的文件的差异
检查文件从当前HEAD到上一级之前的差异
git diff HEAD^1 filename
Run Code Online (Sandbox Code Playgroud)
数字1是您要比较的级别,
您也可以使用SHA获得差异,以查看其SHA使用的所有提交
git log --oneline
Run Code Online (Sandbox Code Playgroud)
然后您可以使用SHA获取差异,以比较当前HEAD与特定提交的使用情况
git diff commitSHA filename
Run Code Online (Sandbox Code Playgroud)
如果您想获得两次提交之间的所有差异,可以使用
git diff commitSHA1..commitSHA2 filename
Run Code Online (Sandbox Code Playgroud)