синхронизация файлов с сервером с помощью git - PullRequest
4 голосов
/ 08 февраля 2009

Git новичок здесь. Есть ли способ синхронизации двух репозиториев, чтобы текущие извлеченные файлы были самой последней версией всех изменений?

Что у меня есть это:

Desktop       Server
-------       ------
Change_X      Change_Y

И я хотел бы ввести некую «волшебную» команду, и тогда изменения объединятся

Desktop       Server
-------       ------
Change_X      Change_X
Change_Y      Change_Y

Одна из проблем заключается в том, что рабочий стол - это машина Windows за NAT, и я хотел бы избежать установки на нем sshd. В основном я хотел бы сделать все это с помощью ssh с рабочего стола на сервер.

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

(я думал, что git push справится с задачей, но оказывается, что она не вносит изменений в извлеченные в настоящий момент ветки, поэтому изменения с рабочего стола не попадают на сервер)

Есть ли способ сделать это с помощью git, или я не в курсе?

Решение: Я скачал скрипт пост-обновления с здесь и поместил его в каталог hooks на сервере, и теперь git push заставляет сервер обновляться с изменениями , Таким образом, в основном «магическая команда» разрешается:

git pull server:scripts/ master
git push server:scripts/

(scripts - папка, которую я синхронизирую)

Ответы [ 2 ]

3 голосов
/ 08 февраля 2009

должно быть возможно создать хук после фиксации, который будет обновлять рабочую копию сервера при изменении (я сделал то же самое с mercurial, поэтому я предполагаю, что это будет возможно и с git). поэтому после нажатия рабочая копия будет обновлена ​​автоматически.

создать хук после фиксации, который будет запускать git up или любую другую эквивалентную команду для git.
извините, я не знаю, что еще сказать.
upd : в официальном git faq .

есть объяснение.
1 голос
/ 08 февраля 2009

Одна из проблем заключается в том, что рабочий стол - это машина Windows за NAT, и я хотел бы избежать установки на нем sshd. В основном я хотел бы сделать все это с помощью ssh с рабочего стола на сервер.

Не прямой ответ на ваш вопрос, но если вы находитесь за NAT, проще всего запустить обратный SSH-туннель с использованием Putty или чего-то другого вместо sshd-сервера.

ssh -R3333:127.0.0.1:9418 <user>@<server>

Теперь соединения с <server> портом 3333 будут перенаправлены на git-порт вашей машины с NAT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...