Skip to content

floxcristian/learn_git

Repository files navigation

Entendiendo Git

Tabla de Contenido

3. Guardando cambios en el repositorio

  • Vamos a realizar cambios y confirmar instantáneas [snapshots] de esos cambios en el repositorio cada vez que se alcance un estado que queramos conservar.

Cada archivo del repositorio puede tener 2 estados:

  • tracked: archivos que estaban en la última instantánea del proyecto. Pueden ser archivos sin modificar, modificados, o preparados (staged).
  • untracked: archivos en el working directory que no estaban en la última instantánea y no están en el staging area.

Ciclo de vida del estado de tus archivos:

  • Cuando clonas un repositorio todos los archivos estarán tracked y sin modificar.
  • Mientras editas, Git los ve como modificados (han sido cambiados desde su último commit).
  • Luego preparas estos archivos modificados (git add) y finalmente confirmas (git commit) todos los cambios preparados (staged).

3. Estado de nuestros archivos

Cambios desde el último commit a la fecha:

$ git status

Cambios de forma compacta:

$ git status --short
$ git status -s
$ git status -sb
$ git status -s -b #branch?

Muestra:

  • Rama actual.

  • Archivos en el STAGE.

  • Archivos que no estan en el STAGE.

  • Cambios pendientes: ficheros que han recibido modificaciones desde el último commit.

  • Si ejecutaramos este comando inmediatamente después de clonar un repositorio:

$ git status

On branch master ## rama en que estamos. 'master' es la rama por defecto
nothing to commit, working directory clean ## no hay archivos rastreados y modificados

  • Supongamos que añadimos un nuevo archivo. Al ejecutar git status veríamos el archivo sin rastrear:
$ git status
On branch master
Untracked files:
...
  • Sin rastrear significa que Git ve archivos que no teníamos en el commit anterior.
  • Git no los incluirá en el próximo commit a menos que se le indique explicítamente (git add).
  • Si desearas incluirlo, debes comenzar a rastrearlo (git add).

Al ver el estado del proyecto con git status, vemos que los archivos estan siendo rastreados y estan preparados para ser confirmados changes to be commited.

  M  README
M M  Rakefile
A    lib/git.rb
M    lib/simplegit.rb
? ?  license.txt

El estado aparece en 2 columnas.

izq: preparado.
der: sin preparar.

Los estados pueden ser:

??: no rastreados.
A: preparados.
M: modificados.

Ejemplo:

  • README esta modificado en el working directory pero no está preparado.
  • lib/simplegit.rb esta modificado y preparado.
  • Rakefile esta modificado, preparado y modificado otra vez, por lo que hay cambios preparados y sin preparar.

3. Añadir cambios al STAGE

Prepara cambios para enviarlos al repositorio (los envía al STAGE). También comienza a rastrearlos si es que no lo estan siendo.

  • Preparar un archivo específico:
$ git add README.md
  • Preparar múltiples archivos:
$ git add index.html index.js
+ Preparar archivos de un directorio:

+ Preparar todos los archivos:
$git add .
git add -A
git add -u
git add *
git add -all
Archivos nuevos Archivos modificados Archivos eliminados
git add -A - - -

https://stackoverflow.com/questions/26042390/git-add-asterisk-vs-git-add-period

git add . # git add -all // git add -A  // Agrega todos los archivos
git add *.png # Agrega todos los archivos .png del directorio actual
git add "*.png" # Agrega todos los archivos .png de todo el proyecto
git add index.html config.ts # Agrega un listado de archivos
git add pdfs/*.pdf # Agrega todos los archivos .pdf de la carpeta pdfs
git add pdfs/ # Agrega todos los archivos de la carpeta pdfs

git commit -m "agregando imagenes png"

git add css/
git commit -m "agrengando CSS"

# agregar todos y luego excluir uno
git add -A # igual a git add .??
git reset *.xml # excluye todos los archivos xml

Añadiendo flags

Cuando se antepone -- es porque a continuación viene una palabra.

--

Ejemplo:

// Cuando se pone un solo - significa que cada letra a continuación es un comando independiente.

-...


9. Historial de versiones

Historial de commits de la rama actual:

$ git log

Cada commit en una línea:

$ git log --oneline

Commits de todas las ramas:

$ git log --all

Historia en forma de grafo:

$ git log --graph

??:

$ git log --decorate

Lo común es utilizar lo anterior junto:

$ git log --oneline --decorate --all --graph

Muestra todos los commits creados, el lugar en el que estamos HEAD y la rama actual master.

git log -- 
git log --follow 

hash HEAD: último commit en la rama actual rama actual Autor fecha


# comando visto en instagram:
# Usado cuando intento psuhear algo y me doi cuenta que ha habido cambios en el flujo principal
alias repush="git pull --rebase && git push"
alias repush="git push -f"

11. Moverse a un punto en el tiempo

Sacar archivos del STAGE:

git reset HEAD 

HEAD^: Apunta al penúltimo commit. Deje en el penultimo commit sin eliminar los cambios. Deja los cambios fuera del STAGE.

git reset --soft HEAD^
git reset --soft <id_commit>^

--mixed: comando por defecto si no añadieramos un flag. Nos movemos a un punto en el tiempo. Archivos son quitados del stage pero aun contienen las modificaciones.

git reset --mixed <id_commit>

Nos movemos a un punto de la historia destruyendo todos los archivos que no corresponden a ese punto.

git reset --hard <id_commit>

git reflog

  • Permite regresar a un punto a pesar de haber hecho un git reset.
  • Git siempre mantiene un registro de todo lo que sucede en el repositorio.

Muestra el historial de lo que hemos hecho localmente desde clonamos el repositorio. Muestra clone, commits, Esto es más preciso que hacer git log, porque esta traerá todos los commits, no solo los locales, si no también los de compañeros

git reflog

Aquí buscamos el id del punto al que queramos volver. Luego

git reset --hard <id_commit>

1. Conectar repositorio local a servidor remoto:

$ git remote add origin https://github.com/floxcristian/learn_git

Ver dónde apunta el repositorio local:

$ git remote show origin

git push

Despliega un login para ingresar a nuestra cuenta de Github y subir el código.

git push -u origin <b>master</b>

git blame

Detalla cada línea de un archivo respecto a quién lo modifico y en que commit.

git reset

Sería lo contrario a git add.

Excluir un archivo de la lista de agregados.

git bash reset index.js

About

Apuntes de Git para taller presencial.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published