So entfernen Sie den Ursprung aus dem Git-Repository

278

Grundlegende Frage: Wie trenne ich ein Git-Repo von dem Ursprung, von dem es geklont wurde?

git branch -a zeigt an:

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

und ich möchte alle Ursprungskenntnisse und die damit verbundenen Überarbeitungen entfernen.

Längere Frage: Ich möchte ein vorhandenes Subversion-Repo nehmen und daraus eine Reihe kleinerer Git-Repos erstellen. Jedes der neuen Git-Repos sollte die vollständige Historie nur des relevanten Zweigs haben. Ich kann das Repo nur auf den gewünschten Teilbaum beschneiden, indem ich:

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

Das resultierende Repo enthält jedoch weiterhin alle Revisionen der jetzt verworfenen Teilbäume unter dem Zweig origin / master.

Mir ist klar, dass ich das -T-Flag verwenden könnte, um mit git-svn den relevanten Teilbaum des Subversion-Repos zu klonen. Ich bin mir nicht sicher, ob dies effizienter wäre, als später mehrere Instanziierungen von auszuführengit filter-branch --subdirectory-filter Kopien des Git-Repos auszuführen, aber auf jeden Fall möchte ich trotzdem die Verknüpfung mit dem Ursprung trennen.

awy
quelle

Antworten:

472

Ziemliech direkt:

git remote rm origin

Was die filter-branchFrage --prune-emptybetrifft - fügen Sie sie einfach zu Ihrem Filterzweigbefehl hinzu , und alle Revisionen, die keine Änderungen in Ihrem resultierenden Repo enthalten, werden entfernt:

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD
Bernstein
quelle
1
Vielen Dank. Es war das --prune-empty, was ich vermisst habe.
Awy
2
Hmm. bekommenerror: Could not remove config section 'remote.origin'
Dima Lituiev
5

Entfernen Sie den vorhandenen Ursprung und fügen Sie Ihrem Projektverzeichnis einen neuen Ursprung hinzu

>$ 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
quelle