tutorial mac gui for español descargar commands git

mac - git repository



¿Cuál es la mejor práctica para "clonar git" en una carpeta existente? (12)

Esto se puede hacer clonando a un nuevo directorio, luego moviendo el directorio .git a su directorio existente.

Si su directorio existente se llama "código".

git clone https://myrepo.com/git.git temp mv temp/.git code/.git rm -rf temp

Esto también se puede hacer sin realizar una comprobación durante el comando de clonación; Más información se puede encontrar here .

Tengo una copia de trabajo del proyecto, sin ningún tipo de metadatos de control de origen. Ahora, me gustaría hacer el equivalente de git-clone en esta carpeta y mantener mis cambios locales.

git-clone no me permite clonar en una carpeta existente. ¿Cuál es la mejor práctica aquí?


Hay dos enfoques para esto. Donde sea posible, comenzaría con una carpeta limpia para su nuevo directorio de trabajo de git y luego copiaría su versión de las cosas más adelante. Esto puede parecer algo como *:

cd myfolder git clone https://myrepo.com/git.git .

En este punto, debe tener una copia de trabajo bastante limpia con su carpeta de trabajo anterior como el directorio de trabajo actual, por lo que cualquier cambio que incluya la eliminación de archivos aparecerá en el radar si ejecuta el git status .

Por otro lado, si realmente debes hacerlo al revés, puedes obtener el mismo resultado con algo como esto:

mv $dir $dir.orig git clone $url $dir rsync -av --delete --exclude ''.git'' $dir.orig/ $dir/ rm -rf $dir.orig

De cualquier manera, lo primero que haría es ejecutar algo como git stash para obtener una copia de todos los cambios locales que ha dejado de lado, luego puede volver a aplicarlos y trabajar con los que desea comprometerse.

* Ambos ejemplos suponen que comienzas en el shell en el directorio principal de tu proyecto.


Lo siguiente hice, para verificar la rama maestra en un directorio existente:

git init git remote add origin [my-repo] git fetch git checkout origin/master -ft


Me gustaría git clone a un nuevo directorio y copiar el contenido del directorio existente al nuevo clon.


Muchas respuestas ya lo hacen de la manera que pidió el OP. Pero vale la pena señalar que hacerlo al revés es mucho más simple:

git clone repo-url tmp/ cp -R working/ tmp/

Ahora tiene el estado de destino deseado: clone fresco + cambios locales.


No clonar, buscar en su lugar. En el repositorio:

git init git remote add origin $url_of_clone_source git fetch origin git checkout -b master --track origin/master # origin/master is clone''s default

Luego, puede restablecer el árbol para obtener la confirmación que desea:

git reset origin/master # or whatever commit you think is proper...

y eres como has clonado.

La pregunta interesante aquí (y la que no tiene respuesta): cómo saber en qué comisión se basó su árbol desnudo, por lo tanto, en qué posición reiniciar.


Para clonar un repositorio git en un directorio existente vacío, haga lo siguiente:

cd $dir git clone --no-checkout $url tempdir mv tempdir/.git . rmdir tempdir git reset --mixed HEAD

Observe el . al final de su comando git clone . Eso descargará el repositorio en el directorio de trabajo actual.


Por lo general, primero clonaré el repositorio inicial y luego moveré todo en la carpeta existente al repositorio inicial. Funciona todo el tiempo.

La ventaja de este método es que no perderá nada del repositorio inicial, incluidos README o .gitignore.

También puedes usar el siguiente comando para finalizar los pasos:

$ git clone https://github.com/your_repo.git && mv existing_folder/* your_repo


Si está utilizando al menos git 1.7.7 (que enseñó a clone la opción --config ), para convertir el directorio actual en una copia de trabajo:

git clone example.com/my.git ./.git --mirror --config core.bare=false

Esto funciona por:

  • Clonando el repositorio en una nueva carpeta .git
  • --mirror convierte el nuevo clon en una carpeta de metadatos .git como .git debe ser
  • --config core.bare=false el implícito bare=true de la opción --mirror , permitiendo así que el repositorio tenga un directorio de trabajo asociado y actúe como un clon normal

Obviamente, esto no funcionará si ya existe un directorio de metadatos .git en el directorio que desea convertir en una copia de trabajo.


Usar un directorio temporal está bien, pero esto funcionará si quiere evitar ese paso. Desde la raíz de su directorio de trabajo:

$ rm -fr .git $ git init $ git remote add origin your-git-url $ git fetch $ git reset --mixed origin/master


Este es el mejor de todos los métodos que encontré

Clone solo la carpeta .git del repositorio (excluyendo los archivos que ya están en existing-dir ) en un directorio temporal vacío

  1. git clone --no-checkout repo-path-to-clone existing-dir/existing-dir.tmp // puede querer --no-hardlinks para clonar el repositorio local

Mueva la carpeta .git al directorio con los archivos. Esto hace de existing-dir un git repo.

  1. mv existing-dir/existing-dir.tmp/.git existing-dir/

Eliminar el directorio temporal

  1. rmdir existing-dir/existing-dir.tmp

  2. cd existing-dir

Git piensa que todos los archivos se eliminan, esto revierte el estado del repositorio a HEAD.

ADVERTENCIA: cualquier cambio local a los archivos se perderá.

  1. git reset --hard HEAD

git clone your_repo tmp && mv tmp/.git . && rm -rf tmp && git reset --mixed