Подтвердить что ты не робот

Push vs. bundle vs. tar zcvf - для резервного копирования всего локального .git

Я могу создать резервную копию моего локального .git, нажав его в репозиторий в два этапа:

git push --all ~/gitrepo
git push --tags ~/gitrepo

Я могу создать резервную копию, используя git пакет.

Я могу создать резервную копию, просто скопировав весь каталог или архивируя его (сжатый!):

tar -zcvf gitrepo.tgz .git

И есть, возможно, дополнительные способы резервного копирования всего локального .git.

Вопрос в том, действительно ли они эквивалентны? (например, подкаталог logs не нажат)

В чем преимущества метода git push и git bundle?

Может ли tar -zcvf считаться "идеальной резервной копией git"?

4b9b3361

Ответ 1

Относительно tar: он сохраняет все: конфигурацию (удаленные URL-адреса), блокировки и т.д. Возможно, вам захочется использовать блокировки, если вы случайно сделаете что-то действительно глупое в своем репозитории, а ваш жесткий диск вскоре выйдет из строя. Надуманный, но tar прост, и он делает все. Используйте tar для создания резервных копий, используйте git push для создания зеркал. Это разные задачи.

Что касается сжатия: у меня есть репозиторий 27M git, почти полностью открытый текст, а .tar.gz - это... также 27M. Это не большая экономия.

Ответ 2

Я использую Git bundle

git bundle create /tmp/backup.git --all --tags --remotes

Вы можете получить его, как если бы это было репо:

cd myworktree
git pull /tmp/backup.git

Но также см.


Полнота, примечания

Для полного резервного копирования (вещь git -rerere cache, stashes, hooks, файлы конфигурации) Я предлагаю использовать rsync

rsync -hxPavilyzH --stats --delete .git/ [email protected]:/repo/mirror.git/

В качестве альтернативы:

Ответ 3

Метод tar - это возможность, но он не будет проверять целостность сохраненного репо: вы не будете знать, будет ли это сжатое репо работать до тех пор, пока вы его не распакуете и не попытаетесь клонировать или извлечь из него.

Я предпочитаю подход clone --mirror (с включенными reflogs в результате голого репо).
И инкрементные резервные копии - это просто толчок.
Как обсуждалось в этом старом потоке, git stash до того, как резервная копия позволит вам сохранить больше (состояние индекса и рабочего дерева)