Мелкий клон не может получать новые коммиты / ветки? - PullRequest
0 голосов
/ 17 мая 2019

У меня есть это:

git clone --depth=1 <repo> app
cd app
git fetch origin
git checkout a119b1076dd45a88a3609c4f7893ef3d82f9a4ee

но там написано:

fatal: reference is not a tree: a119b1076dd45a88a3609c4f7893ef3d82f9a4ee

если я использую название филиала:

 git checkout me/work

Я получаю:

error: pathspec 'me/work' did not match any file(s) known to git.

это потому что я сделал мелкий клон? не имеет большого смысла для меня. Коммит находится на удаленном компьютере, по крайней мере ветвь / коммит с таким именем находится на удаленном компьютере.

Обновление:

Итак, я добавил --all к git fetch --all, а затем набрал git branch -vv --all, и я вижу:

* master                4761f83 [origin/master] timeline event update date should not be the review date.  Every time it is inserted or updated the update date should be the current utc date
  remotes/origin/HEAD   -> origin/master
  remotes/origin/master 4761f83 timeline event update date should not be the review date.  Every time it is inserted or updated the update date should be the current utc date

так что ветки нет в этом списке , если это поможет кому-то помочь мне.

Ответы [ 4 ]

2 голосов
/ 17 мая 2019

Мелкий клон тоже есть, по умолчанию , однолучевой клон :

- глубина
Создайте неглубокий клон с историей, усеченной до указанного количества коммитов. Подразумевает --single-branch если только ...

Клон single-branch - это то, что он говорит: клон, который копирует только одну ветвь из восходящего потока. (Основным механизмом является использование по умолчанию fetch refspecs, поэтому вы можете временно переопределить его для одной выборки, указав refspecs.)

Если вы хотите, чтобы мелкий клон копировал более одной ветви, вы должны преобразовать его в клон не с одной ветвью или запустить как клон с не одной ветвью. Чтобы начать как единое целое, продолжайте читать остальную часть цитируемого предложения. Чтобы заменить существующий клон с одной ветвью на клон с двумя, тремя или всеми ветвями, см. Как "отменить" клон --single-branch?

2 голосов
/ 17 мая 2019

Как сказано в документации для --depth,

подразумевает --single-branch, если не указано --no-single-branch

, поэтому, если вы хотите

для извлечения историй у кончиков всех ветвей

дайте --no-single-branch вашему клону или для одноразовой коррекции сделайте сами,

git fetch --depth=1 origin +refs/heads/*:refs/remotes/origin/*

или задним числом отключить установку с одной веткой

git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*

, а затем git fetch.

2 голосов
/ 17 мая 2019

Когда вы делаете мелкий клон, вы можете указать ветку, которую собираетесь получить:

git clone --depth=1 --branch=me/work <repo> app
0 голосов
/ 17 мая 2019

Я думаю, что этот способ работает, если вы делаете мелкий клон

git fetch origin me/work
git checkout -b temp FETCH_HEAD
...