Sparse Git Checkout файлов в родительский каталог

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

  •  28-07-2022
  •  | 
  •  

Вопрос

Заимствовав из нескольких учебных пособий, я могу сделать редкую проверку определенной папки в репо.

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 подкаталог, так что может быть лучше привыкнуть к макете репозитория ...

Другие советы

В зависимости от того, что вы пытаетесь достичь, у вас есть два варианта. Если вы хотите иметь возможность отслеживать изменения в файлах, то я бы познакомил сочувствия. Если вы не заботитесь о местных изменениях, то я бы использовал git archive.

Совершать символики

Вы можете посвятить себя символическим ссылкам, которые вы заботитесь о файлах, используйте запасную проверку, чтобы получить их.

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

Это позволит вам отредактировать файлы и все еще совершать изменения в них.

Git archive

Это просто извлечет контент, который вы ищете. Изменения не будут отслеживать в репозитории.

# 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. Анкет Он все еще включен ниже в случае, если кто -то использует другую службу хостинга, которая позволяет это.

Git archive с - -рекот

Используя архив 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 -

Теперь у вас будут файлы в текущем каталоге.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top