repositorio crear clonar carpeta git

git - crear - ¿Cómo puedo clonar en un directorio no vacío?



git clone (13)

Tengo el directorio A con los archivos que coinciden con el directorio B. El directorio A puede tener otros archivos necesarios. Directorio B es un repositorio git.

Quiero clonar el directorio B en el directorio A, pero git-clone no me lo permitirá, ya que el directorio no está vacío.

Tenía la esperanza de que simplemente clonara .git y, como todos los archivos coinciden, ¿podría ir desde allí?

No puedo clonar en un directorio vacío porque tengo archivos en el directorio A que no están en el directorio B y quiero conservarlos.

Copiar .git no es una opción ya que quiero que los refs presionen / tiren con y no quiero configurarlos manualmente.

¿Hay alguna manera de hacer esto?

Actualización: creo que esto funciona, ¿alguien puede ver algún problema? ->

cd a git clone --no-hardlinks --no-checkout ../b a.tmp mv a.tmp/.git . rm -rf a.tmp git unstage # apparently git thinks all the files are deleted if you don''t do this


En los siguientes comandos de shell, existing-dir es un directorio cuyo contenido coincide con los archivos rastreados en el repo-to-clone git de repo-to-clone .

# Clone just the repository''s .git folder (excluding files as they are already in # `existing-dir`) into an empty temporary directory git clone --no-checkout repo-to-clone existing-dir/existing-dir.tmp # might want --no-hardlinks for cloning local repo # Move the .git folder to the directory with the files. # This makes `existing-dir` a git repo. mv existing-dir/existing-dir.tmp/.git existing-dir/ # Delete the temporary directory rmdir existing-dir/existing-dir.tmp cd existing-dir # git thinks all files are deleted, this reverts the state of the repo to HEAD. # WARNING: any local changes to the files will be lost. git reset --hard HEAD


Estaba buscando algo similar, y esto es lo que se me ocurrió:

Mi situación es en la que tengo un árbol web activo e intenté crear un repositorio remoto para él sin mover ninguno de los archivos del árbol web actual. Esto es lo que hice:

  1. Ve al árbol web y ejecuta git init
  2. Vaya a la ubicación deseada del repositorio y ejecute: git clone --bare /path/to/web/repo
  3. Edite el archivo de configuración en mi repositorio remoto y elimine la sección [remote "origin"] .
  4. Agregue una sección [remote "origin"] a .git / config en el árbol web que apunta al nuevo repositorio remoto.

Este es un trabajo para mí, pero debe combinar los archivos del repositorio remoto con los archivos locales:

git init git remote add origin url-to-git git branch --set-upstream-to=origin/master master git fetch git status


Esto es lo que estoy haciendo:

git clone repo /tmp/folder cp -rf /tmp/folder/.git /dest/folder/ cd /dest/folder git checkout -f master


Esto es lo que terminé haciendo cuando tuve el mismo problema (al menos creo que es el mismo problema). Entré en el directorio A y ejecuté git init .

Como no quería que los archivos del directorio A fueran seguidos por git, edité .gitignore y le agregué los archivos existentes. Después de esto ejecuté git remote add origin ''<url>'' && git pull origin master et voíla, B se "clona" en A sin un solo problema.


Esto funcionó para mí:

cd existing_folder git init git remote add origin path_to_your_repo.git git add . git commit git push -u origin master


Esto funcionó para mí:

git init git remote add origin PATH/TO/REPO git fetch git reset origin/master # this is required if files in the non-empty directory are in the repo git checkout -t origin/master

NOTA: - establecerá la rama ascendente para usted, si eso es lo que quiere, y generalmente lo es.


He usado esto hace unos momentos, requiere los comandos menos potencialmente destructivos:

cd existing-dir git clone --bare repo-to-clone .git git config --unset core.bare git reset

¡Y voilá!


Me gustó la respuesta de Dale, y también agregué

git clone --depth 2 --no-checkout repo-to-clone existing-dir/existing-dir.tmp git branch dev_new214 git checkout dev_new214 git add . git commit git checkout dev git merge dev_new214

La poca profundidad evitó un montón de compromisos de desarrollo temprano adicionales. La nueva sucursal nos dio un buen historial visual de que había un código nuevo de este servidor que se colocó. Ese es el uso perfecto de las sucursales en mi opinión. Mi agradecimiento a la gran visión de todas las personas que publicaron aquí.


Otra receta simple parece funcionar bien para mí:

git clone --bare $URL .git git config core.bare false

Mi principal caso de uso para acceder a un directorio con archivos existentes es controlar mis archivos de puntos Unix con Git. En una nueva cuenta, el directorio de inicio ya tendrá algunos archivos, posiblemente incluso los que deseo obtener de Git.


Tal vez entendí mal su pregunta, pero ¿no sería más sencillo si copia / mueve los archivos de A al repositorio de git B y agrega los necesarios con git add ?

ACTUALIZACIÓN: Desde el git doc:

La clonación en un directorio existente solo se permite si el directorio está vacío.

FUENTE: http://git-scm.com/docs/git-clone


Una ligera modificación a una de las respuestas que me funcionó:

git init git remote add origin PATH/TO/REPO git pull origin master

para empezar a trabajar en la rama maestra de inmediato.


git init git remote add origin PATH/TO/REPO git fetch git checkout -t origin/master -f

Modificado a partir de la respuesta de @ cmcginty - sin el -f no funcionó para mí