2017-06-10 42 views
1

是否有任何方法從指定的blob對象(散列)獲取前一個原始文件。 換句話說,當一個文件的blob散列值從fd871b5更改爲6732f18時,我想要得到一個fd871b5的內容。 但不幸的是,fd871b5不公開,所以我嘗試使用插入符號^與後更改的blob散列。 根據以下輸出,caret ^不適用於blob對象。 任何想法?從blob對象獲取前一個原始文件(散列)

$ git show -- README.md 
commit 9f38e2d9e6ca81341fecf82d881cf629effb4be2 
-- snip -- 
diff --git a/README.md b/README.md 
index fd871b5..6732f18 100644 
-- snip -- 
$ git show 6732f18^ 
error: object 6732f18f21f8b4b7ffe0c015803d7cd09c597337 is a blob, not a commit 
error: object 6732f18f21f8b4b7ffe0c015803d7cd09c597337 is a blob, not a commit 
fatal: ambiguous argument '6732f18^': unknown revision or path not in the working tree. 
Use '--' to separate paths from revisions, like this: 
'git <command> [<revision>...] -- [<file>...]' 

使用情況的詳細信息: 在一些OSS項目中,發佈的修補程序有一個blob對象,它是不公開的,既不提交-ID。 當pre-blobcommit-id不是公開的,只有post-blob,我想檢索一個完全相同的文件對應<pre-blob>

+0

如果通過提交無法訪問blob,那麼您看不到它。此外,「blob的父母」沒有定義,git中沒有這樣的事情。 – kan

回答

3

只有承諾有父母。解決在提交的父項的路徑是什麼:

git rev-parse 9f38e2d9e6ca81341fecf82d881cf629effb4be2^:README.md 

,以顯示其ID,

git show 9f38e2d9e6ca81341fecf82d881cf629effb4be2^:README.md 

以顯示其內容。

+0

謝謝。如果commit-id是公共的,這個命令是非常有用的。我想知道是否commit-id不公開,是否有任何方式從後blob對象中檢索前一個原始文件。對於缺少我的用例感到抱歉。 – forte916

+0

你在這裏指的是「不公開」?請具體說明您發現的實際情況。 – jthill

1

如果你知道感興趣的斑點和斑點仍然存在於回購的哈希值(即,它可能是一個懸空的對象,但它尚未被垃圾收集),使用

git cat-file -p <hash> 

爲了解決這個問題,下面是一個例子:

$ mkdir test && cd test 
$ git init 
Initialized empty Git repository in /Users/jubobs/Desktop/test-git/.git/ 
$ echo foo > README 
$ git add README 
$ git commit -m "Write 'foo' to README" 
[master (root-commit) 73ece26] Write 'foo' to README 
1 file changed, 1 insertion(+) 
create mode 100644 README 
$ echo bar >> README 
$ git add README 
$ git commit -m "Append 'bar' to README" 
[master 7ac5ae9] Append 'bar' to README 
1 file changed, 1 insertion(+) 
test-git(master)$ git show -- README 
commit 7ac5ae95b49c7e493119f46fb8150c437a200df3 (HEAD -> master) 
Author: Jubobs <xxxxxxxx> 
Date: Sun Jun 11 01:04:22 2017 +0100 

    Append 'bar' to README 

diff --git a/README b/README 
index 257cc56..3bd1f0e 100644 
--- a/README 
+++ b/README 
@@ -1 +1,2 @@ 
foo 
+bar 
$ git cat-file -p 257cc56 
foo 
$ git cat-file -p 3bd1f0e 
foo 
bar 
相關問題