Давайте определим ваши репозитории:
- git-svn <- это хранилище Subversion в университете </li>
- uni / master <- это Git-репозиторий в вашем университете. Это просто «извлекаемый репозиторий», который получает последнюю историю из репозитория Subversion. </li>
- ноутбук / мастер <- это Git-репозиторий на вашем ноутбуке. Здесь ты работаешь. </li>
Я бы предложил следующую настройку:
Создайте uni / master , выполнив git svn clone
из git-svn .
Автоматически или регулярно обновляйте uni / master с последними изменениями от git-svn , выполняя git svn rebase
(запуск с фиксацией коммита, cron-job или вручную каждый раз, когда вы в универе).
Создание ноутбука / мастера путем клонирования uni / master . Здесь вы можете совершать локально так часто, как вы хотите. Когда вы учитесь в университете, получите последние изменения от uni / master , запустив git pull --rebase
(вам всегда нужно делать --rebase, чтобы сохранять историю линейной, потому что SVN не понимает git-ветки).
Если вы хотите перенести изменения с вашего ноутбука обратно на git-svn , вы должны сначала сконфигурировать git-svn remote на вашем ноутбуке / мастере :
git svn init https://url.to.uni-svn-repo
Теперь вы можете отправить свои последние изменения обратно в uni-svn с помощью git svn dcommit
Обратите внимание, что вам, возможно, придется сначала обновить ссылку на последний коммит в uni / master . первый:
git update-ref refs/remotes/git-svn refs/remotes/uni/master
НЕ пытайтесь протолкнуть ваш ноутбук / мастер на универ / мастер . Это принесет хаос, так как история перебазирования / переписывания просто запутает Git, когда он снова попытается синхронизировать с git-svn .
См. Также http://www.tfnico.com/presentations/git-and-subversion, где я начал собирать кучу советов по совместной работе с Git и SVN.