Ich mache:
git clone ssh://[email protected]/home/user/private/repos/project_hub.git ./
Ich erhalte:
Schwerwiegend: Zielpfad '.' existiert bereits und ist kein leeres Verzeichnis.
Ich kenne den Weg. ist bereits vorhanden. Und ich kann versichern, dass das Verzeichnis leer ist. (Ich bin drinnen und sehe nichts!)
Was fehlt mir hier, um das Projekt in das aktuelle Verzeichnis zu klonen?
ls -a
tun, sehen Sie ein.git
Verzeichnis?Antworten:
Setzen Sie einfach einen Punkt daneben
Von
git help clone
:Stellen Sie also sicher, dass das Verzeichnis leer ist (überprüfen Sie mit
ls -a
), da sonst der Befehl fehlschlägt.quelle
ls -la
mkdir
Erstellt Hardlinks zu.
und..
standardmäßig. Ist ein neues Verzeichnis in Unix-basierten Systemen überhaupt technisch "leer"? Ich meine, ich denke du könntestunlink .
undunlink ..
aber das könnte dir später große Probleme bereiten, wenn du vergisst, nach dem Klonen wieder eine VerknüpfungDas Folgende entspricht wahrscheinlich nicht in allen Fällen einem Klon, hat aber den Trick für mich getan:
In meinem Fall wird eine
.git/config
Datei erstellt, die der Datei entspricht, die ich beim Klonen erhalte.quelle
*
(alles ignorieren) enthielt , konnte ich ausführengit checkout master
, obwohl sich bereits einige andere Dateien im Ordner befanden . Dann wurden alle festgeschriebenen Dateien aus dem Repository geklont (und der temporäre Gitignore wurde durch den richtigen Gitignore aus dem Repo überschrieben). Es hat alles wunderbar funktioniert. Es sollte auf diese Weise von selbst durch Verwendung vongit clone -f
oder etwas geschehen .-t \*
ist unnötig, da es die Standardeinstellung ist.git remote set-head origin -a
könnte nützlich sein. Es legt den Standardzweig (refs/remotes/origin/HEAD
) von origin fest, wie er im Remote-Repository festgelegt ist.git clone
tut dies im Gegensatz zu automatischgit remote add -f
.@ Andrew hat es hier klar beantwortet . So einfach funktioniert das aber auch, wenn das Verzeichnis nicht leer ist:
quelle
<repository-url>
sich auch um ein lokales Repo handeln kann, dagit remote add origin /path/to/existing/repo
Um sicherzugehen, dass Sie das Repo klonen können, wechseln Sie in ein beliebiges temporäres Verzeichnis und klonen Sie das Projekt dort:
Dadurch werden Ihre Inhalte in ein
project_hub
Verzeichnis geklont .Sobald das Klonen abgeschlossen ist, können Sie dieses Verzeichnis beliebig verschieben:
Dies ist sicher und erfordert keine magischen Dinge.
quelle
/path/to/new/location
Verzeichnis erstellt, was sicherlich nicht der Punkt der Frage ist.quelle
Tun
Das Verzeichnis muss leer sein
quelle
Hmm ... die Angabe des absoluten Strompfades mit
$(pwd)
hat bei mir funktioniert.Git-Version: 2.21.0
quelle
Wenn das aktuelle Verzeichnis leer ist, funktioniert dies:
quelle
Zusätzlich zur Antwort von @ StephaneDelcroix, bevor Sie Folgendes verwenden:
Stellen Sie sicher, dass Ihr aktuelles Verzeichnis leer ist, indem Sie verwenden
quelle
Lösung: In diesem Fall verwendete die Lösung Folgendes
dot
:rm -rf .* && git clone ssh://[email protected]/home/user/private/repos/project_hub.git .
rm -rf .* &&
kann weggelassen werden, wenn wir absolut sicher sind, dass das Verzeichnis leer ist.Credits gehen an: @James McLaughlin auf Kommentare unten.
quelle
ls -d .*
. ..
ich: ~ / tmp / tmp / tmp $rm -rf ./.*
ist "sicherer", wenn Sie nur die versteckten (Punkt-) Dateien und Verzeichnisse unter dem aktuellen Verzeichnis entfernen (genau wie @stackunderflow vor mir angegeben hat). Aberrm -rf
ist ein gefährlicher Befehl für die unerfahrenen Benutzer, seien Sie also vorsichtig damit! Nur meine 2 Cent..git
nachgit init
(ich wusste es)-rf
normalen Dateien löschen. Bitte erwägen Sie, diese Antwort zu löschen oder zumindest eine andere zu akzeptieren.Verbesserung der Antwort von @ GoZoner:
Der Befehl shopt wird aus dieser SO-Antwort übernommen und ändert das Verhalten des Befehls 'mv' in Bash so, dass Punktdateien eingeschlossen werden, die das Verzeichnis .git und alle anderen versteckten Dateien enthalten müssen.
Beachten Sie auch, dass dies garantiert nur so funktioniert, wie es ist, wenn das aktuelle Verzeichnis (.) Leer ist. Es funktioniert jedoch, solange keine der Dateien im geklonten Repo denselben Namen wie die Dateien im aktuellen Verzeichnis hat. Wenn es Ihnen egal ist, was sich im aktuellen Verzeichnis befindet, können Sie dem Befehl 'mv' die Option -f (force) hinzufügen.
quelle
Ich hatte das gleiche Bedürfnis. In meinem Fall hatte ich einen Standard-Webordner, der von einer Webserver-Installation erstellt wurde. Für die Zwecke dieser Abbildung nehmen wir an, dass dies so ist
/server/webroot
und webroot enthält andere Standarddateien und -ordner. Mein Repo enthält nur die ortsspezifischen Dateien (HTML, Javascript, CFML usw.).
Alles was ich tun musste war:
Sie müssen vorsichtig sein, um die Git-Init im Zielordner auszuführen, denn wenn Sie dies NICHT tun, geschieht eines von zwei Dingen:
Dies hat KEINE der "Standard" -Dateien in meinem Webroot-Ordner gestört, aber ich musste sie zur .gitignore-Datei hinzufügen, um zu verhindern, dass sie versehentlich zu nachfolgenden Commits hinzugefügt werden.
Dies scheint eine einfache Möglichkeit zu sein, in ein nicht leeres Verzeichnis zu "klonen". Wenn Sie nicht möchten, dass die durch das Pull erstellten .git- und .gitignore-Dateien einfach nach dem Pull gelöscht werden.
quelle
Weitere Verbesserung der Antwort von @ phatblat :
als ein Liner:
git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master
quelle
quelle
Verwenden Sie. (Punkt) am Ende Ihres Befehls wie unten
Git-Klon- URL .
quelle
fatal: destination path '.' already exists and is not an empty directory.
Folgendes habe ich gefunden:
Ich sehe es:
Bei meinen Suchen bin ich auf Folgendes gestoßen:
https://couchpota.to/forum/viewtopic.php?t=3943
Suchen Sie nach dem Eintrag von Clinton.Hall ... Wenn Sie dies versuchen (wie ich), werden Sie wahrscheinlich die bekommen
access denied
Antwort erhalten, es gab meinen ersten Hinweis, so dass der anfängliche Fehler (für mich) tatsächlich der falschen Wurzel entging Problem.Lösung für dieses Problem in Windows: Stellen Sie sicher, dass Sie
cmd
oder ausführengit elevated
, und führen Sie dann Folgendes aus:Das Obige war mein Problem und das einfache Erhöhen hat für mich funktioniert.
quelle
Die Lösung für
Windows
besteht darin, das Repository in einen anderen Ordner zu klonen und dann zu kopieren und an den ursprünglichen Speicherort einzufügen oder einfach den.git
unsichtbaren Ordner zu kopieren .quelle
Entfernen mit
kann Sie in Schwierigkeiten oder weitere Fehler bringen.
Wenn Sie den Ordner / path / to / haben und alles darin entfernen möchten, aber nicht diesen Ordner, führen Sie einfach Folgendes aus:
quelle
Also habe ich diesen Fehler behoben, indem ich den versteckten .git-Ordner in meinem Stammverzeichnis gelöscht und dann dem 'git clone repo' einen Punkt hinzugefügt habe. in meinem root / dist Ordner. Dies steht im Zusammenhang mit einem vue-cli-Webpack-Projekt. Was alle anderen sagen, ist richtig. Normalerweise bedeutet dies, dass Sie Git-Tracking entweder in dem Ordner haben, in den Sie klonen möchten, oder in dem übergeordneten Ordner oder Stammverzeichnis des betreffenden Ordners!
quelle
quelle
Wenn repo privat ist, fügen Sie zuerst Ihren SSH-Schlüssel hinzu. use => git clone [email protected]: yourusername / yourrepo.git else use => git clone https://github.com/yourusername/yourrepo.git
quelle
Es ist nützlich, eine neue Datei zu erstellen, indem Sie
mkdir filename
den Befehlgit clone xxxxx
ausführen und auf meinem Computer funktionierenquelle
Ich habe diese Frage so oft gesehen - und ich möchte nur darauf hinweisen
git pull
aus Ihrem Verzeichnis heraus den Trick macht.Es sei denn, ich vermisse hier etwas - das hat bei mir funktioniert.
quelle
git pull
wird nichts tun, wenn Sie kein Repository definiert haben, was ein kritischer Teil dessen ist, wasgit clone
tut.