2014-07-21 91 views
1

假設提交X更改了文件foo.java的第500行。我希望看到所有過去的提交都改變了這一行。列出在特定提交中更改特定行的所有提交

this thread的啓發,我明白自git 1.8.4以後,我們可以使用-L選項git log來查看特定行範圍的演變。所以我用git log -L 500,500:foo.java

但是,我得到了一個錯誤說

文件foo.java只有450線

我懷疑的原因是,我git log命令的頭部動作。但是在提交X和HEAD之間,文件foo.java已經被修改,最後只有450行。

那麼,我怎樣才能得到所有提交已經改變這條線500從提交X?

回答

0

你可以嘗試每個SHA1相同的命令,與git rev-list

窗口(使用GNU在Windows上,xargs的命令)

git rev-list HEAD|xargs git log -1 -L 500,500:foo.java 2>NUL 

的Unix:

git rev-list HEAD|xargs git log -1 -L 500,500:foo.java 2>/dev/null 
+0

願你解釋有關命令的更多內容?我應該在哪裏放置提交SHA1?什麼是'HEAD | xargs'和'2>/dev/null'?非常感謝! – Ida

+0

@lda是基本腳本,使用重定向unix.stackexchange.com/questions/70963/difference-between-2-2-dev-null-dev-null-and-dev-null-21和pipe |。你不必把一個SHA1:git rev-list應該在你的repo中列出* all * SHA1。 – VonC

+0

@lda但是,如果您必須放置SHA1「X」,則可以使用'git rev-list X..HEAD':用您的SHA1替換''X''。 – VonC

相關問題