¿Cómo clonar un repositorio de Git en una carpeta específica?
-
19-08-2019 - |
Pregunta
Ejecutar el comando git clone git@github.com:whatever
crea un directorio en mi carpeta actual llamado lo que sea, y coloca el contenido del repositorio de Git en esa carpeta:
/httpdocs/whatever/public
Mi problema es que necesito el contenido del repositorio de Git clonado en mi directorio actual para que aparezcan en la ubicación adecuada para el servidor web:
/httpdocs/public
Sé cómo mover los archivos después de haber clonado el repositorio, pero esto parece romper Git, y me gustaría poder actualizar simplemente llamando a git pull
. ¿Cómo puedo hacer esto?
Solución
Opción A:
git clone git@github.com:whatever folder-name
Ergo, para right here
uso:
git clone git@github.com:whatever .
Opción B:
Mueva la carpeta .git
también. Tenga en cuenta que la carpeta shopt -s dotglob
está oculta en la mayoría de los exploradores de archivos gráficos, así que asegúrese de mostrar los archivos ocultos.
mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/
La primera línea toma todos los archivos normales, la segunda línea toma los archivos de puntos. También es posible hacerlo en una línea habilitando dotglob (es decir, -fn
) pero esa es probablemente una mala solución si hace la pregunta que responde esta respuesta.
Mejor aún:
Guarde su copia de trabajo en otro lugar y cree un enlace simbólico. Así:
ln -s /where/it/is/right/now /the/path/I/want/to/use
Para usted, esto sería algo así como:
ln -sfn /opt/projectA/prod/public /httpdocs/public
Que fácilmente se puede cambiar para probar si lo desea, es decir:
ln -sfn /opt/projectA/test/public /httpdocs/public
sin mover archivos. Se agregó -f
en caso de que alguien esté copiando estas líneas (-n
es forzado, <=> evite algunas interacciones a menudo no deseadas con enlaces ya existentes o no existentes).
Si solo quieres que funcione, usa la Opción A, si alguien más va a ver lo que has hecho, usa la Opción C.
Otros consejos
El ejemplo que creo que mucha gente hace esta pregunta es este. Si está en el directorio al que desea volcar el contenido del repositorio de git, ejecute:
git clone git@github.com:whatever .
El ". " al final especifica la carpeta actual como la carpeta de pago.
Vaya a la carpeta .. Si la carpeta está vacía, entonces:
git clone git@github.com:whatever .
más
git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
Clonación básica del repositorio de Git
Clonas un repositorio con
git clone [url]
Por ejemplo, si desea clonar la biblioteca Git de Marco Abierto de Drupal de la Universidad de Stanford llamada open_framework, puede hacerlo así:
$ git clone git://github.com/SU-SWS/open_framework.git
Eso crea un directorio llamado open_framework (en su ubicación actual del sistema de archivos local), inicializa un directorio .git dentro de él, extrae todos los datos para ese repositorio y extrae una copia de trabajo de la última versión. Si ingresa al directorio open_framework recién creado, verá & # 8217; verá los archivos del proyecto allí, listos para trabajar o usar.
Clonación de un repositorio en una carpeta local específica
Si desea clonar el repositorio en un directorio llamado algo diferente a open_framework, puede especificarlo como la siguiente opción de línea de comandos:
$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme
Ese comando hace lo mismo que el anterior, pero el directorio de destino se llama mynewtheme.
Git tiene varios protocolos de transferencia diferentes que puede usar. El ejemplo anterior usa el protocolo git: //, pero también puede ver http (s): // o user @ server: /path.git, que usa el protocolo de transferencia SSH.
Cuando mueve los archivos a donde los quiere, ¿también está moviendo el directorio .git
? Dependiendo de su sistema operativo y configuración, este directorio puede estar oculto.
Contiene el repositorio y los archivos de soporte, mientras que los archivos de proyecto que están en su directorio /public
son solo las versiones en la confirmación de salida actual (rama maestra por defecto).
Clonar:
git clone git@jittre.unfuddle.com:jittre/name.git
Clone la " rama específica " ;:
git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git
Para clonar el repositorio de git en una carpeta específica, puede usar el parámetro -C <path>
, por ejemplo,
git -C /httpdocs clone git@github.com:whatever
Aunque seguirá creando una carpeta whatever
encima, por lo que para clonar el contenido del repositorio en el directorio actual, use la siguiente sintaxis:
git git@github.com:whatever .
Tenga en cuenta que la clonación en un directorio existente está solo permitido cuando el directorio está vacío .
Dado que está clonando en una carpeta accesible para el público, considere separar su repositorio de Git de su árbol de trabajo utilizando --separate-git-dir=<git dir>
o excluya la carpeta .git
en la configuración de su servidor web (por ejemplo, en el archivo .htaccess
).
Si desea clonar en la carpeta actual, debe intentar esto:
git clone https://github.com/example/example.git ./
Para clonar al directorio de trabajo actual :
clon git https://github.com/link.git
Para clonar a Otro directorio :
clon git https://github.com/link.git ./Folder1/ Carpeta2
Espero que ayude :)
Asegúrese de eliminar el repositorio .git si está tratando de verificar algo en el directorio actual.
rm -rf .git
luego git clone https://github.com/symfony/symfony-sandbox.git
Usuario
git clone <repository>
Clone el repositorio ubicado en < repositorio > en la máquina local. El repositorio original se puede ubicar en el sistema de archivos local o en una máquina remota accesible a través de HTTP o SSH.
git clone <repo> <directory>
Clone el repositorio ubicado en < repositorio > en la carpeta llamada < directorio > en la máquina local.
Fuente: Configuración de un repositorio
Así es como lo haría, pero he creado un alias para hacerlo por mí.
$ cd ~Downloads/git; git clone https:git.foo/poo.git
Probablemente haya una forma más elegante de hacer esto, sin embargo, me pareció más fácil para mí.
Aquí está el alias que creé para acelerar las cosas. Lo hice para zsh, pero debería funcionar bien para bash o cualquier otro shell como fish, xyzsh, fizsh, etc.
Edite ~/.zshrc
, /.bashrc
, etc. con su editor favorito (el mío es Leafpad, así que escribiría $ leafpad ~/.zshrc
).
Sin embargo, mi preferencia personal es crear un complemento zsh para realizar un seguimiento de todos mis alias. Puede crear un complemento personal para oh-my-zsh ejecutando estos comandos:
$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
# In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
# Again, in my case 'ev-aliases.plugin.zsh'
Luego, agregue estas líneas a su archivo alises.plugin en blanco recién creado:
# Git aliases
alias gc="cd ~/Downloads/git; git clone "
(A partir de aquí, reemplace su nombre por el mío).
Entonces, para que los alias funcionen, ellos (junto con zsh) tienen que ser adquiridos (o como se llame). Para hacerlo, dentro de su documento de complemento personalizado agregue esto:
## Ev's Aliases
#### Remember to re-source zsh after making any changes with these commands:
#### These commands should also work, assuming ev-aliases have already been sourced before:
allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
####
####################################
# git aliases
alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "
####################################
Guarde su complemento oh-my-zsh y ejecute allsource
. Si eso no parece funcionar, simplemente ejecute source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh
. Eso cargará la fuente del complemento que le permitirá usar <=> de ahora en adelante.
Estoy en el proceso de hacer un repositorio Git con todos mis alias. No dude en consultarlos aquí: archivos de puntos de Ev . No dude en bifurcar y mejorarlos para satisfacer sus necesidades.
Por alguna razón, esta sintaxis no se destaca:
git clone repo-url [folder]
Aquí la carpeta es una ruta opcional a la carpeta local (que será un repositorio local).
Git clone
también pull
codificará desde el repositorio remoto al repositorio local.
De hecho es cierto:
git clone repo-url = git init + git remote add origin repo-url + git pull
Si está utilizando ssh
para git cloning
puede usar el siguiente comando.
git -C path clone git@github.com:path_to_repo.git
por ejemplo:
git -C /home/ubuntu/ clone git@github.com:kennethreitz/requests.git
extraería el repositorio git de requests
a su /home/ubuntu/
ruta.
For Windows user
1> Open command prompt.
2> Change the directory to destination folder (Where you want to store your project in local machine.)
3> Now go to project setting online(From where you want to clone)
4> Click on clone, and copy the clone command.
5> Now enter the same on cmd .
It will start cloning saving on the selected folder you given .
Te recomendaré que sigas el siguiente enlace:
https://help.github.com/en/articles/cloning-a-repository
Si obtiene el siguiente error mientras git clone URL comando
fatal: unable to access 'URL': Could not resolve host: github.com
Luego use el siguiente comando para solucionarlo:
git config --global --unset https.proxy
Con respecto a esta línea de la publicación original:
" Sé cómo mover los archivos después de haber clonado el repositorio, pero esto parece romper git "
Soy capaz de hacer eso y hasta ahora no veo ningún problema con mis operaciones de agregar, confirmar, empujar, jalar.
Este enfoque se indica anteriormente, pero no se desglosa en pasos. Estos son los pasos que funcionan para mí:
- clone el repositorio en cualquier carpeta temporal nueva
- cd en esa carpeta raíz que acaba de clonar localmente
- copie todo el contenido de la carpeta, incluido el directorio /.git, en cualquier carpeta existente que desee; (diga un proyecto de eclipse que desee fusionar con su repositorio)
La carpeta existente en la que acaba de copiar los archivos ahora está lista para interactuar con git.