Je fais:
git clone ssh://[email protected]/home/user/private/repos/project_hub.git ./
Je suis en train:
Fatal: chemin de destination '.' existe déjà et n'est pas un répertoire vide.
Je connais le chemin. existe déjà. Et je peux vous assurer que le répertoire EST vide. (Je fais à l'intérieur et je ne vois rien!)
Qu'est-ce qui me manque ici pour cloner ce projet dans le répertoire courant?
ls -a
, voyez-vous un.git
répertoire?Réponses:
mettez simplement un point à côté
De
git help clone
:Assurez-vous donc que le répertoire est vide (vérifiez avec
ls -a
), sinon la commande échouera.la source
ls -la
mkdir
crée des liens physiques vers.
et..
par défaut, un nouveau répertoire est-il techniquement "vide" dans les systèmes basés sur Unix? Je veux dire, je suppose que vous pourriezunlink .
etunlink ..
mais cela pourrait vous causer d'énormes problèmes plus tard si vous oubliez de vousCe qui suit n'est probablement pas entièrement équivalent à un clone dans tous les cas, mais a fait l'affaire pour moi:
Dans mon cas, cela produit un
.git/config
fichier qui est équivalent à celui que j'obtiens en faisant un clone.la source
*
(tout ignorer), je pouvais effectuergit checkout master
même s'il y avait déjà d'autres fichiers dans le dossier. Ensuite, tous les fichiers validés du référentiel ont été clonés (et le .gitignore temporaire a été remplacé par le .gitignore approprié du référentiel). Tout a fonctionné à merveille. Cela devrait se produire de cette façon par lui-même en utilisantgit clone -f
ou quelque chose.-t \*
n'est pas nécessaire car c'est la valeur par défaut.git remote set-head origin -a
pourrait être utile. Il définit la branche par défaut d'origine (refs/remotes/origin/HEAD
) telle qu'elle est définie dans le référentiel distant.git clone
le fait automatiquement, contrairement àgit remote add -f
.@Andrew y a répondu clairement ici . Mais aussi simple que cela fonctionne également même si le répertoire n'est pas vide:
la source
<repository-url>
peut également s'agir d'ungit remote add origin /path/to/existing/repo
Pour être sûr de pouvoir cloner le référentiel, accédez à n'importe quel répertoire temporaire et clonez le projet à cet endroit:
Cela clonera votre contenu dans un
project_hub
répertoire.Une fois le clonage terminé, vous pouvez déplacer ce répertoire où vous le souhaitez:
C'est sûr et ne nécessite aucune substance magique autour.
la source
/path/to/new/location
répertoire préexistant , ce qui n'est certainement pas l'objet de la question.la source
Faire
Le répertoire doit être vide
la source
Hmm ... spécifiant le chemin actuel absolu en utilisant
$(pwd)
travaillé pour moi.version git: 2.21.0
la source
Si le répertoire courant est vide, alors cela fonctionnera:
la source
En plus de la réponse de @ StephaneDelcroix, avant d'utiliser:
assurez-vous que votre répertoire actuel est vide en utilisant
la source
Solution: Dans ce cas, la solution utilisait le
dot
, donc:rm -rf .* && git clone ssh://[email protected]/home/user/private/repos/project_hub.git .
rm -rf .* &&
peut être omis si nous sommes absolument sûrs que le répertoire est vide.Les crédits vont à: @James McLaughlin sur les commentaires ci-dessous.
la source
ls -d .*
. ..
moi: ~ / tmp / tmp / tmp $rm -rf ./.*
est "plus sûr" si vous supprimez simplement les fichiers et répertoires cachés (point) sous le répertoire actuel (tout comme @stackunderflow l'a indiqué avant moi). Maisrm -rf
c'est une commande dangereuse pour les utilisateurs inexpérimentés, alors soyez prudent! Juste mes 2 cents..git
aprèsgit init
(je le savais)-rf
de supprimer les fichiers normaux. Veuillez envisager de supprimer cette réponse ou au moins d'en accepter une autre.Amélioration de la réponse de @ GoZoner:
La commande shopt est tirée de cette réponse SO et modifie le comportement de la commande 'mv' sur Bash pour inclure les fichiers dot, dont vous aurez besoin d'inclure le répertoire .git et tout autre fichier caché.
Notez également que cela ne fonctionne que tel que si le répertoire en cours (.) Est vide, mais cela fonctionnera tant qu'aucun des fichiers du référentiel cloné n'aura le même nom que les fichiers du répertoire en cours. Si vous ne vous souciez pas du contenu du répertoire en cours, vous pouvez ajouter l'option -f (force) à la commande 'mv'.
la source
J'avais ce même besoin. Dans mon cas, j'avais un dossier Web standard créé par une installation de serveur Web. Aux fins de cette illustration, disons que c'est
/server/webroot
et webroot contient d'autres fichiers et dossiers standard. Mon référentiel ne contient que les fichiers spécifiques au site (html, javascript, CFML, etc.)
Tout ce que j'avais à faire était:
Vous devez faire attention à faire le git init dans le dossier cible car si vous ne le faites PAS, une des deux choses se produira:
Cela n'a perturbé aucun des fichiers "standard" que j'ai dans mon dossier webroot, mais j'ai dû les ajouter au fichier .gitignore pour empêcher leur ajout par inadvertance aux validations suivantes.
Cela semble être un moyen facile de "cloner" dans un répertoire non vide. Si vous ne voulez pas que les fichiers .git et .gitignore soient créés par le pull, supprimez-les simplement après le pull.
la source
Améliorant encore la réponse de @ phatblat :
comme une doublure:
git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master
la source
la source
utiliser. (point) à la fin de votre commande comme ci-dessous
URL de clonage git .
la source
fatal: destination path '.' already exists and is not an empty directory.
Voici ce que j'ai trouvé:
Je vois ça:
Parmi mes recherches, je suis tombé sur:
https://couchpota.to/forum/viewtopic.php?t=3943
Cherchez l'entrée par Clinton. Hall ... Si vous essayez cela (comme je l'ai fait), vous obtiendrez probablement le
access denied
réponse, il y avait mon 1er indice, donc l'erreur initiale (pour moi), était en fait en train d'échapper à la mauvaise racine problème.Solution pour cela dans Windows: assurez-vous que vous exécutez
cmd
ougit elevated
, puis exécutez:Ce qui précède était mon problème et l'élévation a tout simplement fonctionné pour moi.
la source
La solution
Windows
consiste à cloner le référentiel dans un autre dossier, puis à le copier-coller à l'emplacement d'origine ou simplement à copier le.git
dossier invisible.la source
Suppression avec
peut vous causer des ennuis ou d'autres erreurs.
Si vous avez / chemin / vers / dossier, et que vous souhaitez supprimer tout ce qui se trouve à l'intérieur, mais pas ce dossier, exécutez simplement:
la source
J'ai donc corrigé cette même erreur en supprimant le dossier .git caché dans mon répertoire racine, puis en ajoutant un point au 'git clone repo'. dans mon dossier racine / dist. Ceci dans le cadre d'un projet webpack vue-cli. Donc, ce que tout le monde dit est juste, cela signifie généralement que vous avez un suivi git dans le dossier dans lequel vous essayez de cloner ou dans le dossier parent ou à la racine du dossier en question!
la source
la source
si le dépôt est privé, ajoutez d'abord votre clé ssh use => git clone [email protected]: yourusername / yourrepo.git else use => git clone https://github.com/yourusername/yourrepo.git
la source
il est utile de créer un nouveau fichier
mkdir filename
, puis d'exécuter la commande degit clone xxxxx
, cela fonctionne sur mon ordinateurla source
J'ai vu cette question tant de fois - et je veux juste souligner que
git pull
de l'intérieur de votre répertoire fera l'affaire.À moins que je manque quelque chose ici - cela a fonctionné pour moi.
la source
git pull
ne fera rien si vous n'avez pas de référentiel défini, ce qui est une partie critique de ce quigit clone
fait.