Cómo hacer que Git se clone en el directory actual

Estoy haciendo:

git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./ 

Me estoy poniendo:

Fatal: ruta de destino '.' ya existe y no es un directory vacío.

Conozco el path. ya existe. Y puedo asegurar que el directory está vacío. (¡Lo hago adentro y no veo nada!)

¿Qué me falta aquí para clonar ese proyecto en el directory actual?

Solutions Collecting From Web of "Cómo hacer que Git se clone en el directory actual"

simplemente pon un punto al lado

 git clone git@github.com:user/my-project.git . 

De git help clone :

La clonación en un directory existente solo está permitida si el directory está vacío.

Por lo tanto, asegúrese de que el directory esté vacío (verifique con ls -a ), de lo contrario, el command fallará.

Probablemente, el siguiente no sea totalmente equivalente a un clon en todos los casos, pero el truco fue para mí:

 git init . git remote add -t \* -f origin <repository-url> git checkout master 

En mi caso, esto produce un file .git/config que es equivalente al que obtengo cuando hago un clon.

@Andrew lo ha respondido claramente aquí . Pero tan simple como esto también funciona incluso si el directory no está vacío:

 git init . git remote add origin <repository-url> git pull origin master 

Para asegurarse de que puede clonar el repository, vaya a cualquier directory temporal y clone el proyecto allí:

 git clone ssh://user@host.com/home/user/private/repos/project_hub.git 

Esto project_hub tus cosas en un directory project_hub .

Una vez que la clonación ha finalizado, puede mover este directory a donde quiera:

 mv project_hub /path/to/new/location 

Esto es seguro y no requiere ningún material mágico.

 git clone your-repo tmp && mv tmp/.git . && rm -rf tmp && git reset --hard 

Además de la respuesta de @StephaneDelcroix, antes de usar:

 git clone git@github.com.user/my-project.git . 

asegúrese de que su directory actual esté vacío usando

 ls -a 

Si el directory actual está vacío, entonces funcionará:

 git clone <repository> foo; mv foo/* foo/.git* .; rmdir foo 

Mejorando la respuesta de @GoZoner:

 git clone <repository> foo; shopt -s dotglob nullglob; mv foo/* .; rmdir foo 

El command shopt se toma de esta respuesta SO y cambia el comportamiento del command 'mv' en Bash para include files punto, que deberá include el directory .git y cualquier otro file oculto.

También tenga en count que esto solo está garantizado para funcionar tal cual si el directory actual (.) Está vacío, pero funcionará siempre que ninguno de los files en el repository clonado tenga el mismo nombre que los files en el directory actual. Si no le importa lo que está en el directory actual, puede agregar la opción -f (forzar) al command 'mv'.

Solución: en este caso, la solución estaba usando el dot , entonces: rm -rf .* && git clone ssh://user@host.com/home/user/private/repos/project_hub.git .

rm -rf .* && se pueden omitir si estamos absolutamente seguros de que el directory está vacío.

Los créditos van a: @James McLaughlin en los comentarios a continuación.

Hacer

 git clone https://user@bitbucket.org/user/projectname.git . 

El directory debe estar vacío

use. (punto) al final de su command como abajo

git clone URL .

Esto fue lo que encontré:

Veo esto:

 fatal: destination path 'CouchPotatoServer' already exists and is not an empty directory. 

Entre mis búsquedas, me encontré con:

https://couchpota.to/forum/viewtopic.php?t=3943

Busque la input de Clinton.Hall … Si testing esto (como lo hice), es probable que obtenga la respuesta de access denied , hubo mi primera pista, por lo que el error inicial (para mí), en realidad fue eludir a la problema de raíz equivocado

Solución para esto en Windows: asegúrese de ejecutar cmd o git elevated , luego ejecute:

 git clone https://github.com/RuudBurger/CouchPotatoServer.git 

Lo anterior fue mi problema y simplemente elevar funcionó para mí.

Eliminando con

rm -rf. *

puede meterlo en problemas o algunos errores más.

Si tiene la carpeta / path / to / y desea eliminar todo lo que está dentro, pero no esa carpeta, simplemente ejecute:

rm -rf / ruta / a / carpeta / *

 shopt -s dotglob git clone ssh://user@host.com/home/user/private/repos/project_hub.git tmp && mv tmp/* . && rm -rf tmp 

Tenía la misma necesidad. En mi caso, tenía una carpeta web estándar creada por una installation de server web. A los fines de esta ilustración, digamos que esto es

/server/webroot

y webroot contiene otros files y carpetas estándar. Mi repository solo tiene los files específicos del sitio (html, javascript, CFML, etc.)

Todo lo que tenía que hacer era:

 cd /server/webroot git init git pull [url to my repo.git] 

Debes tener cuidado de hacer el git init en la carpeta de destino porque si NO ocurre una de estas dos cosas:

  1. El git pull simplemente fallará con un post sobre ningún file git, en mi caso:

fatal: no es un repository de git (ni ninguno de los directorys principales): .git

  1. Si hay un file .git en algún lugar de la ruta principal a su carpeta, su repository extraído se creará en ESE padre que contenga el file .git. Esto me pasó a mí y me sorprendió 😉

Esto NO alteró ninguno de los files "estándar" que tengo en mi carpeta de webroot, pero sí tuve que agregarlos al file .gitignore para evitar la adición inadvertida de ellos a las confirmaciones posteriores.

Esto parece una forma fácil de "clonar" en un directory no vacío. Si no desea los files .git y .gitignore creados por la extracción, simplemente elimínelos después de la extracción.

es útil crear un nuevo file por mkdir filename file mkdir filename , luego ejecutar el command de git clone xxxxx , funciona en mi computadora

si el repository es privado, primero agregue su key ssh use => git clone git@github.com: sunombnetworkingeusuario / yourrepo.git else use => git clone https://github.com/yourusername/yourrepo.git

He visto esta pregunta muchas veces, y solo quiero señalar que la git pull desde su directory hará el truco.

A less que me esté perdiendo algo aquí, eso funcionó para mí.