2011-07-22 38 views
25

所以我有一個名爲one.txt的文件,我在master分支上多年來一直在進行修改。 gitk one.txt將顯示該特定文件的整個歷史記錄。但是,在我更改one.txt => two.txt後,gitk two.txt在重命名之前不顯示任何更改。gitk相當於git log --follow <文件的完整路徑>

我試過gitk - follow two.txt,但只給了每個提交的註釋,但沒有給出實際的文件更改信息。

我知道我可以做git log - follow two.txt,但是你必須爲每個正在改變的每個SHA1賦值。

因此,任何提示?

+1

看看http://stackoverflow.com/a/25090142/549246 ...我寫了一個小小的一行代碼,可以做你想做的事。 –

回答

22

問題是gitk --follow will for now differ from git log --follow,綜合考慮,根據對Linux Torvalds的,--follow主要是一個黑客:

我敢肯定,我提到這個問題,確切當我張貼的原後續的補丁,它基本上歸結爲:「--follow」是一個徹頭徹尾的破解,並且不是使用常規的提交過濾功能,結果,像「--parent」這樣的花哨的東西實際上並不適合它。

IOW,我不完全確定它是可以修復的。 「--follow是一個非常基礎的非常重要的事情,而且確實是一個完整的黑客攻擊。它是一個相當小的黑客 - 如果你不知道更好,看着源代碼,你可能會認爲它很適合自然。到混帳,但沒有

現在,它可能是我們可以砍了--parent--follow工作過,但坦率地說,我不知道如何因爲--follow黑客確實基本上可以歸結爲:

  • 不是修剪所有(這是通常簡化標準的東西並刪除無趣的提交)
    • 對於「git log」中正常提交的整個列表,請使用尋找重命名的魔法特殊hack來執行補丁生成。
  • 如果是重命名,請更改我們魔法追蹤的路徑,以便我們下一次提交,我們將遵循新(較舊)的路徑。
  • 如果補丁是空的,我們強制隱藏承諾(其中,這就是「rev->always_show_header = 0;」的東西)

,這裏的關鍵是,我們做的所有魔術的的年底排隊,在我們完成通常對父母身份進行重命名的提交的修剪之後很久。

對不起。我偶爾使用過--follow,但是看到「好的,它被重命名了」是一種破解。如果「gitk --follow <pathname>」工作正常,這將是很好的,但這只是我不在乎的東西。

+3

嘆息...總是他是混帳。他應該關心這個>。< – nobody

+0

我想這裏沒有更新... @qin你有沒有試過Git擴展?它的' - followlow'似乎工作正常。 – cregox

+1

@Cawas沒有進化,我可以在git的日誌中看到(https://github.com/git/git/tree/master/Documentation/RelNotes)。 – VonC