Jak usunąć pochodzenie z repozytorium git

279

Podstawowe pytanie: jak oddzielić repozytorium git od źródła, z którego zostało sklonowane?

git branch -a przedstawia:

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

i chcę usunąć całą wiedzę o pochodzeniu i powiązane poprawki.

Dłuższe pytanie: chcę wziąć istniejące repozytorium subversion i zrobić z niego kilka mniejszych repozytoriów git. Każde z nowych repozytoriów git powinno mieć pełną historię tylko odpowiedniej gałęzi. Mogę przyciąć repozytorium tylko do poszukiwanego poddrzewa, używając:

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

ale powstałe repozytorium nadal zawiera wszystkie wersje odrzuconych obecnie poddrzewów w gałęzi origin / master.

Zdaję sobie sprawę, że mógłbym użyć flagi -T do git-svn w celu sklonowania odpowiedniego poddrzewa repozytorium subversion. Nie jestem pewien, czy byłoby to bardziej wydajne niż późniejsze uruchamianie wielu git filter-branch --subdirectory-filterkopii na repozytorium git repo, ale w każdym razie nadal chciałbym przerwać link do źródła.

awy
źródło

Odpowiedzi:

476

Dość bezpośredni:

git remote rm origin

Jeśli chodzi o filter-branchpytanie - po prostu dodaj --prune-emptydo polecenia gałęzi filtru, a usunie każdą wersję, która nie zawiera żadnych zmian w wynikowym repozytorium:

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD
Bursztyn
źródło
1
Dzięki. Właśnie --prune-emptytego mi brakowało.
okropny
2
Hmm uzyskiwanieerror: Could not remove config section 'remote.origin'
Dima Lituiev
5

Usuń istniejące pochodzenie i dodaj nowe pochodzenie do katalogu projektu

>$ 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
Mandeep Singh Gill
źródło