Pergunta

Empréstimo de alguns tutoriais, sou capaz de fazer uma compra escassa de uma pasta específica em um repositório 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

Por exemplo, digamos que estou depois do git-completion.bash, git-completion.tcsh, etc. scripts que estão no contrib/completion Pasta deste repo.

A verificação esparsa acima me devolve a pasta desejada, mas parece ter uma estrutura de arquivo aninhada:

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

É possível puxar os arquivos no diretório pai como assim?

git-completion/git-completion.bash
Foi útil?

Solução

Você pode fazer isso com git show:

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

No seu caso específico:

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

Repita para cada arquivo que deseja fazer checkout. Embora, na verdade, a razão para os subdiretos, eu acho, é que quando estes são agrupados em um git lançamento, eles são colocados no contrib/completion Subdiretório, então pode ser melhor se acostumar com o layout do repositório ...

Outras dicas

Dependendo do que você está tentando realizar, você tem duas opções. Se você deseja rastrear alterações nos arquivos ainda, eu comprometeria symblinks. Se você não se importa com mudanças locais, eu usaria git archive.

Comprometa -se symblinks

Você pode se comprometer com os arquivos com os quais se preocupa, use a compra sobressalente para obtê -los também.

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

Isso permitirá que você edite os arquivos e cometam alterações ainda.

Arquivo Git

Isso simplesmente extrairá o conteúdo que você está procurando. As alterações não serão rastreadas no repositório.

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

Editar: parece github não suporta git archive --remote. Ainda está incluído abaixo, caso alguém esteja usando um serviço de hospedagem diferente que o permita.

Arquivo Git com - -Remote

Usando o Git Archive, você pode até baixar as alterações diretamente de um repositório remoto sem clonar o repositório primeiro. A desvantagem é que você não pode rastrear alterações locais com o 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 -

Agora você terá os arquivos no diretório atual.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top