Domanda

Prendendo in prestito da alcuni tutorial, sono in grado di fare una cassa scarsa di una particolare cartella in un repository 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

Ad esempio, diciamo che sto cercando il git-completion.bash, git-completion.tcsh, ecc. Script che si trovano nel contrib/completion cartella di questo repository.

Il check-check di cui sopra mi restituisce la cartella desiderata, ma sembra avere una struttura a file nidificata:

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

È possibile attirare i file invece nella directory genitore in questo modo?

git-completion/git-completion.bash
È stato utile?

Soluzione

Puoi farlo con git show:

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

Nel tuo caso specifico:

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

Ripeti per ogni file che desideri checkout. Anche se, davvero, il motivo delle sottodirectory, penso, è che quando questi vengono raggruppati in a git rilascio, sono messi nel contrib/completion sottodirectory, quindi potrebbe essere meglio abituarsi al layout del repository ...

Altri suggerimenti

A seconda di ciò che stai cercando di realizzare hai due opzioni. Se vuoi essere in grado di tracciare le modifiche ai file ancora, allora commetterei collegamenti simbolici. Se non ti interessa le modifiche locali, allora lo userei git archive.

Commettere symlinks

Puoi impegnarti in sintonia nei file a cui tieni, utilizzare anche il checkout di riserva per ottenere quelli.

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

Ciò ti permetterà di modificare i file e di commettere ancora modifiche.

Archivio Git

Questo semplicemente estraggerà il contenuto che stai cercando. Le modifiche non verranno monitorate nel repository.

# 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: sembra github non supporta git archive --remote. È ancora incluso di seguito nel caso in cui qualcuno stia utilizzando un servizio di hosting diverso che lo consente.

Archivio git con - -REMOTE

Utilizzando l'archivio Git, puoi persino scaricare le modifiche direttamente da un repository remoto senza clonare prima il repository. Il rovescio della medaglia è che non è possibile tenere traccia dei cambiamenti locali con 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 -

Ora avrai i file nella directory corrente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top