Как удалить происхождение из репозитория git

280

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

git branch -a шоу:

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

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

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

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

но результирующее репо все еще содержит все ревизии отброшенных ныне поддеревьев в ветке origin / master.

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

авиалиния
источник

Ответы:

477

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

git remote rm origin

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

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD
янтарный
источник
1
Спасибо. Это было то, --prune-emptyчего мне не хватало.
авиалиния
2
Хм. получениеerror: Could not remove config section 'remote.origin'
Дима Lituiev
5

Удалить существующий источник и добавить новый источник в каталог вашего проекта

>$ git remote show origin

>$ git remote rm origin

>$ git add .

>$ git commit -m "First commit"

>$ git remote add origin Copied_origin_url

>$ git remote show origin

>$ git push origin master
Мандип Сингх Джилл
источник