Ich habe ein Verzeichnis gitrepo1 . Dieses Verzeichnis ist ein Git-Repository.
Ich möchte dieses gitrepo1 in ein anderes Verzeichnis newrepo verschieben .
Das Verzeichnis newrepo sollte das neue Git-Repository ohne Verlust des Git-Verlaufs sein und das Verzeichnis gitrepo1 enthalten .
Das Verzeichnis gitrepo1 sollte jetzt nur ein Verzeichnis (innerhalb von newrepo ) ohne
.git
Index sein, dh es sollte KEIN unabhängiges Git-Repository oder Submodul mehr sein.
Wie kann ich das machen?
mv girepo1 newrepo
??Antworten:
Es ist sehr einfach. Git ist es egal, wie sein Verzeichnis heißt. Es ist nur wichtig, was drin ist. Sie können also einfach Folgendes tun:
Beachten Sie, dass die Kopie ziemlich teuer ist, wenn das Repository groß ist und eine lange Geschichte hat. Sie können es auch leicht vermeiden:
Sobald Sie erstellt haben
newrepo
, kann das zu platzierende Zielgitrepo1
überall sein, auch innerhalb,newrepo
wenn Sie es möchten. Es ändert nichts an der Prozedur, sondern nur an dem Pfad, den Siegitrepo1
zurückschreiben.quelle
cp
wie fast jeder Befehl oder jede Funktion ist spezifisch für andere Betriebssysteme. Tatsächlich ist es spezifisch für jedes Betriebssystem, das kein Windows ist. Rufen Sie Microsoft an und fragen Sie sie, warum sie nicht POSIX sind. Wie auch immer,cp
bedeutet kopieren.mv
bedeutet bewegen.rm
bedeutet entfernen. Sie können Windows-Entsprechungen finden..git/
enthält den gesamten Verlauf, einschließlich Ihres letzten Commits. Wo immer Sie es ausdrücken, Sie haben die ganze Geschichte. Wenn sich alle Dateien in diesem Verzeichnis von dem ursprünglichen Repo unterscheiden, aus dem Sie entnommen haben, wird Ihnen.git/
lediglich mitgeteilt, dass einige Dateien gelöscht wurden und einige nicht verfolgte Dateien vorhanden sind. Mit a würdengit reset --hard
die entfernten Dateien automatisch wiederhergestellt! Zu beachten ist nur, dass.git/
Sie die nicht festgeschriebenen Änderungen nicht durch Kopieren wiederherstellen können.Es ist ein bisschen spät und die Frage ist bereits beantwortet, aber um es ohne Kopfschmerzen zu tun:
git status
, sagen wir mal Zweig Entwicklunggit clone
das Projekt von Repo in den neuen Ordnergit checkout development
rsync
, ohne .git Ordner :rsync -azv --exclude '.git' gitrepo1 newrepo/gitrepo1
Dann können Sie dort weitermachen, wo Sie aufgehört haben
quelle
Es ist noch einfacher als das. Habe dies gerade getan (unter Windows, aber es sollte unter anderen Betriebssystemen funktionieren):
Git sieht nur, dass Sie ein Verzeichnis hinzugefügt und eine Reihe von Dateien umbenannt haben. Kein Problem.
quelle
Ich bin kein Experte, aber ich kopiere den .git-Ordner in einen neuen Ordner und rufe dann Folgendes auf:
git reset --HARD
quelle