Ist es in Ordnung, ein Git-Repository mit grundlegenden Unix-Befehlen zu kopieren (nicht zu klonen)?


22

Ich bin ziemlich neu in der Verwendung von Git und habe mich gefragt, ob es in Ordnung ist, ein Git-Repository mit gängigen UNIX-Befehlen (wie cpoder tar/ untag) zu kopieren , anstatt durch git clone.

Ich bin in der Situation, in der ich eine Produktionsumgebung (Python Virtual) habe, die Code in Git darin ausgecheckt hat. Ich frage mich, ob es aus git-Sicht eine schlechte Idee ist, die gesamte Umgebung mit einem taroder etwas zu kopieren . Dieser Ansatz wäre praktisch, um eine schnelle Kopie einer Codebasis / Umgebung zu erstellen.

Ich befürchte, dass git clone der Arbeitskopie möglicherweise eine eindeutige ID zuordnet, die zu Konflikten führen kann, wenn zwei Arbeitskopien vorhanden sind, von denen eine vom anderen Dateisystem kopiert wurde.


Wow, ich war in dieser Situation, weil ich einige Dateien unter Quellcodeverwaltung hatte und einige nicht, und ich hatte Dateiberechtigungen, die ich bewahren musste. Ich bin froh, dass Sie diese Frage gestellt haben.
Joe C

Antworten:


21

Es ist vollkommen in Ordnung.

git speichert die gesamte Historie, Commits usw. vor Ort - dies ist eine grundlegende Eigenschaft eines DCVS.

Technisch gesehen gitfunktioniert dies problemlos mit kopierten Repositorys, die überall laufen, da der springende Punkt eines DCVS darin besteht, dass es nicht wissen muss, was außerhalb eines bestimmten Repositorys vor sich geht , und das auch nicht, wenn Sie es nicht mitteilen .

Das gleiche Prinzip gilt hier.


1
Nach meinem Verständnis enthält ein geklontes Repository einen Link zurück zum übergeordneten Repository. Bei Verwendung eines Betriebssystemkopierbefehls wird diese Verknüpfung nicht erstellt.
Tony

@Tony Stimmt, aber Sie können diesen Link mit entfernen git remote remove origin, wodurch Git daran gehindert wird, das übergeordnete Repository als Upstream zu verwenden.
new123456

2

Sie sollten in der Lage sein, das gesamte Arbeitsverzeichnis in ein anderes Verzeichnis auf Ihrem System zu kopieren und es bei Verwendung von Git, Hg oder SVN weiterhin wie gewohnt zu verwenden. Ich kann keine anderen SCMs kommentieren.


0

Dies ist ein eher ungewöhnlicher Anwendungsfall, aber ...

Ich habe gesehen, wie das repoDienstprogramm symbolische Links im .gitVerzeichnis erstellt hat. In diesem Fall sollten Sie beim Kopieren sicherstellen, dass symbolische Links dereferenziert werden. Z.B:

cp -r -L <source-repo-dir> <destination-repo-dir>

0

Es ist in Ordnung, aber wenn Sie Ihr Repo mit jemand anderem teilen möchten, beachten Sie bitte Folgendes :

  • Ihre configDatei enthält möglicherweise Fernbedienungen, die die andere Person möglicherweise nicht interessiert.
  • Ihr logsOrdner enthält Verweise, die Sie möglicherweise nicht freigeben möchten. Git ist großartig darin, Sie die fiesen Dinge auf Ihrem Computer erledigen zu lassen, bis Sie mit dem Endergebnis zufrieden sind, und es dann auf die Fernbedienung zu schieben, um es (gelegentlich) zu teilen. Einiges von dieser fiesen Geschichte könnte in Ihrem Reflog sein, deshalb ist es besser, es IMHO nicht zu teilen.
  • Ihre info/excludeDatei ignoriert möglicherweise einige Dateien, die nur von Ihnen ignoriert werden sollen.
  • Sie können auch Haken, Zweige und eine Menge anderer Dinge haben, die persönlich sind und die Sie lieber nicht teilen ...
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.