我正在尝试在两个版本的文件之间找到git diff。 我不想使用SHA。
我已经尝试了十几种变体,差异变得空洞。我不是在寻找工作或分阶段文件的差异。我在输出上编辑了路径,因此线条适合而不会包裹。
我正在使用posh-git powershell。
以下是文件存在的证据:
ls src/G01/P001_MultiplesOf3And5.java
Directory: U:\dev\workspace\ProjectEuler\src\G01
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/24/2015 7:38 AM 1612 P001_MultiplesOf3And5.java
以下是我要做的事情:
U: git diff HEAD~1..HEAD src/G01/P001_MultiplesOf3And5.java
U: git diff HEAD~1..HEAD -- src/G01/P001_MultiplesOf3And5.java
U:
我读到这应该有效:git diff $start_commit..$end_commit -- path/to/file
你可以看到差异是空的。有什么想法吗?
答案 0 :(得分:1)
您需要找到包含给定文件的最后两个提交
这些可能不是HEAD
或HEAD~
。如果yourFile
和HEAD
中HEAD~
未更改,则git diff
不会返回任何内容。
完整的命令是:
git diff $(git log -n2 --pretty=format:%H -- yourFile | awk '{print $1}' | tac) -- yourFile
使用:
git log -n2 --pretty=format:%H -- yourFile
:将获得最后2次提交awk '{print $1}'
:确保每行打印一次tac
:颠倒顺序(最旧的提交,然后是最新的)git diff $(...) -- yourFile
:使用相关提交SHA1进行yourFile
差异。答案 1 :(得分:0)
git diff HEAD~1..HEAD
HEAD~1..HEAD
指定一次提交:HEAD
。 Lose the dots