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

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

Ich bin ein ziemlicher Neuling in der Verwendung von Git und frage mich, ob es in Ordnung ist, ein Git-Repository mit gängigen UNIX-Befehlen (wie cpoder tar/ untag) statt über zu kopieren git clone.

Ich befinde mich in einer Situation, in der ich eine Produktionsumgebung (virtuelles Python) habe, in der ein Teil des Codes in Git ausgecheckt wurde. Ich frage mich, ob es aus Git-Sicht eine schlechte Idee ist, die gesamte Umgebung mithilfe von a taroder so etwas herunterzuladen. Dieser Ansatz wäre praktisch, um schnell eine Kopie einer Codebasis/Umgebung zu erstellen.

Ich mache mir Sorgen, dass „git clone“ möglicherweise eine eindeutige ID mit der Arbeitskopie verknüpft, was zu Konflikten führen könnte, wenn zwei Arbeitskopien vorhanden sind und eine aus dem Dateisystem der anderen kopiert wurde.

Antwort1

Es ist vollkommen in Ordnung.

gitspeichert seinen gesamten Verlauf, Commits usw. vor Ort – dies ist eine grundlegende Eigenschaft eines DCVS.

Technisch gesehen gitkann es problemlos mit kopierten Repositories funktionieren, die überall herumlaufen, denn der Sinn eines DCVS besteht darin,Es muss nicht wissen, was außerhalb eines bestimmten Repositorys vor sich geht,und das tut es auch nicht, es sei denn, Sie sagen es.

Dasselbe Prinzip gilt auch hier.

Antwort2

Sie sollten in der Lage sein, das gesamte Arbeitsverzeichnis an einen beliebigen anderen Ort auf Ihrem System zu kopieren und es bei Verwendung von Git, Hg oder SVN weiterhin wie gewohnt funktionieren zu lassen. Zu anderen SCMs kann ich keine Kommentare abgeben.

Antwort3

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

Ich habe gesehen,repoDienstprogramm erstellt symbolische Links im .gitVerzeichnis. In diesem Fall sollten Sie beim Erstellen einer Kopie sicherstellen, dass Sie symbolische Links dereferenzieren. Beispiel:

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

Antwort4

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

  • Ihre configDatei könnte Remote-Zugriffe enthalten, die der anderen Person möglicherweise nicht wichtig sind.
  • Ihr logsOrdner enthält Referenzen, die Sie möglicherweise nicht freigeben möchten. Git ist großartig, wenn Sie die fiesen Dinge auf Ihrem Computer erledigen lassen möchten, bis Sie mit dem Endergebnis zufrieden sind, und es dann auf die Remote-Remote übertragen können, um es (gelegentlich) freizugeben. Ein Teil dieser fiesen Geschichte könnte in Ihrem Reflog enthalten sein, daher ist es meiner Meinung nach besser, es nicht freizugeben.
  • Ihre info/excludeDatei ignoriert möglicherweise nur einige DateienDuignorieren möchte.
  • Sie können auch Hooks, Branches und eine Menge anderer Dinge haben, die persönlich sind und die Sie lieber nicht teilen möchten ...

verwandte Informationen