2012-02-10 3 views
184

Основной вопрос: Как отключить репозиторий git из источника, из которого он был клонирован?Как удалить происхождение из хранилища git

git branch -a показывает:

* master 
    remotes/origin/HEAD -> origin/master 

и я хочу, чтобы удалить все знания о происхождении, а также связанные с ними изменения.

Более длинный вопрос: я хочу взять существующее репо subversion и сделать из него несколько небольших репозиториев git. Каждый новый git-репозиторий должен иметь полную историю только соответствующей ветви. Я могу подрезать репозиторий для всего разыскиваемого поддерева с помощью:

git filter-branch --subdirectory-filter path/to/subtree HEAD 

но в результате репо по-прежнему содержит все пересмотры теперь выброшенных поддерев под началом/мастер-отрасли.

Я понимаю, что я мог бы использовать флаг -T для git-svn, чтобы в первую очередь клонировать соответствующее поддерево рекурсии subversion. Я не уверен, что это было бы более эффективно, чем последующее выполнение нескольких экземпляров git filter-branch --subdirectory-filter на копиях git repo, но, в любом случае, я все равно хотел бы разорвать связь с источником.

ответ

311

довольно проста:

git remote rm origin 

Что касается filter-branch вопроса - просто добавить --prune-empty к вашей команде фильтра ветви, и она будет удалить любую версию, что на самом деле не содержит каких-либо изменений в вашем результате репо :

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD 
+1

Спасибо. Это было '--pune-empty', что я отсутствовал. – awy

+2

Хм. get 'error: Не удалось удалить раздел конфигурации 'remote.origin'' –

Смежные вопросы