Как удалить происхождение из репозитория git - PullRequest
223 голосов
/ 10 февраля 2012

Основной вопрос: как отсоединить git-репо от источника, из которого он был клонирован?

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

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

и я хочу удалить все знания оorigin и связанные с ним ревизии.

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

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

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

1 Ответ

384 голосов
/ 10 февраля 2012

Довольно просто:

git remote rm origin

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

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