Когда вы делаете репозиторий в git, как вы делаете локальный пул? - PullRequest
2 голосов
/ 18 ноября 2009

У меня есть сервер, на котором я настроил Git-репозиторий. От своих клиентов я могу выполнить

git pull origin

и

git push origin

и мои изменения правильно отправлены на удаленный сервер Git. Мне также нужна возможность оформить заказ на самом сервере. Я не использовал init --bare при настройке, потому что явно хотел иметь рабочую копию и на сервере.

Когда я запускаю git pull , я получаю сообщение fatal: Откуда вы хотите получить его сегодня? Как я могу проверить последние изменения в моей локальной рабочей копии на сервере?

Ответы [ 3 ]

8 голосов
/ 18 ноября 2009

Исправление рабочей копии в соответствии с последними внесенными изменениями

git checkout HEAD

Может быть, то, что вы ищете.

Нажатия от клиента изменяют индекс, а не рабочие файлы, поэтому у вас есть рабочие файлы, которые остаются неизменными, пока git-запись событий продвигается вперед. Для того, чтобы просто стереть рабочие файлы в пользу последнего воплощения, вы извлекаете последнюю версию, которая была отправлена ​​на сервер.

... Edit:

Использование двух ненастроенных репозиториев

Я только что понял, что дал вам информацию, чтобы понять проблему (индекс изменяется неявно, но рабочие файлы изменяются только явно), но это не обязательно лучший способ ее исправить. Вот что я сделал в прошлом, и что я предлагаю, если вы не хотите подключать центральное хранилище:

На сервере:

git branch staging
git checkout staging

На клиентском компьютере:

Hack away at some changes in master, then push to the server.

на сервере: git rebase master (явно обновляет вашу промежуточную ветку, чтобы соответствовать обновленному индексу.)

Наконец, если вы хотите вносить изменения на сервере (исправления ошибок, что у вас есть), вы также захотите синхронизировать эти изменения до мастер-уровня, что вы можете сделать:

На сервере:

Commit changes made on the staging branch.
git rebase master
git checkout master
git rebase staging
git checkout staging

И вот, каждый коммит в master будет в промежуточной стадии, и каждый коммит, который был сделан в промежуточной ветви, будет последним коммитом в master.

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

Чистое использование центрального репо-чума

Как правило, несмотря на то, что 2 точки в сети кажутся простейшими, наличие «централизованного» «голого» хранилища часто проще, оно позволяет вам всегда как перемещать, так и извлекать данные в это место, не задумываясь об этом. По этой причине я также рекомендую преимущества визуализации веб-кода, которые вы можете получить по адресу github.com (бесплатно для материалов с открытым исходным кодом, я использую его для всего, что я делаю в наши дни).

1 голос
/ 18 ноября 2009

Я думаю, что нет удаленного набора.

С помощью git remote add <remotename> <address> вы можете добавить удаленный репозиторий. <remotename> - это просто имя, которое вы ему даете, а address - это адрес хранилища, из которого вы хотите извлечь.

0 голосов
/ 18 ноября 2009

Вы говорите, что:

Я не использовал init --bare при установке это, потому что я явно хотел иметь рабочую копию на сервере как хорошо.

Предположим, что этот репозиторий находится на сервере в $REPO_DIR.

Хотите открыть на сервере оболочку, с cd по $REPO_DIR и отредактировать там код? Если это так, то вам не нужно тянуть с любого пульта. Это основная копия хранилища. Вы можете просто отредактировать код, а затем git add . и git commit.

Если вы хотите создать локальную копию этого репо, скажем, по номеру /home/user/my_repo, то вам нужно от cd до /home/user и запустить git clone $REPO_DIR. Это создаст удаленную ссылку, которая позволит вам нажимать и тянуть с $REPO_DIR. Затем, когда вы закончите со своими изменениями, вы можете отправить их на пульт.

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