Как удалить subversion remote в git?
У меня есть git-репозиторий, который был изначально создан с использованием git-svn. Теперь у меня есть git-сервер, на который я нажимаю, и хранилище svn потеряно. Могу ли я удалить svn пульт? Как?
4 ответа
Вы можете редактировать .git/config
файл и удалите раздел, связанный с пультом, который вы хотите удалить.
Строки, которые вы хотите удалить, могут выглядеть примерно так:
[svn-remote "svn"]
url = url-of-svn-repository/trunk
fetch = :refs/remotes/git-svn
Это удалит пульт из Git, но вы все равно будете иметь связь между коммитами Git и коммитами SVN, хранящимися в .git/svn
, Вы можете удалить весь этот каталог, если хотите избавиться от всех ваших пультов SVN. Если вы хотите избавиться только от одного SVN-пульта и оставить другие, вам нужно будет посмотреть на структуру каталогов и удалить только те, которые связаны с удаленным вами удаленным.
Делаем это через большинство *nix-оболочек, bash или mingw32:
cd ~/your_repo
git config --remove-section svn
или любой другой раздел, который у вас есть при просмотре конфигурации (cat .git/config
). Например, следующая строка удалит тот же раздел конфигурации, который описан в решении Эрика:
git config --remove-section svn-remote.svn
затем удалите все svn вещи внутри .git
папка (svn, logs и refs). Что и предлагает Сергей.
rm -rf .git/svn .git/{logs/,}refs/remotes/{git-,}svn/
Сборка мусора просто для хорошей меры:
git gc
Ответ Эрика правильный, но не полный. Даже после комментария Рафаэля Рапосо. Я хотел бы прокомментировать ответ, а не публиковать новый, но по правилам вы не можете комментировать, пока не наберете 50 репутации.
Дополнение:
find .git -type f -exec grep -nH git-svn "{}" \;
Мне показали, что у меня есть ссылки в этих двух файлах:
./.git/info/refs:4:fd34a5c...8073f3 refs/remotes/git-svn
./.git/packed-refs:5:fd34a5...cd6c33 refs/remotes/git-svn
Пока я не удалил эти ссылки, я мог видеть, как git-svn делает git log
Если у вас нет локальной конфигурации, и вы хотите отказаться от использования в .git
каталог, просто клонируйте репозиторий git с удаленного git в новый каталог и удалите старый каталог.
Если у вас есть какая-то простая локальная конфигурация (например, другой пользователь / электронная почта для вашей глобальной конфигурации), вероятно, все еще проще сделать это, а затем восстановить любую локальную конфигурацию после клонирования.