2016-10-07 6 views
2

私はgit showを使用して、Githubでホストされているelasticsearchの特定のリビジョンのファイルコンテンツを取得しています。これは私がプロジェクトのルートで実行し、私のgitコマンドです:しかし、私は次のエラーを受け取った特定のファイルにgit showを返します。

git show 63cbc8439357f496ce630c2eb35b2cf02342fa4b~1:rest-spec 

fatal: bad object 63cbc8439357f496ce630c2eb35b2cf02342fa4b~1:rest-spec 

残りスペックがバージョン63cbc8439357f496ce630c2eb35b2cf02342fa4b〜1に存在しています以来、次の改訂で変更されています。あなたはGithubの中の次の改訂hereの変化を見ることができると私は、次のコマンドを使用して、私の地元のクローンとそれを検証:

git show 63cbc8439357f496ce630c2eb35b2cf02342fa4b 

これは、上記のgitショーの出力である(私はちょうど休み-specの変更が含まれます):

diff --git a/rest-spec b/rest-spec 
deleted file mode 160000 
index b3ab724..0000000 
--- a/rest-spec 
+++ /dev/null 
@@ -1 +0,0 @@ 
-Subproject commit b3ab72486fae1b5c5a5397356a3e113bf72eb6d5 

大変ありがとうございます。

答えて

2

rest-specelasticsearchリポジトリのサブモジュールであるため、そのリポジトリに属する​​(直接格納されている)オブジェクトではないためです。 rest-specが他のオブジェクトと異なることを確認するには、tree of the 63cbc8439357f496ce630c2eb35b2cf02342fa4b~1 revisionを参照してください。これはelasticsearchリポジトリに.gitmodulesファイルで記録され、参照されたリポジトリelasticsearch-rest-api-specの内容は、git submoduleコマンドを使用して、スーパープロジェクトの作業ツリー(つまりelasticsearchリポジトリ)のサブディレクトリとして利用できます。詳細はSubmodules chapter in the Git Bookdocumentation of the git submodule commandを参照してください。

+0

ありがとうございます。 'diff --ignore-submodules'を使ってサブモジュールをフィルタリングしましたが、結果には表示されませんでした。ファイルがサブモジュールであることをどのように知ることができますか?サブモジュールファイルの内容をどのように見ることができますか? –

+0

別のエラーが発生しました。おそらく私がそれを@Leonで解決するのを助けることができれば幸いです。コミット** e7e1667a26de5472e3419c586682b92c37c6e7d3 **では、 'diff --ignore-submodules'はサブモジュールをフィルタリングせず、** rest-spec **が' git diff'に表示されます。 'git diff'で**サブモジュール**をどのようにフィルタリングすることができますか? ありがとう –

+0

@MohsenLaali私の情報源は公式な文書です。 'git diff --ignore-submodules = all'はサブモジュールのすべての変更を無視すべきであることを示唆していますが、' git diff --ignore-submodules'(明示的に指定されていないモード)は '--ignore-submodules =すべての。しかし、コミット** e7e1667a26de5472e3419c586682b92c37c6e7d3 **の場合は、コミットがサブモジュールではなく、(symlink型の)リポジトリの実際のオブジェクトである** rest-spec **です。それがdiffに現れる理由です。 – Leon

関連する問題