2016-05-19 15 views
-1

リポジトリから単一のファイルを取得しています。git - リポジトリから単一のファイルを取得する

私は10個のディレクトリ/ somefilesとpom.xmlを持つリポジトリと、pom.xmlという名前の1個のファイル(ディレクトリの外にある)を持っています。その履歴を持つそのリポジトリからpom.xmlを取得する必要があります。ここで問題となるのは、pom.xmlは10ディレクトリすべてにあります。私はgitでフィルタを取得しようとすると、-f --prune-empty --index-filter 'git rm --cached --ignore-unmatch $(git ls -files | grep -v "pom.xml") 'このコマンドは、ディレクトリ内のpom.xmlを含むすべてのpom.xmlを取得します。

そのファイルの歴史についてのすべてを保持します
+0

サウンド奇妙なユースケースのように、なぜリポジトリ全体を取得できないのでしょうか? y? –

+0

私はrepository.But全体を得ることができますが、ディレクトリの外にあるpom.xmlが1つだけ必要です。問題は、私はpom.xmlと他のファイルを持っているすべてのディレクトリに他の10個のディレクトリがあることです。 –

+0

リポジトリ全体を取得でき、1つのファイルだけが必要な場合は、リポジトリ全体を取得し、適切なファイルのみを使用します。これは、特に依存関係が非常に複雑になることができるポムにとって重要です。ただ今は1つのポームしか必要ないと思っていても、いつでも10のすべてが必要になるわけではありません。 –

答えて

1
git branch just-pom 
git filter-branch --index-filter ' 
       git read-tree --empty; git reset $GIT_COMMIT path/to/pom.xml 
     ' -- just-pom --full-history -- path/to/pom.xml 

。最後の行に--後のすべては、あなたが構築している歴史を養うコミットを正確に選択するために、どこに行くことだ、git rev-listに引数である。

+0

素晴らしいjthill。コマンドをくれてありがとう。完璧に働いた。 aw3ome –

+0

私はちょうどあなたが与えた上記のコマンドに小さな質問があります。ここで私たちは - just-pom --full-history-path/to/pom.xmlに--just-pomを与える必要がありますブランチ名@jthill –

+0

これは、filter-branchが書き換えるものを制限します。 – jthill

関連する問題