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 [2024/09/22 20:06]
admin [Stash]
clase:daw:daw:1eval:tema05 [2025/05/21 09:59] (actual)
admin [Log]
Línea 157: Línea 157:
 También se puede añadir el argumento ''--worktree'' de forma que quede ''git restore --worktree fichero'' pero no es necesario ya que se hace por defecto. Pero si se usara ''--staged'' no se modifica el área de trabajo por defecto y en ese caso sería necesario añadirlo. También se puede añadir el argumento ''--worktree'' de forma que quede ''git restore --worktree fichero'' pero no es necesario ya que se hace por defecto. Pero si se usara ''--staged'' no se modifica el área de trabajo por defecto y en ese caso sería necesario añadirlo.
  
-  ''git restore'' \\ ''fichero''   ''git restore'' \\ ''--staged fichero''  ''git restore'' \\ ''--worktree fichero''  |  ''git restore'' \\ ''--staged --worktree fichero''  | +^    Restaura el fichero en el //área de trabajo//    Restaura el fichero en el //staged area//  
-|  Restaura el fichero en el //área de trabajo//  |  ✓  |    |  ✓  |  ✓  | +| ''git restore fichero''   |  ✓     |  
- Restaura el fichero en el //staged area//    |  ✓  |   ✓  | +''git restore --worktree fichero''  |  ✓  |    | 
 +''git restore --worktree --staged fichero''  |  ✓  |  ✓  | 
 +''git restore --staged fichero''     |  ✓  |
 </note> </note>
  
Línea 271: Línea 272:
   * Para //mergear// lo que hay en la rama ''origin/master'' en la rama ''master''.   * Para //mergear// lo que hay en la rama ''origin/master'' en la rama ''master''.
  
-  git merge origin/master+  git merge --ff-only origin/master
  
 \\ \\
Línea 290: Línea 291:
   * Para añadir un nuevo remote   * Para añadir un nuevo remote
  
-  git remote add otroservidor https://www.otroservidor.com/lgonzalezmislata/prueba.git+  git remote add nombreminuevoremote https://www.otroservidor.com/lgonzalezmislata/prueba.git
  
 Una vez creado el remote ''otroservidor'' ya podremos usarlo en los comandos ''git push'', ''git fetch'' o ''git pull'' además de usar ''origin'' Una vez creado el remote ''otroservidor'' ya podremos usarlo en los comandos ''git push'', ''git fetch'' o ''git pull'' además de usar ''origin''
Línea 387: Línea 388:
   * [[https://styde.net/deshaciendo-cosas-en-git/|Deshaciendo cosas en Git]]   * [[https://styde.net/deshaciendo-cosas-en-git/|Deshaciendo cosas en Git]]
   * [[https://devconnected.com/how-to-git-reset-to-head/|How To Git Reset to HEAD]]   * [[https://devconnected.com/how-to-git-reset-to-head/|How To Git Reset to HEAD]]
 +
 +===== Deshacer commits =====
 +Una vez que hemos subido un commit a GitHub es una muy mala práctica borrar un commit sin embargo si queremos deshacer algo , podemos usar ''git revert <commit>''.
 +
 +
 +  * Se hace un nuevo commit que deshace el último commit
 +
 +  git revert HEAD~1
 +
 +  * Prepara un nuevo commit que deshace el último commit pero sin realmente hacer el commit. Lo que hace el modificar los ficheros y añadirlos a la //staged area//.Después se hace el commit. 
 +
 +
 +  git revert --no-commit HEAD~1
 +  git commit -am "Mensaje de commit"
 +
 +
 +<note tip>La opción ''--no-commit'' es útil porque nos permite revisar que va a hacer el commit y nos permite hacer alguna modificación más.
 +
 +Si no estamos interesados en hacer el commit lo podemos abortar con ''git revert --abort'' o usar el ya conocido ''git restore --staged --worktree fichero''.
 +</note>
 +
 +<note important>
 +En caso de un conflicto se deberá resolver el conflicto en el fichero, hacer el ''git add <fichero>'' y por último ya hacer el commit.
 +</note>
 +
 +
 +<note tip>
 +La diferencia entre ''git revert'' y ''git reset'' es que ''git revert'' crea un nuevo commit que deshace el trabajo de otro commit , mientras que ''git reset'' borra realmente los commits.
 +
 +
 +
 +  * Estado inicial de
 +
 +<flow>
 +%%{init: { 'logLevel': 'debug', 'theme': 'default','themeVariables': {  'git0': '#6D97CA','git1': '#00ffff' }, 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'master','rotateCommitLabel': false}} }%%
 +gitGraph
 + commit id: "A"
 + commit id: "B"
 + commit id: "C"
 +</flow>
 +
 +  * Si hacemos un ''git revert C'' quedará así
 +
 +<flow>
 +%%{init: { 'logLevel': 'debug', 'theme': 'default','themeVariables': {  'git0': '#6D97CA','git1': '#00ffff' }, 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'master','rotateCommitLabel': false}} }%%
 +gitGraph
 + commit id: "A"
 + commit id: "B"
 + commit id: "C"
 + commit id: "Revert C"
 +</flow>
 +
 +
 +  * Si hacemos un ''git reset --hard B'' quedará así
 +
 +<flow>
 +%%{init: { 'logLevel': 'debug', 'theme': 'default','themeVariables': {  'git0': '#6D97CA','git1': '#00ffff' }, 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'master','rotateCommitLabel': false}} }%%
 +gitGraph
 + commit id: "A"
 + commit id: "B"
 +</flow>
 +
 +
 +
 +</note>
 +
 +
 +
  
 ===== Moverse por git ===== ===== Moverse por git =====
Línea 458: Línea 527:
 git contiene una orden para hacer eso que es ''git stash''. git contiene una orden para hacer eso que es ''git stash''.
  
-  * Guardar solo lo que está en la //stage area//.+  * Guardar solo lo modificado (estén o no en el //staged area//)
 <sxh bash  > <sxh bash  >
 git stash push git stash push
Línea 466: Línea 535:
   * Guarda todos los ficheros aunque NO estén en la //stage area//. Es decir, también los ficheros nuevos. Y al hacer el ''pop'' se restaura el estado en el staged area.   * Guarda todos los ficheros aunque NO estén en la //stage area//. Es decir, también los ficheros nuevos. Y al hacer el ''pop'' se restaura el estado en el staged area.
 <sxh bash> <sxh bash>
-git stash push --include-untracked --index+git stash push --include-untracked
 </sxh> </sxh>
  
Línea 473: Línea 542:
 | Los ficheros modificados (estén o no en el //staged area// |  ✓  |  ✓  |  ✓  | | Los ficheros modificados (estén o no en el //staged area// |  ✓  |  ✓  |  ✓  |
 | Los ficheros nuevos |    |  ✓  |  ✓  | | Los ficheros nuevos |    |  ✓  |  ✓  |
-| Los ficheros los ignorados |    |    |  ✓  |+| Los ficheros ignorados |    |    |  ✓  |
  
  
  
 Y si luego queremos recuperar los cambios se hace con: Y si luego queremos recuperar los cambios se hace con:
 +
 +<sxh bash>
 +git stash pop 
 +</sxh>
 +
 +  * Pero en el caso de hubiera algo en el //staged area// se tendría que hacer con el argumento ''--index'' para que restaure el //staged area//
  
 <sxh bash> <sxh bash>
Línea 483: Línea 558:
 </sxh> </sxh>
  
-<note tip> 
-Si no se añade ''--index'', no se restaurará el //staged area//. 
-</note> 
 ===== Log ===== ===== Log =====
 El comando ''git log'' permite ver el histórico de commits El comando ''git log'' permite ver el histórico de commits
Línea 509: Línea 581:
 {{:clase:daw:daw:1eval:strftime.png?direct|}} {{:clase:daw:daw:1eval:strftime.png?direct|}}
  
 +  * Ver el árbol de commits
  
 +  git log --graph --oneline --decorate --all
 +===== Diff =====
 +Permite ver la diferencia entre dos //objetos// de git, como commits y ramas o working area.
  
 +  * Vemos la diferencia entre el último commit ''HEAD'' y el anterior al último commit ''HEAD^''
  
 +  git diff HEAD HEAD^
 +  
 +  * Vamos la diferencia entre las ramas ''master'' y ''release''
  
 +  git diff master release
 +  
 +  * Las diferencias entre tu área de trabajo (working area) y el último commit (HEAD)
 +
 +  git diff
 +  
 +  * Los cambios en tu directorio de trabajo, tanto los que están en staging como los que no.
 +
 +  git diff HEAD
 +
 +Más información:
 +  * [[https://git-scm.com/docs/git-diff|git-diff]]
 +
 +===== Show =====
 +Permite ver que cambió al hacer un commit concreto además de mostrar sus medatatos. 
 +
 +
 +  git show HEAD
 +
 +
 +
 +La diferencia entre ''git diff HEAD HEAD^'' y ''git show HEAD'' es que el segundo también muestra los metadatos y es un poquito más cómodo
 +
 +Más información:
 +  * [[https://git-scm.com/docs/git-show|git-show]]
 +  * [[https://www.atlassian.com/git/tutorials/git-show|Git-shoe Atlassian]]
 +
 +===== Blame =====
 +El comando ''git blame'' permite saber quien ha modificado cada linea de un fichero. La palabra **blame** en inglés significa **culpable**.
 +
 +Lo que hace es mostrar, linea a linea el fichero, pero al principio de cada línea indica el commit , el usuario y la fecha de la última persona que modificó esa línea
 +
 +
 +  git blame Fichero.java
 +
 +Si no quieres que te muestra todas las líneas sino solo una concretas , se usa:
 +
 +  git blame -L 10,20 Fichero.java
 +  
 +  
 +Más información:
 +  * [[https://git-scm.com/docs/git-blame|git-blame]]
 +  * [[https://www.datacamp.com/es/tutorial/git-blame|Git Blame Explicado: Cómo rastrear el historial del código y colaborar de forma más inteligente]]
 ===== Mensajes de commit ===== ===== Mensajes de commit =====
 Los mensajes de commit deben seguir el  siguiente formato: Los mensajes de commit deben seguir el  siguiente formato:
Línea 555: Línea 678:
   * [[http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html|A Note About Git Commit Messages]]   * [[http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html|A Note About Git Commit Messages]]
   * [[https://gitmoji.carloscuesta.me/|GitMoji]]   * [[https://gitmoji.carloscuesta.me/|GitMoji]]
 +  * [[https://github.com/wuwentao/midea_ac_lan/compare/v0.6.6...v0.6.7|Mensaje de commit de un plugin de Home Assistant]]
 +  * [[https://tomcat.apache.org/tomcat-11.0-doc/changelog.html|Apache Tomcat Change Log]]
  
  
clase/daw/daw/1eval/tema05.1727028384.txt.gz · Última modificación: 2024/09/22 20:06 por admin