Добавить в корзинуПозвонить
Найти в Дзене
Герман Геншин

Как я забыл о GitHub и настроил молниеносную синхронизацию файлов между компьютерами без риска утечек!

Оглавление

Я давно работаю удалённо и постоянно переключаюсь между домашним ПК и ноутбуком — для меня это обычный рабочий процесс. Мне неважно, с какого устройства работать, если соблюдены всего пару важных условий.

Самое главное — всегда иметь актуальные файлы проектов под рукой. До этого все мои попытки организовать удобную синхронизацию были неидеальны. Но с Git этот вопрос наконец перестал быть головной болью.

Почему я выбрал Git для личной синхронизации файлов?

Конечно, есть и другие варианты: сетевые папки, ssh, rsync — что угодно. Но почему именно Git стал для меня оптимальным решением?

Дело в том, что с Git я давно на ты: пользуюсь им каждый день, настроил под себя и даже понимаю, как он устроен изнутри. Git — давно стандарт для работы с версиями, под него есть масса удобных инструментов и утилит. Пусть кажется, что всё сложно — на самом деле он идеально справляется с задачей синхронизации.

-2

Плюс, мне важно видеть историю изменений: так проще отслеживать, что было сделано, и при случае легко откатиться назад. С Git это автоматически превращается ещё и в отличное резервное копирование. А если его можно использовать, чтобы быстро синхронизироваться между устройствами — это вообще находка!

Иногда ради простого обмена файлами я загружаю их в Google Drive, но облако бывает нестабильным и зачастую процесс отнимает намного больше времени. А использование флешек и внешних дисков — лишние хлопоты ради элементарной задачи.

Почему я отказался от GitHub?

Многие просто создают репозиторий на GitHub — да, удобно, сервис всегда под рукой, достаточно лишь интернета.

-3

Но есть пара моментов, которые меня отталкивают. Во-первых, даже у крупных сервисов случаются сбои и падения. Во-вторых, мне не по душе идея хранить личные и рабочие данные у стороннего провайдера — а вдруг случайно отправлю в репозиторий пароль или ещё какой-нибудь секрет?

Да, можно сделать репозиторий приватным, но зачем вообще приглашать третью сторону? Я не использую совместную разработку и таск-менеджмент GitHub, мне этот функционал просто не нужен. Всё можно сделать проще и надёжнее.

Как синхронизировать файлы с помощью Git

Решение оказалось на удивление простым: нужен только локальный Git. Никаких облаков, просто синхронизация по домашней сети — быстро, безопасно и без «танцев с бубном».

Вся настройка занимает буквально минуты, а чуть позже процесс вообще станет привычной рутиной.

Включаем удалённый доступ по SSH

Для начала нужно организовать SSH-доступ к одному из компьютеров, который станет «главным» для репозитория. В macOS эта функция называется «Удалённый вход», в других системах — свои названия, но суть не меняется. Всё просто: настроить достаточно только на том устройстве, где будет лежать ваш репозиторий.

-4

Теперь можно подключаться к этому компьютеру через командную строку с помощью одной простой команды:

Назначаем статический IP-адрес

Этот шаг зависит от вашей домашней сети. Если у вас уже настроен свой DNS, можно пропустить. Я же пошёл простым путём: просто назначил постоянный IP вручную. Это легко делается через панель управления роутером — понадобится буквально пара кликов.

-5

Главное — чтобы постоянный адрес был у хост-машины. Другие компьютеры можно тоже прописать, если хочется полной стабильности.

Генерируем SSH-ключи

Чтобы каждый раз не вводить логин и пароль, советую сразу создать SSH-ключ для каждого клиента. Это делается один раз, и синхронизация потом будет работать без лишних вопросов.

Команда для генерации ключа — ssh-keygen:

Укажите имя для файла и, если хотите, задайте пароль для большей безопасности. После генерации нужно отправить публичный ключ на сервер вот так:

После чего проверьте, что соединение работает корректно:

Создаём «голый» репозиторий

Этот способ надёжнее и проще всего в настройке. На главном компьютере создайте отдельную папку (желательно не перемещать её в будущем). Затем выполните:

В «голом» репозитории все служебные файлы Git (HEAD, config и др.) лежат прямо в созданной папке, а не в поддиректории .git, как обычно.

Описание ниже подходит для создания нового репозитория. Если у вас уже есть проект — обратите внимание на команду git clone --bare.

Клонируем репозиторий на все устройства

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

На остальных — понадобится логин и IP-адрес компьютера, где репозиторий.

В моём случае получилось так:

После этого репозиторий появится на компьютере, как будто бы вы подключились к GitHub — всё настолько же просто.

Работаем, как привыкли: add, commit, push!

Дальше всё идёт по знакомому сценарию: правите файлы, сохраняете результат и время от времени коммитите изменения через git commit.

Обязательно делайте git push после работы или когда собираетесь уйти из-за компьютера. Начав день на другом устройстве, первым делом выполните git pull — так все изменения тут же окажутся на месте.

Хотите больше — подпишитесь: выжимки и лайфхаки по быстрой работе с Git!

Хотите больше — подпишитесь: выжимки и лайфхаки по быстрой работе с Git!

Подписываясь, вы получаете наши лучшие советы и полезные рассылки. Отписаться можно в любой момент.

Естественно, если весь день вы работаете только на одном компьютере, можно не торопиться с синхронизацией. Но если пустить это в привычку — ваши файлы всегда будут актуальны и доступны где угодно.

А для полного удобства можно автоматизировать git-задачи с помощью cron — синхронизация будет идти сама, а вы вообще забудете о том, что когда-то постоянно переносили файлы вручную. Особенно круто это работает, если компьютер не выключается и рабочий ритм довольно стабильный.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: