Фон
(для tl; dr см. # вопросы ниже)
У меня есть несколько git-репозитория мелких клонов. Я использую неглубокие клоны, потому что они намного меньше по сравнению с глубокими клонами. Каждый клонируется с git clone --single-branch --depth 1 <git-repo-url> <dir-name>
.
Это прекрасно работает, за исключением того, что я не вижу, как его обновить.
Когда я клонирую по тегу, обновление не имеет смысла, так как тег является замороженным моментом времени (насколько я понимаю). В этом случае, если я хочу обновить, это означает, что я хочу клонировать другим тегом, поэтому я просто rm -rf <dir-name>
и клонирую снова.
Ситуация усложняется, когда я клонировал HEAD главной ветки, а потом захотел обновить ее.
Я попробовал git pull --depth 1
но, хотя я и не собираюсь ничего выдвигать в удаленный репозиторий, он жалуется, что не знает, кто я.
Я попробовал git fetch --depth 1
, но, хотя он, кажется, что-то обновляет, я проверил, что он не обновлен (некоторые файлы в удаленном репозитории имеют содержимое, отличное от того, что есть в моем клоне).
После qaru.site/info/8319/... я попробовал git fetch --depth 1; git reset --hard origin/master
git fetch --depth 1; git reset --hard origin/master
, но две вещи: во-первых, я не понимаю, зачем нужен git reset
, во-вторых, хотя файлы кажутся устаревшими, некоторые старые файлы остаются, а git clean -df
нет удали эти файлы.
Вопросы
Пусть клон создан с помощью git clone --single-branch --depth 1 <git-repo-url> <dir-name>
. Как обновить его для достижения того же результата, что и rm -rf <dir-name>; git clone --single-branch --depth 1 <git-repo-url> <dir-name>
rm -rf <dir-name>; git clone --single-branch --depth 1 <git-repo-url> <dir-name>
? Или rm -rf <dir-name>
и снова клонировать единственный путь?
Заметка
Это не дубликат Как обновить неглубокий клонированный субмодуль без увеличения размера основного репо, так как ответ не соответствует моим ожиданиям, и я использую простые репозитории, а не субмодули (о которых я не знаю).