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 assurer que le répertoire IS est vide. (Je fais ls dedans et je ne vois rien!)
Qu'est-ce qui me manque ici pour pouvoir cloner ce projet dans le répertoire actuel?
Solution: Dans ce cas, la solution utilisait la 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.
il suffit de mettre un point à côté
git clone [email protected]:user/my-project.git .
De git help clone
:
Le clonage dans un répertoire existant n'est autorisé que s'il est vide.
Assurez-vous donc que le répertoire est vide (vérifiez avec ls -a
), sinon la commande échouera.
Ce qui suit n'est probablement pas totalement équivalent à un clone dans tous les cas, mais a fait le tour pour moi:
git init .
git remote add -t \* -f Origin <repository-url>
git checkout master
Dans mon cas, cela produit un fichier .git/config
qui équivaut à celui que je reçois lorsque je fais un clone.
@ Andrew a répondu clairement ici . Mais aussi simple que cela fonctionne, même si le répertoire n'est pas vide:
git init .
git remote add Origin <repository-url>
git pull Origin master
Pour être sûr de pouvoir cloner le référentiel, accédez à n’importe quel répertoire temporaire et clonez le projet à cet emplacement:
git clone ssh://[email protected]/home/user/private/repos/project_hub.git
Cela va cloner votre contenu dans un répertoire project_hub
.
Une fois le clonage terminé, vous pouvez déplacer ce répertoire où vous voulez:
mv project_hub /path/to/new/location
Ceci est sûr et ne nécessite aucune substance magique autour.
git clone your-repo tmp && mv tmp/.git . && rm -rf tmp && git reset --hard
Si le répertoire actuel est vide, cela fonctionnera:
git clone <repository> foo; mv foo/* foo/.git* .; rmdir foo
En plus de la réponse de @ StephaneDelcroix, avant d’utiliser:
git clone [email protected]/my-project.git .
assurez-vous que votre répertoire actuel est vide en utilisant
ls -a
Améliorer la réponse de @ GoZoner:
git clone <repository> foo; shopt -s dotglob nullglob; mv foo/* .; rmdir foo
La commande shopt provient de this SO answer et modifie le comportement de la commande 'mv' sur Bash afin d'inclure les fichiers de points, dont vous aurez besoin pour inclure le répertoire .git et tout autre fichier caché.
Notez également que cela n’est garanti que si le répertoire actuel (.) Est vide, mais cela fonctionnera aussi longtemps qu’aucun des fichiers du référentiel cloné n’aura le même nom que les fichiers du répertoire actuel. Si le contenu du répertoire actuel vous importe peu, vous pouvez ajouter l'option -f (force) à la commande 'mv'.
J'ai eu le 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 ceci est
/server/webroot
et webroot contient d’autres fichiers et dossiers standard. Mon référentiel n'a que les fichiers spécifiques au site (html, javascript, CFML, etc.)
Tout ce que je devais faire était:
cd /server/webroot
git init
git pull [url to my repo.git]
Vous devez faire attention à faire git init dans le dossier cible car si vous ne le faites PAS, l’une des deux choses suivantes va se produire:
fatal: pas un dépôt git (ni aucun des répertoires parents): .git
Cela n'a perturbé aucun des fichiers "standard" que j'ai dans mon dossier webroot, mais j'ai eu besoin de les ajouter au fichier .gitignore pour empêcher leur ajout par inadvertance à des commits ultérieurs.
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 tirage, supprimez-les simplement après le tirage.
Hmm ... spécifier le chemin de courant absolu en utilisant $(pwd)
a fonctionné pour moi.
git clone https://github.com/me/myproject.git $(pwd)
version git: 2.21.0
Améliorer encore le @ phatblat réponse :
git clone --no-checkout <repository> tmp \
&& mv tmp/.git . \
&& rmdir tmp \
&& git checkout master
comme une doublure:
git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master
shopt -s dotglob
git clone ssh://[email protected]/home/user/private/repos/project_hub.git tmp && mv tmp/* . && rm -rf tmp
utilisez. (point) à la fin de votre commande comme ci-dessous
git clone URL.
Enlever avec
rm -rf. *
peut vous causer des ennuis ou des erreurs supplémentaires.
Si vous avez/path/to/folder et souhaitez supprimer tout ce qui se trouve à l'intérieur, mais pas ce dossier, exécutez simplement:
rm -rf/chemin/vers/dossier/*
J'ai donc corrigé cette erreur en supprimant le dossier .git caché dans mon répertoire racine, puis en ajoutant un point au "go clone repo". dans mon dossier racine/dist. C’est dans le cadre d’un projet vue-cli webpack. Donc ce que tout le monde dit est correct, cela signifie généralement que vous avez le suivi git soit dans le dossier dans lequel vous essayez de cloner, soit dans le dossier parent ou à la racine du dossier en question!
La solution pour Windows
consiste à cloner le référentiel dans un autre dossier, puis à copier et coller vers l'emplacement d'origine ou simplement à copier le dossier .git
invisible.
Je vois ça:
fatal: destination path 'CouchPotatoServer' already exists and is not an empty directory.
Parmi mes recherches, je suis tombé sur:
https://couchpota.to/forum/viewtopic.php?t=394
Recherchez l'entrée de Clinton.Hall ... Si vous essayez ceci (comme je l'ai fait), vous obtiendrez probablement la réponse access denied
, il y avait mon 1er indice, donc l'erreur initiale (pour moi) était en fait éluder à la mauvaise question racine.
Solution pour cela dans Windows: assurez-vous que vous exécutez cmd
ou git elevated
, puis exécutez:
git clone https://github.com/RuudBurger/CouchPotatoServer.git
Ce qui précède était mon problème et la simple élévation a fonctionné pour moi.
Supprimez (ou déplacez) simplement le contenu, y compris le répertoire .git
, du répertoire donné.
Des outils automatisés tels que Android studio Rebuild
résoudront le problème pour vous.
Plus de détails:
L'erreur montrée pour moi était pour jarresolver
git repo
Le chemin indiqué est temp\jarresolver\
Je viens de supprimer le contenu du répertoire temp\jarresolver\
, y compris le répertoire masqué .git
.
C'est tout, tout a fonctionné, aucun clonage requis.
Quand j’ai fait Rebuild
, Android le clonage du studio lui-même et sa construction ont été couronnés de succès.
il est utile de créer un nouveau fichier avec mkdir filename
, puis d'exécuter la commande de git clone xxxxx
, cela fonctionne sur mon ordinateur