Как вытащить конкретный каталог с помощью git

У меня есть проект с git, и я просто хочу клонировать или тянуть определенный каталог, например myproject/javascript, как и подрывная деятельность.

внести некоторые изменения, зафиксировать и отодвинуть назад.

Это возможно?

+165
источник поделиться
10 ответов
  1. CD в верхней части вашей копии репо
  2. git fetch
  3. git checkout HEAD path/to/your/dir/or/file

    • Где " path/... " в (3) начинается с каталога чуть ниже корня репозитория, содержащего ваш " .../file "

    • Обратите внимание, что вместо "HEAD" можно использовать хеш-код определенного коммита, и тогда вы получите ревизию (файл) или ревизии (dir), специфичные для этого коммита.

+190
источник

В пустой каталог:

git init
git remote add [REMOTE_NAME] [GIT_URL]
git fetch REMOTE_NAME
git checkout REMOTE_NAME/BRANCH -- path/to/directory
+84
источник
другие ответы

Связанные вопросы


Похожие вопросы

После долгих поисков ответа, не найдя, не сдавшись, не попробовав снова и так далее, я, наконец, нашел решение для этого в другом потоке SO:

Как git -pull все, кроме одной папки

Чтобы скопировать то, что там:

git init
git remote add -f origin <url>
git config core.sparsecheckout true
echo <dir1>/ >> .git/info/sparse-checkout
echo <dir2>/ >> .git/info/sparse-checkout
echo <dir3>/ >> .git/info/sparse-checkout
git pull origin master

Чтобы сделать то, что хочет OP (работайте только с одним каталогом), просто добавьте этот один каталог в .git/info/sparse-checkout, выполнив описанные выше шаги.

Большое спасибо @cforbish!

+28
источник

Это невозможно. Вам нужно вытащить весь репозиторий или ничего.

+13
источник

Возможно, эта команда может быть полезна:

git archive --remote=MyRemoteGitRepo --format=tar BranchName_or_commit  path/to/your/dir/or/file > files.tar

"Et voilà"

+9
источник

Я вижу. Я попробую создать подмодули и посмотреть, работает ли для меня. Я сообщу результаты. РЕДАКТИРОВАТЬ: для меня разработаны редкие проверки и подмодули. Ссылки, которые я использовал для чтения (данные VonC и Michel Jansen):

Как git -pull все, кроме одной папки

http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout

http://vmiklos.hu/blog/sparse-checkout-example-in-git-1-7

http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout

git обновление подмодуля

+4
источник

git clone --filter из Git 2.19

Эта опция фактически пропускает выборку ненужных объектов с сервера.

Я написал подробный ответ, объясняющий текущий статус поддержки: Как мне клонировать только подкаталог репозитория Git?

Весьма вероятно, что все, что будет реализовано для git clone в этой области, также будет иметь аналоги git pull.

+4
источник

Шингара прав. Объяснение этого поведения приведено в этот поток списка рассылки. Если вы действительно хотите это сделать, вы можете сделать javascript dir подмодулем.

0
источник

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

В таком случае так же легко сделать клон репозитория и проверить конкретную фиксацию, которую вы заинтересовали, и посмотреть на подкаталог в этом клонированном репозитории. Поскольку все локально, вы можете просто удалить этот клон, когда закончите.

0
источник

Если вы хотите получать последние изменения в каталоге, не вводя его, вы можете сделать следующее:

$ git -C <Path to directory> pull
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос