Git y GitHub

En este artículo recojo algunos conceptos e instrucciones de Git y GitHub

10.01.2021 a las 09:16

Git y GitHub

Apuntes sobre Git y GitHub

Git

  • Iniciar un nuevo repositorio local.

    git init
  • Ver qué archivos están siendo vigilados por Git.

    git status
  • Añadir todos los archivos modificados desde el último commit (snapshot) al stage (escenario)

    git add .
  • Deshacer todo lo que haya hecho el git add

    git reset .
  • Añadir todos los archivos modificados desde el último commit.

    git commit -m 'string de mensaje'

    El flag -m indica el mensaje que acompañará al commit. El commit toma una "fotografía"

  • Editar el mensaje del último commit

    git commit --amend

    Al ejectuar este comando, pulsamos i de insert y podremos editar el mensaje del último commit

    Para salir:

    1. Pulsamos la tecla escape
    2. Escribimos :
    3. Escribimos w (significa write)
    4. Escribimos q para salir
    5. Y por último ! para que lo haga inmediatamente

Ramas

  • Crear una nueva rama con el nombre nombre_rama

    git branch nombre_rama
  • Ver todas las ramas. Estará marcada con un * la rama en la que estamos posicionados.

    git branch
  • Cambiar de rama. Por ejemplo, para cambiar a la rama master

    git switch master
  • Puedes crear una nueva rama y posicionarte en ella con el comando swithc y la bandera c. Con eso le dices a git que se posicione en la rama y si no existe que la cree.

    git switch -c nombre_rama

    Un truquito, puedes cambiar a la rama anterior sin necesidad de recordar el nombre con:

    git switch -
  • Para cambiar de nombre una rama, pimero debes de estar posicionado en ella, si no lo estás hazlo con checkout. Despues ejecutas:

    git branch -m nuevo_nombre_rama
  • Fusionar los cambios de la rama nombre_rama con la rama master:

    1. Primero nos cambiamos a la rama master
      git switch master
    2. Hacemos el merge de la rama que queremos fusionar
      git merge nombre_rama
    3. Por último, si queremos que nuestros log quede más limpio, eliminamos la rama que hemos fusionado. Para ello:
      1. Cambiamos a la rama nombre_rama para pushear el merge: git switch nombre_rama
      2. Pusheamos: git push
      3. Cambiamos a la rama master para poder eliminar la rama nombre_rama: git switch master
      4. Estando ya en master, por último eliminamos la rama nombre_rama: git branch -d nombre_rama
      5. Eliminar la rama con el nombre nombre_rama del repositorio remoto: git push origin :nombre_rama

  • El segundo modo de fusionar trabajos de distintas ramas es el rebase. Hacer rebase escencialmente selecciona un conjunto de commits, los "copia", y los aplica en algún otro lado. Aunque esto pueda sonar confuso, la ventaja de hacer rebase es que puede usarse para conseguir una secuencia de commits lineal, más bonita. El historial / log de commits del repositorio va a estar mucho más claro si sólo usas rebase.

    Pero no todo iban a ser ventajas, nunca hagas un rebase si ya tienes algo "pusheado", ya que el rebase es una acción destructiva. Con esto quiero decir que se crean nuevos commits y se destruyen los anteriores para poder aplanar los commits en una misma línea.

    git rebase

  • Une en una sola instrucción el git add . y el git commit:

    git commit -am 'Mensaje del commit'

    El flag -am significa:

    • a será el add
    • m será el message
  • Repositorios remotos

  • Añadir un repositorio remoto:

    git remote add origin url_repositorio_github
  • Eliminar un repositorio remoto:

    git remote remove origin
  • Comprobar repositorios remotos

    git remote -v
  • Bajar los últimos cambios del repositorio remoto con el repositorio local

    git pull 'origin' 'master'

Listar los commits

  • git log

    Para salir del git log pulsa la tecla q

  • Para ver los commits en una sóla línea

    git log --oneline

    Para salir del git log pulsa la tecla q

  • Para ver los commits en una sóla línea y en modo gráfico

    git log --oneline --graph

    Para salir del git log pulsa la tecla q

  • Para saber la diferencia que hay entre dos commits ejecuta:

    git difftool hash_commit_uno hash_commit_dos

Ignorar ficheros

  • Añadir en el fichero .gitignore de tu proyecto los ficheros o carpetas que deseas que no se vigilen por Git


  • Si el fichero que deseas ignorar ya está siendo vigilado por Git, le tienes que decir que lo deje de vigilar. Para ello:

    git rm --cached 'file'

    Por ejemplo, para ignorar el fichero environmet.ts, tienes que ejecutar:

    git rm --cached src/environments/environment.ts

  • Para dejar de seguir una carpeta y eliminarla del repositorio:
    1. git rm -r --cached nombrecarpeta
    2. git commit -m 'Eliminada la carpeta nombrecarpeta'
    3. git push

Volver a una versión anterior

  • git reset --hard CodigoCommit

    Resetea el proyecto al CodigoCommit deseado. Siempre y cuando no se haya hecho un push


  • git checkout 'rama'

    Checkout cambiará de rama, es decir, modificará tus ficheros locales con los de la rama o versión deseada.


  • git checkout -- .

    Reconstruye todos los ficheros locales desde el último commit


Eliminar un fichero de un commit

  1. Para revertir el último commit añadido:

    git reset --soft HEAD
  2. Eliminamos el archivo no deseado de GIT:

    git reset nombre_archivo.extension
  3. Por último elimina el archivo del proyecto o lo cambias de directorio.

GitHub

La rama principal en GitHub es Main

Cuando crees un repositorio nuevo:

  • Añadir el link al repositorio remoto

    git remote add origin [url_repositorio]
  • Creo la rama main

    git branch -M main

  • Para subir el repositorio a GitHub por primera vez

    git push -u origin main

    Para las subidas a GitHub posteriores

    git push

Tags

  • Listar los tags en consola

    git tag

  • Añadir un nuevo tag

    git tag -a v0.12.0 -m 'Fin sección 12 - Google'

    El flag a es para indicar que es versión anotada y el flag m es para indicar el message


  • Subir tag a GitHub

    git push --tags

Aprende Git Jugando

A jugar

Hasta luego 🖖

Servicios

Software

IoT

Digitalización

Aplicaciones móviles

Consultoría

fjmduran.com v0.1.2