Herramientas de usuario

Herramientas del sitio


clase:daw:daw:1eval:tema01

Diferencias

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

Enlace a la vista de comparación

Próxima revisión
Revisión previa
clase:daw:daw:1eval:tema01 [2025/11/03 11:37] – creado - editor externo 127.0.0.1clase:daw:daw:1eval:tema01 [2026/10/19 13:12] (actual) – [Instalando Git] Lorenzo
Línea 33: Línea 33:
   Amén   Amén
   ---Javier del Moral (2023)   ---Javier del Moral (2023)
-====== Instalando Git ====== 
-Al instalar Git en Windows hay varias opciones a tener en cuenta que explicaremos en clase. 
  
-Una vez instalado Git, hay que indicar cual es nuestro nombre y nuestro correo. 
  
-  git config --global user.name "juan" +===== Instalando Git =====
-  git config --global user.email juan@micorreo.com+
  
 +==== Windows ====
 +Se instala [[https://gitforwindows.org/|Git for Windows]], que trae **Git Bash**, un bash con los comandos de Linux. Hace falta para ejecutar scripts de bash como los ''.sh'' del proyecto. Dos pantallas del instalador importan:
  
-Por último , si estás en el **instituto** , habrá que configurar el proxy:+  * En la siguiente pantalla se debe marcar: **«Use Git and optional Unix tools from the Command Prompt»**: git y los comandos de Linux en cualquier terminal (Git Bash, ''cmd'' y PowerShell), que es lo que necesita un agente de IA para un ''./app.sh start'' o un ''ls''. El aviso de que tapa el ''find'' y el ''sort'' de Windows no afecta.
  
-  git config --global http.proxy http://172.16.0.9:8080 +{{:clase:daw:daw-proyecto:git-setup-bash.png?500|}}
-  git config --global https.proxy http://172.16.0.9:8080+
  
 +\\
 +\\
  
-Para instalar Git en Linux y que sea la última versión usaremos los siguientes comandos (Ya que por ejemplo en Ubuntu 18.04 la versión e un poco //vieja//):+  * En la siguiente pantalla se debe marcar: **«Only ever fast-forward»**: no se debe usar ''git pull'' ([[#sincronizacion_de_git|ver más abajo]]), pero si alguien lo hace por costumbre, falla cuando las historias han divergido en vez de crear un merge sin avisar. Es lo mismo que hace ''%%git merge --ff-only%%''. 
 + 
 + 
 +{{:clase:daw:daw-proyecto:git-setup-pull.png?500|}} 
 + 
 + 
 +==== Linux ==== 
 +Para tener la última versión de Git se instala desde su PPA:
  
   sudo add-apt-repository ppa:git-core/ppa   sudo add-apt-repository ppa:git-core/ppa
   sudo apt update   sudo apt update
   sudo apt install git   sudo apt install git
 +
 +Y se configura lo mismo que en Windows se elige con «Only ever fast-forward»: que ''git pull'' falle si las historias han divergido en vez de crear un merge.
 +
 +  git config --global pull.ff only
 +
 +==== Windows/Linux ====
 +Una vez instalado Git, hay que indicar cual es nuestro nombre y nuestro correo.
 +
 +  git config --global user.name "juan"
 +  git config --global user.email juan@micorreo.com
 +
 +Si estás en el **instituto**, habrá que configurar el proxy:
 +
 +  git config --global http.proxy http://172.16.0.9:8080
 +  git config --global https.proxy http://172.16.0.9:8080
  
 ===== El inicio de Git ===== ===== El inicio de Git =====
Línea 560: Línea 581:
 </sxh> </sxh>
  
 +==== Cuidado con ''--index'' (aquí es donde mucha gente se lía) ====
 +
 +Cuando guardas un stash, git recuerda **qué ficheros estaban en el //staged area//** y cuáles no. Pero al hacer ''git stash pop'' //por defecto//, git te devuelve todos los cambios marcándolos como //modificados sin añadir//, es decir, **pierde la información de qué estaba ya en staged**.
 +
 +Si quieres que se respete ese estado original — que lo que estaba en el //staged area// vuelva al //staged area// — tienes que usar:
 +<sxh bash>
 +git stash pop --index
 +</sxh>
 +
 +=== Ejemplo para verlo claro ===
 +
 +Supón que tienes:
 +  * ''archivo_a.txt'' modificado y añadido con ''git add'' (está en //staged//)
 +  * ''archivo_b.txt'' modificado pero sin ''git add'' (//no// está en //staged//)
 +
 +Haces ''git stash push'' y luego ''git stash pop'':
 +  * Ambos ficheros aparecen como modificados, pero **ninguno** está en //staged//. Has perdido la distinción.
 +
 +Si en cambio haces ''git stash pop --index'':
 +  * ''archivo_a.txt'' vuelve a //staged//.
 +  * ''archivo_b.txt'' vuelve a modificado sin añadir.
 +  * El estado queda **exactamente** como lo dejaste antes del stash.
 +
 +^  Comando  ^  Restaura cambios  ^  Restaura el //staged area//  ^
 +| ''git stash pop''  |  ✓  |    |
 +| ''git stash pop --index''  |  ✓  |  ✓  |
 ===== 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 592: Línea 639:
  
   git diff HEAD HEAD^   git diff HEAD HEAD^
-  +
   * Vamos la diferencia entre las ramas ''master'' y ''release''   * Vamos la diferencia entre las ramas ''master'' y ''release''
  
   git diff master release   git diff master release
-  +
   * Las diferencias entre tu área de trabajo (working area) y el último commit (HEAD)   * Las diferencias entre tu área de trabajo (working area) y el último commit (HEAD)
  
   git diff   git diff
-  +
   * Los cambios en tu directorio de trabajo, tanto los que están en staging como los que no.   * Los cambios en tu directorio de trabajo, tanto los que están en staging como los que no.
  
clase/daw/daw/1eval/tema01.1762166239.txt.gz · Última modificación: por 127.0.0.1