9

いくつかのチュートリアルを参考にして、git リポジトリ内の特定のフォルダーをスパース チェックアウトすることができました。

mkdir git-completion && cd git-completion
git init
git remote add –f origin https://github.com/git/git.git
git config core.sparsecheckout true
echo contrib/completion/ >> .git/info/sparse-checkout
git pull origin master

たとえば、このレポのフォルダーにある、、git-completion.bashなどgit-completion.tcshのスクリプトの後にいるとしましょう。contrib/completion

上記の sparse-checkout は目的のフォルダーを返しますが、ネストされたファイル構造を持っているようです:

git-completion/contrib/completion/git-completion.bash

代わりにファイルを親ディレクトリにプルすることは可能ですか?

git-completion/git-completion.bash
4

2 に答える 2

4

あなたはこれを行うことができますgit show

git show <revision>:path/to/file.txt > different/path/to/otherfile.txt

あなたの特定のケースでは:

git show HEAD:git-completion/contrib/completion/git-completion.bash > git-completion/git-completion.bash

チェックアウトするファイルごとに繰り返します。git本当は、サブディレクトリの理由は、これらがリリースにバンドルされるときにサブディレクトリに配置されるためだと思いますcontrib/completionが、リポジトリのレイアウトに慣れる方が良いかもしれません...

于 2013-11-07T15:30:01.857 に答える
3

達成しようとしていることに応じて、2 つのオプションがあります。ファイルへの変更を引き続き追跡できるようにしたい場合は、シンボリックリンクをコミットします。ローカルの変更を気にしない場合は、を使用しますgit archive

シンボリックリンクをコミットする

気になるファイルへのシンボリックリンクをコミットし、スペアチェックアウトを使用してそれらを取得することもできます。

ln -s contrib/completion/git-completion.bash git-completion.bash
git add git-completion.bash

これにより、ファイルを編集して変更をコミットすることができます。

Git アーカイブ

これにより、探しているコンテンツが抽出されます。変更はリポジトリで追跡されません。

# generic
git archive <revision>:<path> | tar -xf -

#specific to your example
git clone --bare https://github.com/git/git.git ~/git-completion-bare
mkdir git-completion && cd git-completion
git archive --remote ~/git-completion-bare master:contrib/completion/ | tar -xf -

編集:githubサポートしていないようgit archive --remoteです。誰かがそれを許可する別のホスティング サービスを使用している場合に備えて、以下に含まれています。

--remote を使用した Git アーカイブ

git アーカイブを使用すると、最初にリポジトリを複製せずに、リモート リポジトリから変更を直接ダウンロードすることもできます。欠点は、Git でローカルの変更を追跡できないことです。

# General form
git archive --remote <url> <revision>:<path> | tar -xf -
# your example 
git archive --remote https://github.com/git/git.git master:contrib/completion/ | tar -xf -

現在のディレクトリにファイルがあります。

于 2014-08-20T18:14:13.100 に答える