1. ホーム
  2. ギット

[解決済み】gitリポジトリから1つのファイルだけをスパースにチェックアウトする方法は?

2022-04-16 09:09:39

質問

git リポジトリから 1 つのファイルだけをチェックアウトするにはどうすればよいですか?

解決方法は?

もともとは、2012年に git archive (参照 ジャレド・フォーサイス 's 回答 ロバート・ナイト 's 回答 を使用します)。 git1.7.9.5 (2012年3月) , ポール・ブラナン 's 回答 :

git archive --format=tar --remote=origin HEAD:path/to/directory -- filename | tar -O -xf -

しかし:2013年、それはもう不可能になった リモートhttps://github.com URLの場合 .

旧ページの"をご覧ください。 リポジトリをアーカイブすることはできますか? "

現在(2018年)のページ " GitHubでのコンテンツやデータのアーカイブ化について のようなサードパーティサービスを利用することを推奨しています。 GHTorrent または GHアーカイブ .


ローカルコピー/クローンも扱えるということですね。

で述べたように、ベアリポジトリのローカルコピーを持っている場合、代わりに次のようにすることもできます。 この回答 ,

git --no-pager --git-dir /path/to/bar/repo.git show branch:path/to/file >file


あるいは、最初にレポをクローンする必要があり、つまり全履歴を取得することになります。 - .gitレポに - を作業ツリーに追加してください。

  • しかし、その後 を行うことができます。 スパースチェックアウト (Git1.7+を使用している場合)、。
    • スパースチェックアウトオプションを有効にする ( git config core.sparsecheckout true )
    • に表示させたいものを追加します。 .git/info/sparse-checkout ファイル
    • 作業ツリーを再読込し、必要なものだけを表示させる

作業ツリーを再読込する場合。

$ git read-tree -m -u HEAD

そうすれば、最終的に、正確に欲しいものを含む作業ツリー(たとえそれが1つのファイルであっても)が完成します。


リチャード・ゴメス ポイント ( コメント欄 )から"まで。 git リポジトリから単一のディレクトリまたはディレクトリのリストをクローン、フェッチ、またはスパースチェックアウトするにはどうすればよいですか? "

<ブロッククオート

ヒストリーのダウンロードを回避し、単一のブランチを取得し、必要なファイルやディレクトリのリストを取得するbash関数です。