Guía básica de Git

Guía básica de Git

Acciones básicas

Cambiar de rama

git branch
git checkout <rama>

Crear una nueva rama

git checkout -b <nueva-rama>
git add <fichero-1> <...> <fichero-n>
git commit
git push origin <nueva-rama>

Unimos dos ramas

git checkout <rama-principal>
git merge <nueva-rama>
git branch -d <nueva-rama>
git push origin <rama-principal>
git push origin --delete <nueva-rama>

Restaurar el repositorio local

# El equivalente de git al `hg update -C` de mercurial:
git checkout <fichero1> <fichero2> ... <fichero_n>
git checkout -f

Guardar cambios locales antes de hacer un pull

git stash save
git pull
git stash pop

Para activar una rama cuando sólo nos hemos clonado la máster

git fetch
git checkout <rama-por-activar>
git diff master <rama-por-activar>

Para cambiar el usuario de uno o varios commits

# Añadimos un alias a nuestro archivo de configuración de git (~/.gitconfig):
change-commits = "!f() { VAR=$1; OLD=$2; NEW=$3; shift 3; git filter-branch --env-filter \"if [[ $`echo $VAR` = \\\"$OLD\\\" ]]; then export $VAR=\\\"$NEW\\\"; fi\" $@; }; f "

# Una vez estamos en el reposotorio al que le queremos modificar los commits:
# (Está bien asegurarse antes que no tenemos nada por descargar para que no tengamos que hacer ningún merge)
git change-commits GIT_AUTHOR_NAME "nombre antiguo" "nombre nuevo"
git change-commits GIT_AUTHOR_EMAIL "email antiguo" "email nuevo"

# Unimos los commits antiguos y los nuevos:
git pull

# Subimos los nuevos commits al repositorio en lugar de los antiguos:
git push origin master

Devolver un archivo a una revisión concreta

# Suponiendo que queremos volver al estado de la revisión abcde:
git checkout abcde <fichero>

Arreglar un HEAD deatached con master

# Creamos una nueva rama apuntando al commit que queramos:
git branch <nueva_rama> <commit_id>
# Fusionamos la rama nueva en master:
git branch -f master <nueva_rama>
# Cambiamos a la rama master:
git checkout master
# Borramos la nueva rama:
git branch -d <nueva_rama>

Eliminar commit no subido

git reset

Eliminar último commit subido (pushed)

# Situarse en el commit a eliminar:
git reset HEAD^
# Deshacer los cambios que pudiera haber:
git checkout -- .
Actualizado el