`git pull` уничтожает репозиторий git и усекает файлы
Я помещаю рабочие файлы в репозитории Git и синхронизирую между компьютерами / ноутбуками, используя внешний SSD. Так, например, если я хочу синхронизировать repo1
от моего ПК до моего ноутбука, вот шаги, которые сделаны:
- подключите и смонтируйте внешний SSD на ПК
- на ПК:
cd /media/externalssd/repo1 && git pull ~/repo1
- отключить и отключить внешний SSD на ПК
- подключите и установите внешний SSD на ноутбук
- на ноутбуке:
cd ~/repo1 && git pull /media/externalssd/repo1
Дополнительная информация: я использую ZFS на Linux с помощью zfs-fuse
,
Иногда, в середине тяги, подключение USB-кабеля не является хорошим, поэтому файловая система "отключена" или иногда zfs-fuse
демон умирает. После перезапуска zfs-fuse
и перемонтируйте файловые системы, иногда я получаю несколько усеченных файлов на ноутбуке, а репозиторий на ноутбуке больше не распознается как git-репозиторий ("fatal: не git-репозиторий (или любой родительский объект до точки монтирования / л)"). И иногда хранилище на SSD также повреждается.
Это пугает меня.
Какой элемент (ы), вероятно, усекает файлы? SSD? Linux? zfs-fuse
? Git? Как я должен избежать этого повреждения и иметь надежный процесс синхронизации?
1 ответ
Для меня это звучит так, как будто у вас проблемы с надежностью подключения SSD, что само по себе вызовет проблемы с любым программным обеспечением, которое ищет для чтения или записи с этого диска. В вашем случае это программное обеспечение git
,
Если вы не можете доверять своим соединениям при переходе с устройства на устройство, вам, вероятно, следует пересмотреть свой рабочий процесс.
Исходя из вышеприведенной информации, я считаю, что ваш ПК и ноутбуки находятся в одном месте или, по крайней мере, могут быть подключены к одной и той же локальной сети. Почему вы не можете подключить SSD к ПК постоянно, а затем использовать git для передачи / извлечения файлов по сети? Это решение должно быть относительно быстрым, чем замена USB-накопителя, для всех целей и задач управления версиями файлов.