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 cp
oder 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 tar
oder 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.
git
speichert seinen gesamten Verlauf, Commits usw. vor Ort – dies ist eine grundlegende Eigenschaft eines DCVS.
Technisch gesehen git
kann 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,repo
Dienstprogramm erstellt symbolische Links im .git
Verzeichnis. 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
config
Datei könnte Remote-Zugriffe enthalten, die der anderen Person möglicherweise nicht wichtig sind. - Ihr
logs
Ordner 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/exclude
Datei 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 ...