Víctor Suárez García - Python Almería
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.
Git merge
$ 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
git add .
git commit -m "resolved conflict"
Deshacer merge
git merge --abort
Si queremos modificar el mensaje del commit, podemos usar la opción --ammend.
git commit --amend -m "nuevo mensaje de commit"
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!!!!
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
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
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
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/