OH NO GIT!!

Víctor Suárez García - Python Almería

Víctor Suárez

Ingeniero informático que pertenece al colectivo Hacklab Almería/La Jaquería (además de python Almería); que siempre anda preparando y dando charlas y talleres.

Ya se git

o eso creo...

Git merge

git push -f

Oh No GIT!!

Forks

Merge

  • Modifica la rama destino manteniendo la rama origen intacta.
  • Crea un nuevo commit

Rebase

  • reintegra la rama origen en la rama destino.
  • No modifica el arbol de commits.
  • La rama deja de estar disponible.

Merge       VS

Rebase

Conflictos

Conflictos

$ git branch
  branch_to_create_merge_conflict
* master
$ git merge branch_to_create_merge_conflict
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
<<<<<<< HEAD
Este es mi fichero
=======
Este es mi nuevo fichero
>>>>>>> branch_to_create_merge_conflict
git diff
git reset

Ver diferencias

Deshacer cambios

Conflictos

git add .
git commit -m "resolved conflict"

Deshacer merge

git merge --abort

Commits

Si queremos modificar el mensaje del commit, podemos usar la opción --ammend.

git commit --amend -m "nuevo mensaje de commit"

Commits

Como eliminar el último commit??

git reset --soft HEAD^
git reset --hard HEAD^
git reset --mixed HEAD^

apunta la rama al anterior commit pero no modifica el fichero

apunta la rama al anterior commit pero modifica el fichero. Perdiendo los cambios.

apunta la rama al anterior commit sin modificar el fichero y sin hacer cambios en los indices

git push -f

CUIDADO!!! usar con precaucion!!!!

STASHING

En git podemos guardar el estado actual de nuestros cambios temporalmente para poder continuar más adelante. Esto se hace con la orden stash

git stash

Para restaurarlo:

git stash pop

Git Hooks

Git Hooks

En git, podemos usar una serie de Scripts para hacer acciones en distintos puntos como puede ser antes de hacer un commit, antes de un rebase,etc..

Dentro de nuestro repositorio, en la carpeta .git/hooks, podemos ver una serie de scripts

Git Hooks

Cliente Servidor Otros
pre-commit prepare-receive pre-rebase
prepare-commit-message update post-rewrite
commit-msg post-receive post-rebase
post-commit pre-push

Para usar alguno de estos Scripts, simplemente eliminamos la extensión .sample

GitIgnore

GitIgnore

A la hora de trabajar en proyectos a veces se crean ficheros temporales que no queremos registrar con git. Para que git no tenga en cuenta estos ficheros, crearemos un fichero llamado .gitignore.

out
node_modules
.vscode-test/
*.vsix
coverage/
.nyc_output/

Hora de la demo!!

Muchas Gracias

Referencias

oh no git

By zerasul

oh no git

Tutorial Git intermedio donde se ven distintas situaciones que podemos encontrarnos.

  • 1,673