Как редко получить только один файл из репозитория git?

Вы получаете эту ошибку, если у вас есть ограничение T как class

402
задан Ciro Santilli 新疆改造中心996ICU六四事件 12 September 2018 в 09:09
поделиться

5 ответов

Первоначально я упоминал в 2012 году git archive (см. Джаред Форсайт ] ответ и Роберт Найт ответ ), поскольку git1.7.9.5 (март 2012) , Пол Браннан ответ :

git archive --format=tar --remote=origin HEAD:path/to/directory -- filename | tar -O -xf -

Но: в 2013 году это было невозможно для удаленных URL https://github.com .
См. Старую страницу « Могу ли я заархивировать репозиторий? »

Текущая (2018 г.) страница « Об архивировании содержимого и данных на GitHub » рекомендует использовать сторонние службы, такие как GHTorrent или GH Archive .


Таким образом, вы также можете иметь дело с локальными копиями / клонами:

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

git --no-pager --git-dir /path/to/bar/repo.git show branch:path/to/file >file

Или вы сначала необходимо клонировать репо, то есть вы получите полную историю: - в.git repo - в рабочем дереве.

  • Но затем вы можете выполнить разреженную проверку (если вы используете Git1.7 +):
    • включить параметр разреженной проверки ( git config core.sparsecheckout true )
    • добавление того, что вы хотите видеть в .git / info / sparse-checkout файле
    • повторное чтение рабочего дерева, чтобы отображать только то, что вам нужно

Чтобы перечитать рабочее дерево:

$ git read-tree -m -u HEAD

Таким образом, вы получите рабочее дерево, включающее именно то, что вам нужно (даже если это только один файл)

{{1} }
244
ответ дан 22 November 2019 в 23:26
поделиться

мерзавец подмодуль является самым безопасным путем.

-1
ответ дан 4 October 2019 в 00:24
поделиться

Похоже, вы пытаетесь перенести идею из централизованного контроля версий, чего git по своей природе не является - он распространяется. Если вы хотите работать с репозиторием git, вы его клонируете. Затем у вас есть все содержимого рабочего дерева и все истории (ну, по крайней мере, все, что ведет к вершине текущей ветви), а не только одну файл или снимок из одной фиксации.

 git clone /path/to/repo
 git clone git://url/of/repo
 git clone http://url/of/repo
1
ответ дан 22 November 2019 в 23:26
поделиться

В git вы не "проверяете" файлы перед их обновлением - похоже, это то, что вам нужно.

Многие системы, такие как clearcase, csv и т.д., требуют, чтобы вы "проверили" файл, прежде чем вносить в него изменения. Git не требует этого. Вы клонируете репозиторий, а затем вносите изменения в свою локальную копию репозитория.

После обновления файлов вы можете сделать следующее:

git status

Посмотреть, какие файлы были изменены. Вы добавляете те, которые хотите зафиксировать в index сначала с помощью (index - это как список для проверки):

git add .

или

git add blah.c

Затем сделайте git status, и вы увидите, какие файлы были изменены, а какие находятся в index, готовые к фиксации или проверке.

Для фиксации файлов в вашей копии репозитория сделайте следующее:

git commit -a -m "commit message here"

Ссылки на руководства и руководства смотрите на git сайте.

4
ответ дан 22 November 2019 в 23:26
поделиться

Сначала клонируйте репозиторий с параметром -n, который подавляет проверку всех файлов по умолчанию, и параметром --depth 1, что означает получение только самой последней версии каждого файла

git clone -n git://path/to/the_repo.git --depth 1

Затем проверьте только файл, который вы хотите, например:

cd the_repo
git checkout HEAD name_of_file
188
ответ дан 22 November 2019 в 23:26
поделиться
Другие вопросы по тегам:

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