Як видалити походження з сховища git


279

Основне питання: Як я відмежую git repo від походження, з якого його клонували?

git branch -a показує:

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

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

Питання довше: я хочу взяти існуючу реверсію на підрив і зробити з неї кілька менших git repos. Кожна з нових git repos повинна мати повну історію лише відповідної галузі. Я можу підрізати репо до лише потрібного піддерева, використовуючи:

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

але результуюче репо все ще містить всі версії відкинутих підрядок під гілкою "origin / master".

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

Відповіді:


476

Досить прямо:

git remote rm origin

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

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

1
Дякую. Це було те, --prune-emptyщо я пропав безвісти.
awy

2
Хм. отриманняerror: Could not remove config section 'remote.origin'
Діма Літуєв

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.