Git принудительно завершает синхронизацию с мастером - PullRequest
13 голосов
/ 25 мая 2010

Мое рабочее место использует Subversion для управления исходным кодом, поэтому я играю с git-svn для получения преимуществ от своих собственных веток, выполняю коммиты так часто, как хочу, не касаясь основного репо и т. Д.

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

Мой рабочий процесс заключается в том, чтобы работать с рабочего стола, вносить изменения, фиксировать и т. Д. В конце дня я хочу обновить репо на сетевом ресурсе со всеми моими текущими изменениями. Я настроил репо на сетевом ресурсе с помощью git clone repo_on_my_desktop, а затем обновил репо на сетевом ресурсе с помощью git pull origin master. Проблема, с которой я сталкиваюсь, заключается в том, что когда я использовал команду 'git rebase, чтобы сжать несколько коммитов до dcommitting в основной репозиторий SVN. Когда я делаю это, я получаю конфликты слияния в репозитории на сетевом ресурсе, когда я пытаюсь сделать резервную копию ночью.

Есть ли способ просто полностью синхронизироваться с репозиторием на моем рабочем столе, не выполняя новый git clone каждую ночь?

Ответы [ 2 ]

34 голосов
/ 25 мая 2010

Вам не следует делать ребазинг, если вы собираетесь извлекать из другого репо.

Если вы не возражаете против изменений в общей сетевой папке, вы можете сделать это:

git fetch origin master
git reset --hard origin/master

Это приведет к сбросу локального мастера к мастеру источника.

Предупреждение : это жесткий сброс, он потеряет все ваши изменения (зафиксированные * илинет).

Но я предполагаю, что у вас действительно нет никаких изменений, и это в основном просто резервная копия.

* Примечание: с технической точки зрения зафиксированные изменения не теряются, пока ониистекает из reflog, но, по сути, они фактически потеряны.

8 голосов
/ 25 мая 2010

Два комментария:

1 / Я бы рекомендовал использовать bare repo или bundle (один файл, более удобный для перемещения) для общего сетевого ресурса

2 / Я бы предпочел добавить network_repo в качестве удаленного к вашему репозиторию на рабочем столе и нажать оттуда (git push --force network_repo master): вы остаетесь в своем рабочем репо.

...