Herramientas de usuario

Herramientas del sitio


clase:daw:daw:1eval:tema05

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:daw:daw:1eval:tema05 [2022/12/07 13:17]
admin [Estados de un fichero]
clase:daw:daw:1eval:tema05 [2024/03/02 13:01] (actual)
admin [Sincronización de Git]
Línea 13: Línea 13:
 {{chiste_git.png|}} {{chiste_git.png|}}
  
 +
 +{{:clase:daw:daw:1eval:git-command-line.jpg?330|}}
 +
 +
 +[[https://survey.stackoverflow.co/2022#version-control-vc-interaction|Source:Stack overflow Developer survey 2022]]
 +
 +
 +
 +  Código nuestro que estas en GitHub.
 +  Santificados sean tus commits.
 +  Venga a nosotros tu fetch.
 +  Hágase tu merge tanto en remoto como en local.
 +  Danos hoy nuestro branch de cada día.
 +  Perdona nuestras pulls, así como también nosotros perdonamos a los que nos pushean más rápido;
 +  No nos dejes caer en los conflictos,
 +  y líbranos del checkout.
 +  Amén
 +  ---Javier del Moral (2023)
 ====== Instalando Git ====== ====== Instalando Git ======
 Al instalar Git en Windows hay varias opciones a tener en cuenta que explicaremos en clase. Al instalar Git en Windows hay varias opciones a tener en cuenta que explicaremos en clase.
Línea 61: Línea 79:
  
 <note tip> <note tip>
-La //**staged area**// en git también se llama a veces //**cached**// o //**index**//. Es que hay comandos que usan el modificador ''--cached'' para referirse a la //staged area// otros usan ''--staged''.+La //**staged area**// en git también se llama a veces //**cached**// o //**index**//  o //**arbol de trabajo**//. Es que hay comandos que usan el modificador ''--cached'' para referirse a la //staged area//  otros usan ''--staged'' y otro ''--worktree''..
  
   * El comando [[https://git-scm.com/docs/git-rm|git rm]] usa el modificador ''--cached'' para referirse a la //staged area//   * El comando [[https://git-scm.com/docs/git-rm|git rm]] usa el modificador ''--cached'' para referirse a la //staged area//
-  * El comando [[https://git-scm.com/docs/git-restore|git restore]] usa el modificador ''--staged'' para referirse a la //staged area// +  * El comando [[https://git-scm.com/docs/git-restore|git restore]] usa el modificador ''--staged'' o ''--worktree'' para referirse a la //staged area// 
-  * El comando [[https://git-scm.com/docs/git-restore|git diff]] usa el modificador ''--staged'' o ''--cached'' para referirse a la //staged area//+  * El comando [[https://git-scm.com/docs/git-restore|git diff]] usa el modificador ''--cached'' o ''--staged''   para referirse a la //staged area//
  
  
 +^  ^  ''--cached''  ^  ''--staged''  ^  ''--worktree''  ^
 +^  ''git rm''  |  ✓  |  |  |
 +^  ''git restore''  |    ✓  |  ✓  |
 +^  ''git diff''  |  ✓  |  ✓  |  |
 </note> </note>
  
 +
 +<note tip>
 +Por defecto todos los ficheros del anterior commit ya está en el staged area, por eso para quitar un fichero de git hay que borrarlo del staged area. ''git rm --cached fichero''.
 +</note>
  
 {{:clase:daw:daw:1eval:git-estados.png|}} {{:clase:daw:daw:1eval:git-estados.png|}}
Línea 166: Línea 192:
 Más información: Más información:
   * [[https://stackoverflow.com/questions/65434544/whats-the-difference-between-git-rm-cached-git-restore-staged-and-gi|What's the difference between 'git rm --cached', 'git restore --staged', and 'git reset']]   * [[https://stackoverflow.com/questions/65434544/whats-the-difference-between-git-rm-cached-git-restore-staged-and-gi|What's the difference between 'git rm --cached', 'git restore --staged', and 'git reset']]
-  *  
  
 ===== Sincronización de Git ===== ===== Sincronización de Git =====
 Una misma rama en git puede estar en varios sitios a la vez. El repositorio es el historio donde están todos los //commits// que se han hecho. Una misma rama en git puede estar en varios sitios a la vez. El repositorio es el historio donde están todos los //commits// que se han hecho.
 +
 +{{:clase:daw:daw:1eval:chiste-git-force.jpg?direct|}}
  
 Vamos a explicar cada uno de ellos suponiendo que estamos en la rama ''master''. Vamos a explicar cada uno de ellos suponiendo que estamos en la rama ''master''.
Línea 184: Línea 211:
 {{:clase:daw:daw:1eval:repositorios.png|}} {{:clase:daw:daw:1eval:repositorios.png|}}
  
-  * Para poner en el área de trabajo una copia del último //commit// de ''master''.+  * Para poner en el área de trabajo una copia del último //commit// de ''master'' que es lo mismo que moverse a la rama ''master''. Tambien se puede usar con un hash de un commit.
  
-  git checkout master+  git switch master
  
 \\ \\
Línea 199: Línea 226:
 \\ \\
 \\ \\
-  * Para copiar lo que hay en el repositorio remoto en la copia del repositorio remoto, es decir en ''origin/master''.+  * Para copiar lo que hay en el repositorio remoto en una rama local que es después del fetch siempre copia del repositorio remoto, es decir en ''origin/master''.
  
   git fetch   git fetch
Línea 208: Línea 235:
 \\ \\
  
-  * Para copiar lo que hay en el repositorio remoto en nuestra rama loca, es decir en ''master'' y ''origin/master''. Como en nuestra rama puede ser distinta, se hace un ''merge'' sobre nuestra rama.+  * Para copiar lo que hay en el repositorio remoto en nuestras ramas locales, es decir en ''master'' y ''origin/master''. Como nuestra rama puede ser distinta, se hace un ''merge'' sobre nuestra rama. **Lo cual es peligroso.**
  
   git pull   git pull
Línea 356: Línea 383:
   git switch develop   git switch develop
  
 +Si la rama es del tipo ''origin/nombre_rama'' hay que indicar ''--detach'' ya que sobre esa rama no se pueden crear commit puesto que esa rama viene del remoto con ''git fetch''
  
 +  git switch --detach origin/develop
  
  
 ==== Commits ==== ==== Commits ====
-Podemos movernos a un commit anterior de forma que los ficheros de ese commit estén en nuestro directorio de trabajo. El lanzar esta orden no modifica ningún commit.Su utilidad es ver como estaba el código en estados anteriores.+Podemos movernos a un commit anterior de forma que los ficheros de ese commit estén en nuestro directorio de trabajo. El lanzar esta orden no modifica ningún commit.Su utilidad es ver como estaba el código en estados anteriores. Hay que indicar ''--detach'' ya que sobre commit no se pueden añadir más commits yaque ya están añadidos ya que es un commit que está a mitad del arbol de git.
  
   git switch --detach 2308b63   git switch --detach 2308b63
Línea 407: Línea 436:
  
   git config --global credential.helper store   git config --global credential.helper store
 +  
 +  
 +===== Stash =====
 +Hay veces que queremos guardar temporalmente los cambios para después volver a ellos, por ejemplo si queremos cambiar de rama.
 +
 +git contiene una orden para hacer eso que es ''git stash''.
 +
 +  * Guardar solo lo que está en la //stage area//.
 +<sxh bash  >
 +git stash push
 +</sxh>
 +
 +
 +  * Guarda todos los ficheros aunque NO estén en la //stage area//. Es decir, también los ficheros nuevos
 +git contiene una orden para hacer eso:
 +<sxh bash>
 +git stash push --all
 +</sxh>
 +
 +
 +Y si luego queremos recuperar los cambios se hace con:
 +
 +<sxh bash>
 +git stash pop
 +</sxh>
 +
  
 ===== Log ===== ===== Log =====
clase/daw/daw/1eval/tema05.1670415469.txt.gz · Última modificación: 2022/12/07 13:17 por admin