Estoy haciendo:
git clone ssh://[email protected]/home/user/private/repos/project_hub.git ./
Me estoy poniendo:
Fatal: ruta de destino '.' ya existe y no es un directorio vacío.
Conozco el camino ya existe. Y puedo asegurar que el directorio ESTÁ vacío. (¡Lo hago dentro y no veo nada!)
¿Qué me estoy perdiendo aquí para clonar ese proyecto en el directorio actual?
ls -a
¿ves un.git
directorio?Respuestas:
simplemente pon un punto al lado
De
git help clone
:Así que asegúrese de que el directorio esté vacío (verifique con
ls -a
), de lo contrario el comando fallará.fuente
ls -la
mkdir
crea enlaces duros.
y,..
de manera predeterminada, ¿hay un nuevo directorio técnicamente "vacío" en los sistemas basados en Unix? Es decir, yo supongo que se podríaunlink .
yunlink ..
pero que podría causar grandes problemas en el futuro si se olvida de volver a vincular de nuevo después de la clonación ....Lo siguiente probablemente no sea totalmente equivalente a un clon en todos los casos, pero me sirvió:
En mi caso, esto produce un
.git/config
archivo que es equivalente al que obtengo al hacer un clon.fuente
*
(ignorar todo) podía realizarlogit checkout master
aunque ya había otros archivos en la carpeta. Luego, todos los archivos confirmados del repositorio se clonaron (y el .gitignore temporal fue sobrescrito por el .gitignore apropiado del repositorio). Todo funcionó maravillosamente. Debería suceder de esta manera por sí mismo usandogit clone -f
o algo.-t \*
es innecesario ya que es el predeterminado.git remote set-head origin -a
Podría ser útil. Establece la rama predeterminada del origen (refs/remotes/origin/HEAD
) tal como se establece en el repositorio remoto.git clone
hace esto automáticamente, a diferenciagit remote add -f
.@ Andrew lo ha respondido claramente aquí . Pero tan simple como esto también funciona incluso si el directorio no está vacío:
fuente
<repository-url>
que también puede ser un repositorio local comogit remote add origin /path/to/existing/repo
Para asegurarse de que puede clonar el repositorio, vaya a cualquier directorio temporal y clone el proyecto allí:
Esto clonará tus cosas en un
project_hub
directorio.Una vez que la clonación haya finalizado, puede mover este directorio a donde quiera:
Esto es seguro y no requiere ninguna cosa mágica.
fuente
/path/to/new/location
directorio preexistente que ciertamente no es el punto de la pregunta.fuente
Hacer
El directorio debe estar vacío.
fuente
Hmm ... especificando la ruta actual absoluta usando
$(pwd)
funcionó para mí.versión de git: 2.21.0
fuente
Si el directorio actual está vacío, esto funcionará:
fuente
Además de la respuesta de @ StephaneDelcroix, antes de usar:
asegúrese de que su directorio actual esté vacío usando
fuente
Solución: en este caso, la solución estaba usando el
dot
, entonces:rm -rf .* && git clone ssh://[email protected]/home/user/private/repos/project_hub.git .
rm -rf .* &&
puede omitirse si estamos absolutamente seguros de que el directorio está vacío.Los créditos van a: @James McLaughlin en los comentarios a continuación.
fuente
ls -d .*
. ..
me: ~ / tmp / tmp / tmp $rm -rf ./.*
es "más seguro" si solo elimina los archivos y directorios ocultos (punto) en el directorio actual (tal como @stackunderflow declaró antes que yo). Perorm -rf
es un comando peligroso para los usuarios inexpertos, ¡así que ten cuidado! Solo mis 2 centavos..git
despuésgit init
(lo sabía)-rf
eliminar archivos normales. Considere eliminar esta respuesta o al menos aceptar una diferente.Mejorando la respuesta de @ GoZoner:
El comando shopt se toma de esta respuesta SO y cambia el comportamiento del comando 'mv' en Bash para incluir archivos de puntos, que deberá incluir el directorio .git y cualquier otro archivo oculto.
También tenga en cuenta que esto solo se garantiza que funcione tal cual si el directorio actual (.) Está vacío, pero funcionará siempre que ninguno de los archivos en el repositorio clonado tenga el mismo nombre que los archivos en el directorio actual. Si no le importa lo que hay en el directorio actual, puede agregar la opción -f (force) al comando 'mv'.
fuente
Tenía esta misma necesidad. En mi caso, tenía una carpeta web estándar creada por la instalación de un servidor web. Para los propósitos de esta ilustración, digamos que esto es
/server/webroot
y webroot contiene otros archivos y carpetas estándar. Mi repositorio solo tiene los archivos específicos del sitio (html, javascript, CFML, etc.)
Todo lo que tuve que hacer fue:
Debe tener cuidado al hacer git init en la carpeta de destino porque si NO lo hace, sucederá una de dos cosas:
Esto NO molestó ninguno de los archivos "estándar" que tengo en mi carpeta webroot, pero sí tuve que agregarlos al archivo .gitignore para evitar la adición inadvertida de ellos a las confirmaciones posteriores.
Esto parece una manera fácil de "clonar" en un directorio no vacío. Si no desea los archivos .git y .gitignore creados por la extracción, simplemente elimínelos después de la extracción.
fuente
Mejorando aún más la respuesta de @ phatblat :
como un trazador de líneas:
git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master
fuente
fuente
use. (punto) al final de su comando como a continuación
URL de clonación de git .
fuente
fatal: destination path '.' already exists and is not an empty directory.
Aquí fue lo que encontré:
Veo esto:
Entre mis búsquedas, me topé con:
https://couchpota.to/forum/viewtopic.php?t=3943
Busque la entrada de Clinton. Hall ... Si intenta esto (como lo hice), probablemente obtendrá la
access denied
respuesta, allí estaba mi primera pista, por lo que el error inicial (para mí), en realidad, estaba eludiendo a la raíz incorrecta problema.Solución para esto en Windows: asegúrese de ejecutar
cmd
ogit elevated
, luego, ejecute:Lo anterior fue mi problema y simplemente elevarme funcionó para mí.
fuente
La solución
Windows
es clonar el repositorio en otra carpeta y luego copiar y pegar en la ubicación original o simplemente copiar la.git
carpeta invisible.fuente
Eliminar con
puede meterte en problemas o algunos errores más.
Si tiene / ruta / a / carpeta, y desea eliminar todo lo que hay dentro, pero no esa carpeta, simplemente ejecute:
fuente
Así que solucioné este mismo error eliminando la carpeta oculta .git en mi directorio raíz y luego agregué un punto al 'repositorio de clones de git'. en mi carpeta raíz / dist. Esto está en el contexto de un proyecto de paquete web vue-cli. Entonces, lo que todos los demás dicen es correcto, ¡generalmente significa que tiene un seguimiento de git en la carpeta en la que está tratando de clonar o en la carpeta principal o raíz de la carpeta en cuestión!
fuente
fuente
si el repositorio es privado, primero agregue su clave ssh use => git clone [email protected]: yourusername / yourrepo.git más use => git clone https://github.com/yourusername/yourrepo.git
fuente
es útil crear un nuevo archivo
mkdir filename
y luego ejecutar el comando degit clone xxxxx
, funciona en mi computadorafuente
He visto esta pregunta muchas veces, y solo quiero señalar que
git pull
desde su directorio hará el truco.A menos que me falte algo aquí, eso funcionó para mí.
fuente
git pull
no hará nada si no tiene un repositorio definido, que es una parte crítica de lo quegit clone
hace.