パレントディレクトリへのファイルのスパースギットチェックアウト

StackOverflow https://stackoverflow.com/questions/19838999

  •  28-07-2022
  •  | 
  •  

質問

いくつかのチュートリアルから借用すると、Git Repoで特定のフォルダーのまばらなチェックアウトを行うことができます。

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 このレポのフォルダー。

上記のスパースチェックアウトは、目的のフォルダーを返しますが、ネストされたファイル構造があるようです。

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

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

git-completion/git-completion.bash
役に立ちましたか?

解決

これを行うことができます 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 サブディレクトリなので、リポジトリのレイアウトに慣れる方が良いかもしれません...

他のヒント

達成しようとしていることによっては、2つのオプションがあります。ファイルの変更をまだ追跡できるようにしたい場合は、Symlinksをコミットします。あなたが地域の変更を気にしないなら、私は使用します git archive.

Symlinksをコミットします

気になるファイルにSymlinksをコミットし、予備のチェックアウトを使用してそれらを取得できます。

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 Archiveを使用して、最初にリポジトリをクローン化することなく、リモートリポジトリから変更を直接ダウンロードすることもできます。欠点は、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 -

これで、現在のディレクトリにファイルが表示されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top