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

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

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

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

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

Ответ 1

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

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

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

Ответ 2

Вы не должны делать переадресацию, если вы намерены извлечь из другого репо.

Если вы не против переопределять изменения в своем сетевом ресурсе, вы можете сделать это:

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

Это будет reset локальный мастер для начального мастера.

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

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

* Примечание: технически говоря, совершенные изменения не теряются до тех пор, пока они не истекут из рефлога, но, во всех смыслах и целях, они фактически потеряны.