2013-10-23 81 views
2

假設我有一個修訂版A-B-C-D-E-F-G-H-I-J-K-L-M的回購協議。一個文件foo.txtBGJ記錄修改(或創建)。我想另外結合修訂CE到foo.txt的歷史,使我得到B-C-E-G-J與有關foo.txtgit log -- foo.txt一個簡單的命令。有沒有辦法實現這一點?如何在git中跟蹤特定版本的未修改文件?

如果這是不可能的,有什麼好方法嗎?

(更多細節如下)

的原因是,A〜M爲舊項目的快照,並導入到git倉庫以後。在課程中發生了一些情況,並且快照C和E上的foo.txt的實際狀態丟失,但實際上都修改了foo.txt。然而,C和E的更改消息(提交消息)與foo.txt的更改過程有關,應該包含在foo.txt的歷史記錄列表中。因此,我希望收到的提交信息時git log -- foo.txt,彷彿git add -- foo.txt已經運行,並採取修訂C和E.

效果
+0

我看到的唯一方法是修改歷史,實際上編輯有問題的文件(添加一行,添加空格等) – knittl

回答

2

當您運行git log -- foo.txt,你得到只是有更改該文件的提交。所以你只得到提交A-D而不是整個樹的原因是foo.txt在B中沒有被改變。C.

Git在每個提交中存儲系統的改變。在提交B & C中,foo.txt沒有改變。所以提交不會對該文件進行任何修改。如果有人運行git add foo.txt,則沒有關係,文件沒有更改,因此沒有任何要添加或提交的內容。

添加的文件名,您可以跟蹤文件中的變化,使你可以看到它的一個項目的過程中如何變化。

如果您想獲得A & D之間的所有提交,您希望運行git log A..D。您可以添加--name-only選項,以查看在每個更改的文件提交或使用-p選項來查看該提交的所有更改。

+0

我必須在問題的原始版本沒有解釋我的問題不夠好,所以我編輯之後。謝謝你的回答,但我認爲我需要的是不同的答案。 –

相關問題