Ändern Sie den Speicherort des Git-Repository-Verzeichnisses.

199

Wenn ich mit Git / Github für Windows ein Repository mit diesem Verzeichnis habe: C:\dir1\dir2Was muss ich tun, um die Repo-Dateien zu verschieben C:\dir1? Ich kann die Dateien natürlich physisch kopieren und einfügen, aber was muss ich auf der Git-Seite tun?

Ich habe dieses Repo auf GitHub und verwende Git Bash und GitHub für Windows.

Mikael Engver
quelle
1
Schauen Sie sich diese Antwort an. Dies gilt auch für das Verschieben in einen anderen Ordner oder einen anderen Computer.
rekenerd

Antworten:

233

Kopieren Sie einfach den gesamten Inhalt des Arbeitsverzeichnisses (einschließlich des versteckten .gitVerzeichnisses). Dadurch wird das gesamte Arbeitsverzeichnis in das neue Verzeichnis verschoben und das Remote-Repository auf GitHub wird nicht beeinflusst.

Wenn Sie GitHub für Windows verwenden, können Sie das Repository mit der oben beschriebenen Methode verschieben. Wenn Sie jedoch in der Anwendung auf das Repository klicken, kann es nicht gefunden werden. Um dies zu beheben, klicken Sie einfach auf den blauen Kreis mit dem !, Wählen Sie Find It und navigieren Sie zum neuen Verzeichnis.

ctor
quelle
3
Aber wie wäre es, wenn GitHub For Windows das lokale Repo verfolgt? Zu diesem Zweck muss es eine Konfiguration geben.
3
Als ich dies unter Windows tat, musste ich ein neues Repo erstellen.
472084
1
@Jleagle, Sie haben es möglicherweise geändert, seit diese Antwort veröffentlicht wurde. Ich werde einen Blick darauf werfen und meine Antwort bei Bedarf aktualisieren.
Ctor
2
Sie sollten nicht aufgefordert werden, ein neues Repo zu erstellen. In diesem Fall haben Sie offensichtlich eine Git-Datei verpasst (möglicherweise eine versteckte). Ist mir passiert, und als ich es erneut versuchte, bemerkte ich, dass ich einige verpasst hatte.
Juan
1
Ich bin auf Win. Nachdem ich den Ordner manuell an einen neuen Speicherort verschoben habe, habe ich die Git GUI App erneut geöffnet und den Projektordner dort auch manuell verschoben. So funktioniert es bei mir.
Kuncevic.dev
42

Ich bin mir der Frage nicht sicher, daher hier zwei Antworten:

Wenn Sie Ihr Repository verschieben möchten:

Kopieren Sie einfach das gesamte Repository (mit seinem .gitVerzeichnis).

Es gibt keinen absoluten Pfad in der .gitStruktur und nichts verhindert, dass sie verschoben wird, sodass Sie nach dem Verschieben nichts mehr zu tun haben. Alle Links zu Github (siehe in .git/config) funktionieren wie zuvor.

Wenn Sie Dateien in das Repository verschieben möchten:

Verschieben Sie einfach die Dateien. Fügen Sie dann die in aufgelisteten Änderungen hinzu git status. Der nächste commitwird das Notwendige tun. Sie werden froh sein zu erfahren, dass keine Datei dupliziert wird: Das Verschieben einer Datei in Git ist fast kostenlos.

Denys Séguret
quelle
1
Aber wie wäre es, wenn GitHub For Windows das lokale Repo verfolgt? Zu diesem Zweck muss es eine Konfiguration geben.
@ user596075 ist es im .gitVerzeichnis.
OrangeDog
24

Wenn Sie verwenden GitHub Desktop, führen Sie einfach die folgenden Schritte aus:

  1. Schließen Sie GitHub Desktopalle anderen Anwendungen mit geöffneten Dateien in Ihrem aktuellen Verzeichnispfad.
  2. Verschieben Sie das gesamte Verzeichnis wie oben beschrieben an den neuen Verzeichnisort.
  3. Öffnen Sie GitHub Desktopund klicken Sie auf das blaue (!) Symbol "Repository nicht gefunden". Dann öffnet sich ein Dialogfeld und Sie sehen eine Schaltfläche "Suchen ...", die ein Popup öffnet, mit dem Sie den Pfad zu einem neuen Speicherort leiten können.
Mikael Engver
quelle
7

Während die Frage Git für Windows betrifft, scheint dies das beste Ergebnis zu sein, selbst wenn nach Visual Studio Tools für Git gesucht wird (Erweiterung in VS 2012, native Unterstützung in VS 2013).

Anhand der oben genannten Lösungen als Leitfaden habe ich festgestellt, dass Visual Studio Git Tools das lokale Verschieben von Repos (oder sogar der gesamten Verzeichnisstruktur für alle Repos) sehr einfach macht.

1) Schließen Sie Visual Studio. 2) Verschieben Sie die Repo-Ordner an einen neuen Speicherort. 3) Öffnen Sie Visual Studio. Öffnen Sie den Team Explorer. Wechseln Sie in die Ansicht "Verbinden" (Steckersymbol oben). 3a) Wenn Repos immer noch den alten Pfad anzeigen, klicken Sie auf Aktualisieren, um eine Aktualisierung zu erzwingen. 4) Lokal verschobene Repos sollten nicht mehr in " Local Git Repositories " angezeigt werden . 5) Klicken Sie auf Hinzufügen (nicht neu oder klonen) und wählen Sie den hinzuzufügenden Repo-Ordner aus.

In Schritt 5 geben Sie wirklich nur einen Suchpfad an und die Suche umfasst automatisch alle Unterordner. Wenn Sie mehrere Repos unter einem einzigen Stamm organisiert haben (unabhängige Repos haben nur denselben übergeordneten Ordner), werden durch Auswahl des übergeordneten Repos alle darunter befindlichen Repos eingeschlossen.

Beispiel: E: \ Repos \ RepoA E: \ Repos \ RepoB E: \ Repos \ RepoC

Im Visual Studio Team Explorer gibt [Hinzufügen]> "E: \ Repos \"> [Hinzufügen] alle drei an die lokalen Repositorys zurück.

Gerald Davis
quelle
6

Obwohl die vorherigen Antworten alle zu sagen scheinen, dass Sie das Verzeichnis einfach verschieben können und es keine absoluten Pfade in der .git-Struktur gibt. Ich fand das falsch, wenn ich Git von Cygwin verwendete.

Als ich mein Git-Repo verschoben habe (tatsächlich habe ich es von einem Backup wiederhergestellt, aber auf ein anderes Laufwerk, da sich meine Laufwerksstruktur auf meinem neuen System geändert hat). Ich habe eine Fehlermeldung wie

fatal: Invalid path '<part_of_the_original_repo_path>': No such file or directory

Ich habe grep verwendet, um herauszufinden, dass in meiner .git / config-Datei im Abschnitt [core] eine Arbeitsbaumvariable enthalten ist, die den absoluten Pfad meines Git-Repos enthält. Das zu ändern hat das Problem für mich behoben.

Phil Rosenberg
quelle
3

Ich verwende das Visual Studio Git-Plugin und habe einige Websites unter IIS, die ich verschieben wollte. Ein einfacher Weg, der für mich funktioniert hat:

  1. Schließen Sie Visual Studio.

  2. Verschieben Sie den Code (einschließlich Git-Ordner usw.)

  3. Klicken Sie am neuen Speicherort auf die Lösungsdatei

Dadurch wird die Zuordnung zum neuen Speicherort unter Verwendung der vorhandenen lokalen Git-Dateien aktualisiert, die verschoben wurden. Als ich wieder in Visual Studio war, wurden in meinem Team Explorer-Fenster die Repos am neuen Speicherort angezeigt.

Ben
quelle
2

Ich verwende Github Desktop für Windows und wollte den Speicherort eines Repositorys verschieben. Kein Problem, wenn Sie Ihr Verzeichnis verschieben und den neuen Speicherort in der Software auswählen. Wenn Sie jedoch ein schlechtes Verzeichnis festlegen, erhalten Sie einen schwerwiegenden Fehler und keine zweite Chance, in das gute Verzeichnis zu wechseln. Also um das zu reparieren. Sie müssen die Projektdateien in das fehlerhafte Verzeichnis kopieren und von Github Desktop neu erstellen. Danach können Sie Ihr Projekt erneut in einen anderen Ordner verschieben und einen Umzug in die Software vornehmen. Dafür muss Github Desktop nicht geschlossen werden. Es werden Ordner in Live überprüft.

Ich hoffe, das hilft jemandem.

Shim-Sao
quelle
1

Bericht aus der Zukunft: April 2018.

Ich wollte meine lokalen Repos auf meinem Mac und meinem Windows normalisieren, die in verschiedenen lokalen Ordnern gelandet waren.

Der Windows 10-Client hat mich dazu gebracht, die Routine "Kann nicht finden"> "Suchen" zu durchlaufen, mühsam, aber nicht schrecklich. Außerdem muss der lokale "Klonpfad" in den Optionen für die zukünftige Verwendung aktualisiert werden.

Als ich die Mac-Ordner konsolidierte, fand der Github-Client sie gerade wieder - ich musste nichts tun!

Charles Ross
quelle
0

Das hat bei mir nicht funktioniert. Ich habe ein Repo von (z. B.) c: \ project1 \ nach c: \ repo \ project1 \ verschoben, und Git für Windows zeigt keine Änderungen an.

Der Git-Status zeigt einen Fehler an, da eines der Submodule "kein Git-Repository" ist und den alten Pfad anzeigt. zB (Namen geändert, um IP zu schützen)

fatal: Kein Git-Repository: C: /project1/.git/modules/subproject/subproject2 fatal: 'git status --porcelain' ist im Submodul-Subprojekt fehlgeschlagen

Ich musste die Git-Dateien in den Submodulen manuell bearbeiten, um auf den korrekten relativen Pfad zum Repo des Submoduls zu verweisen (im Verzeichnis .git / modules des Haupt-Repos).

Chris Oates
quelle
0

Um den lokalen Standardpfad für Ihre Repositorys für jedes Klonen eines dieser Repositorys festzulegen, müssen Sie ein Repository nur einmal klonen und Localpath: / your-path festlegen. Github erkennt diesen Pfad dann automatisch als Standardpfad.

BOjack
quelle
Dies scheint die ursprüngliche Frage nicht zu beantworten - vielleicht können Sie klarstellen, wie Ihre Antwort der bereits akzeptierten Antwort etwas hinzufügt? Vielen Dank.
rwp
0

Ein mehr Git-basierter Ansatz wäre, die Änderungen an Ihrer lokalen Kopie mithilfe von cdoder durch Kopieren und Einfügen vorzunehmen und diese Änderungen dann vom lokalen zum Remote-Repository zu übertragen.

Wenn Sie versuchen, den Status Ihres lokalen Repos zu überprüfen, werden möglicherweise "nicht verfolgte Änderungen" angezeigt, bei denen es sich tatsächlich um die verschobenen Dateien handelt. Um diese Änderungen mit Nachdruck voranzutreiben, müssen Sie diese Dateien / Verzeichnisse mithilfe von bereitstellen

$ git add -A
#And commiting them
$ git commit -m "Relocating image demo files"
#And finally, push
$ git push -u local_repo -f HEAD:master

Ich hoffe es hilft.

Pe Dro
quelle