Herramientas de usuario

Herramientas del sitio


usu:otros:git_y_github

Guía básica de Git y GitHub

Conceptos

  • GIT: Aplicación para mantener un repositorio local.
  • GitHub: Sistema de repositorios públicos pasado en Git.

Flujo de trabajo básico:

  1. Se modifican los archivos en el directorio de trabajo.
  2. Se trasladan las modificaciones al “stage”. Comando “add”.
  3. Se crea un “snapshot” del “stage” en un momento dado. Comando “commit”.
  4. Se actualiza el repositorio local desde el público. Comando “pull”.
  5. Se actualiza el repositorio público con el local. Comando “push”.

Documentación completa en: https://git-scm.com/book/es/v2

Comandos preliminares

git --version
git help

Configuración inicial

git config --global user.name "juanma"
git config --global user.email "juanma@smartastur.com"

Se puede acceder al fichero de configuración de git mediante

git config --global -e

Para establecer un editor de texto diferente a vi, por ejemplo, el joe:

git config --global core.editor "joe"

Iniciar un repositorio

Ir a la carpeta raíz del proyecto y teclear

git init

Comandos básicos

Muestra el estado del repositorio que nos informa de:

  1. Archivos pendientes de enviar al stage
  2. Archivos del stage modificados después del último snapshot
git status
git status -s
git status -s -b

Añade archivos del proyecto al stage.

git add .
git add -A
git add README.md
git add carpeta

Crea un snapshot del stage

git commit -m "Mensaje"

Añadir al stage y al snapshot

git commit -am "Mensaje"

Devolver el proyecto completo al estado del último commit

git checkout -- .

Sólo parcialmente

git checkout -- README.md

Historial de commits

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

Sacar un archivo del stage. Su contenido no cambia en nuestra carpeta de trabajo, sólo que desaparecerá del stage o quedará con el contenido que tenía antes de añadirlo a él.

git reset *
git reset README.md
git reset carpeta

Crear un alias para comandos largos, por ejemplo, el log o el status

git config --global alias.lg "log --oneline --decorate --all --graph"
git lg
git config --global alias.s "status -s -b"
git s

Mostrar las diferencias entre el proyecto y el stage. No dice nada al respecto de que pudieran haber cambios sin commit.

git diff

Para ver las diferencias entre el stage y el snapshot.

git diff -staged

Comandos para la gestión de commits

Volver a un snapshot del pasado

git reset --hard 860c6c2

donde 860c6c2 es el identificativo del snapshot que se puede obtener con

git reflog

Ramas o branches

La rama principal es la master o main, y es la que se utiliza como rama de producción.

Podemos crear ramas para, por ejemplo:

  1. Abrir una línea de desarrollo sin afectar a la rama principal, y cuando éste termine, se integren los cambios en el proyecto.
  2. Abrir una línea de desarrollo sobre un snapshot para dar servicio a una versión antigua.

Crear una rama

git branch nueva-rama

Lista las ramas creadas

git branch

Activar una rama

git checkout nueva-rama

Diferencias entre ramas

git diff nueva-rama master

Integrar rama en master

git checkout master
git merge nueva-rama

Una vez integrada, conviene que sea borrada

git branch -d nueva-rama

Etiquetas

Son de utilidad para poner marcas de versión.

Poner etiqueta al snapshot actual o HEAD.

git tag -a v1.0.0 -m "Versión 1.0.0"

Poner etiqueta a un snpashot en particular

git tag -a v0.1.0 -m "Versión alfa" 345d7de

Mostrar información completa de la etiqueta

git show v1.0.0

Herramientas avanzadas

Stash

Salvar el directorio de trabajo y recupera el último snapshot.

git stash
git stash save "Comentarios"

Recuperar el stash al directorio de trabajo. Conviene hacerlo después de haber hecho commit en el directorio de trabajo, a fin de resolver conflictos.

git stash apply
git stash apply stash@{0}

Lista de stashs

git stash list

Borrar stash

git stash drop
git stash drop stash@{0}

Recupera el último stash y lo borra

git stash pop

Borrar el contenido del stash

git stash clear

Rebase

Mueve los commits de cierta rama, en la línea del tiempo, hasta justo después del último commit de la rama de destino.

git rebase master

Así, si volvemos a la rama master y hacemos un merge, éste se realizará necesariamente sin conflictos

git checkout master
git merge nueva-rama

GitHub

Iniciar un repositorio

Desde la web se crea el repositorio.

Para iniciar su sincronización con el directorio de trabajo:

git remote add origin git@github.com:JuanmaRoces/prueba.git
git branch -M main
git push -u origin main

De esta forma se suben todos los commits de la carpeta de trabajo al repositorio remoto en GitHub.

Comandos básicos

Para obtener los cambios del remoto al de trabajo

git pull

Para subir los cambios

git push

Para subir los tags

git push --tags

Para comenzar a trabajar en un repositorio remoto que no tenemos en nuestro ordenador

git clone git@github.com:JuanmaRoces/prueba.git
git clone git@github.com:JuanmaRoces/prueba.git carpeta-destino
usu/otros/git_y_github.txt · Última modificación: 2021/01/03 11:17 por juanma