Git синхронизация репозитория между компьютерами при перемещении?
Скажем, что у меня есть настольный компьютер и ноутбук,
и иногда я работаю на рабочем столе, а иногда я работаю на ноутбуке.
Каков самый простой способ перемещения репозитория git назад и вперед?
Я хочу, чтобы репозитории git были идентичными,
так что я могу продолжить, где я оставил на другом компьютере.
Я хотел бы убедиться, что у меня есть те же ветки и теги на обоих компьютерах.
Спасибо
Johan
Примечание. Я знаю, как это сделать с SubVersion, но мне интересно, как это будет работать с git. Если это проще, я могу использовать третий компьютер как классический сервер, с которым могут взаимодействовать два компьютера:
Примечание. Оба компьютера работают под управлением Linux.
Обновление
Итак, попробуйте идею XANI: s с открытым репо на git на сервере,
и синтаксис команды push от KingCrunch.
В этом примере есть два клиента и один сервер.
Итак, сначала создайте серверную часть.
ssh [email protected]
mkdir -p ~/git_test/workspace
cd ~/git_test/workspace
git --bare init
Итак, с одного из других компьютеров я пытаюсь получить копию репо с клоном:
git clone [email protected]:~/git_test/workspace/
Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/
warning: You appear to have cloned an empty repository.
Затем перейдите в это репо и добавьте файл:
cd workspace/
echo "test1" > testfile1.txt
git add testfile1.txt
git commit testfile1.txt -m "Added file testfile1.txt"
git push origin master
Теперь сервер обновляется с помощью файла testfile1.txt.
В любом случае, посмотрим, можем ли мы получить этот файл с другого компьютера.
mkdir -p ~/git_test/repo2
cd ~/git_test/repo2
git clone [email protected]:~/git_test/workspace/
cd workspace/
git pull
И теперь мы видим тестовый файл.
На этом этапе мы можем отредактировать его с некоторым количеством контента и снова обновить сервер.
echo "test2" >> testfile1.txt
git add testfile1.txt
git commit -m "Test2"
git push origin master
Затем мы возвращаемся к первому клиенту и делаем git pull для просмотра обновленного файла.
И теперь я могу перемещаться между двумя компьютерами,
и добавьте третий, если мне нравится.
Ответы
Ответ 1
Я думаю, есть несколько подходов. Я просто опишу, как я справляюсь с этим
У меня есть один нетбук как сервер 24/7, содержащий несколько git -репозиторий. From/To там я нажимаю и вытягиваю изменения через SSH. Для доступа извне я использую dyndns.org. Он отлично работает, особенно потому, что у меня есть более двух систем, которым необходим доступ к некоторым репозиториям.
Обновление: маленький пример.
Допустим, мой нетбук называется "нетбук". Я создаю репозиторий там
$ ssh [email protected]
$ cd ~/git
$ mkdir newThing
$ cd newThing
$ git init --bare
На моем рабочем столе я создам клон. Возможно, я добавлю несколько файлов.
$ git clone [email protected]:/home/username/git/newThing
$ git add .
$ git commit -m "Initial"
$ git push origin master
На моих портативных устройствах я (сначала) сделаю то же самое, но для удаленного доступа (вне моей локальной сети) я также добавлю внешний адрес.
$ git clone [email protected]:/home/username/git/newThing
$ git remote add externalName [email protected]:/home/username/git/newThing
$ git pull externalName master
Работает только то, как работает git (/git workflows). Вы можете добавить столько удаленных репозиториев, сколько захотите. Это не имеет значения, если два или более относится к тем же "физическим" хранилищам. Вам не нужен собственный локальный "сервер", вы можете использовать любой общедоступный сервер, к которому у вас есть ssh-доступ. И, конечно, вам вообще не нужен общедоступный сервер, если вам не нужен доступ извне. Голый репозиторий также может быть на настольной системе, и затем вы можете создать рабочий-копий-репозиторий в локальной файловой системе.
$ mkdir myRepo; cd myRepo
$ git init --bare
$ cd /path/to/myProject
$ git remote add origin /path/to/myRepo
$ git add .; git commit -m "Initial"; git push origin master
Вот так, как я справляюсь с этим, и я для него это работает отлично (если не идеально;))
Что-то читать: http://progit.org/
Действительно хорошая книга.
Ответ 2
Я бы клонировал репо из одного окна в другое, а затем настроил два репозитория, чтобы я мог просто git fetch
из другого поля.
Переименование пульта дистанционного управления с origin
на имя другого поля упрощает чтение удаленных ветвей.
Обратите внимание, что просто используя git fetch
(а не git push
), это хорошо работает с не-голыми репозиториями:
[[email protected] repo]$ git fetch -v bar
[[email protected] repo]$ git fetch -v foo
Ответ 3
Самый простой способ: центральное репо, созданное с помощью --bare (так что не извлеченных файлов, только .git) или github
"Distributed" будет выглядеть так:
Установка:
- На ноутбуке: git удаленный добавить рабочий стол ssh://user @desktop/home/user/repo/path
- На рабочем столе: git удаленный добавочный ноутбук ssh://user @laptop/home/user/repo/path
Синхронизация:
git тянуть ноутбук/рабочий стол (толчок не очень хорошо работает на не-голых репозиториях, потому что git не будет изменять извлеченные файлы при нажатии на удаленное репо)
Или, сделайте репо на pendrive;)
Ответ 4
Как просто использовать rsync
?
Ответ 5
Не могли бы вы просто создать удаленный репозиторий на GitHub, BitBucket или GitLab? (Последние две компании предлагают неограниченные бесплатные частные репозитории). Когда вы закончите день за работой, просто используйте git push
, чтобы направить свои изменения на дистанционное репо. Когда вы вернетесь домой, просто git pull
, чтобы вытащить свои изменения с работы на ваш домашний компьютер. Аналогично, когда вы закончите дома, сделайте git push
, а затем, когда вы вернетесь на работу, сделайте git pull
.
Ответ 6
Ну, вы можете нажать и потянуть (через Git) на сервер, который вы могли бы настроить. Или вы можете сохранить свои репозитории в GitHub и использовать это как мост синхронизации.
Ответ 7
Вы можете сделать репозиторий на любом из ваших компьютеров, возможно, на рабочем столе, и нажимать на него как с ноутбука, так и на себя.