Как удалить 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 в новый каталог и удалите старый каталог.

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

Другие вопросы по тегам