Question

Empruntant à quelques tutoriels, je suis en mesure de faire une caisse clairsemée d'un dossier particulier dans un repo 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

Par exemple, disons que je suis après le git-completion.bash, git-completion.tcsh, etc scripts qui sont dans le contrib/completion dossier de ce repo.

La vérification clairsemée ci-dessus me renvoie le dossier souhaité, mais il semble avoir un fichier imbriqué Strucure:

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

Est-il possible de tirer les fichiers à la place dans le répertoire parent comme ainsi?

git-completion/git-completion.bash
Était-ce utile?

La solution

Vous pouvez faire ça avec git show:

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

Dans votre cas spécifique:

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

Répétez pour chaque fichier que vous souhaitez vérifier. Bien que, vraiment, la raison des sous-répertoires, je pense, est que lorsque ceux-ci sont regroupés dans un git libération, ils sont mis dans le contrib/completion Subdirectory, il pourrait donc être préférable de s'habituer à la mise en page du référentiel ...

Autres conseils

Selon ce que vous essayez d'accomplir, vous avez deux options. Si vous voulez pouvoir suivre les modifications des fichiers, alors je commettrais des liens symboliques. Si vous ne vous souciez pas des modifications locales, alors j'utiliserais git archive.

Commettre des liens symboliques

Vous pouvez commettre SymLinks aux fichiers qui vous tiennent à cœur, utiliser la caisse de rechange pour les obtenir également.

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

Cela vous permettra de modifier les fichiers et de commettre des modifications à eux encore.

Archive git

Cela extrait simplement le contenu que vous recherchez. Les modifications ne seront pas suivies dans le référentiel.

# 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 -

Edit: il ressemble à github ne supporte pas git archive --remote. Il est toujours inclus ci-dessous au cas où quelqu'un utilise un service d'hébergement différent qui le permet.

Archive git avec --Remote

En utilisant Git Archive, vous pouvez même télécharger les modifications directement à partir d'un référentiel distant sans cloner d'abord le référentiel. L'inconvénient est que vous ne pouvez pas suivre les changements locaux avec 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 -

Vous aurez maintenant les fichiers dans le répertoire actuel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top