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

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