Apuntes de Git
Detached-HEAD
Lo normal es que te enteres después de hacer uno o varios commits en Detached
Con rama temporal
|
|
Directamente
|
|
Dejar de seguir un fichero
Sin borrarlo del directorio de trabajo
-
Primero añadimos el fichero o directorio que quieres ignorar al .gitignore.
-
Ejecutamos:
1 2git rm -r --cached <file> git add .Vale para ficheros o directorios, la opción
-res para hacerlo recursivo, la opción--cachedesta para que no borre nada en el working tree solo borra en indexOJO: Este método borra los ficheros para el resto del equipo cuando hagan un
git pull
Queremos hacer modificaciones del fichero en local sin propagarlas al resto del equipo
|
|
Hacer un merge
- Asegúrate de completar todas las tareas para dejar lista la rama que vas a fusionar
- Asegúrate de cambiár a la rama receptora (
git checkout) y de que estás en ella (git status) - Actualiza la rama receptora con el remote (puedes usar
git fetchygit pull) - Ejecuta el merge con
git merge
Borrar submódulo
La forma correcta de hacerlo, conservando el contenido del módulo si es necesario.
|
|
Clonar cuando hay submódulos
La opción -jn asigna n recursos para las tareas de clonado.
|
|
Deshacer un amend
Siempre y cuando no la hayas pifiado ya en la historia compartida.
|
|
La primera orden mueve el HEAD a donde estaba apuntando el commit antiguo. Además dejamos el index intacto para poder hacer otra vez un commit con los cambios pendientes.
HEAD@{1} nos da el commit al que HEAD estaba apuntando antes de apuntar al que está apuntando (léelo un par de veces más). No es lo mismo que HEAD~1 que devuelve el commit padre del commit al que está apuntando HEAD.
La segunda sentencia es más retorcida. Significa: haz un commit del tree actual, usando los detalles del commit erroneo. Fíjate que HEAD@{1} ahora apunta al commit erróneo, puesto que apunta al commit al que apuntaba HEAD antes de apuntar a donde apunta ahora mismo.
Revert a un commit previo
Detached Head
|
|
¡Ojo! ahora mismo estás en un detached head es decir no estás en ningún branch. Si haces cambios en el commit <old-commit-hash> vas a tener muchos problemas. Antes de hacer cambios puedes crear una nueva rama:
|
|
O volver a donde estabas con git checkout
Con una rama
Si quieres hacer cambios es lo más recomendable:
|
|
A fuego (quemando las naves)
Si no tienes nada en la historia compartida puedes hacer reset:
|
|
Si ya has compartido la historia tendrás que trabajar con revert.
Esta también es la forma más segura y recomendable si quieres conservar la historia completa:
|
|
El flag --no-commit permite hacer un revert de todos los commits de un golpe, si no lo pasas hará un nuevo commit por cada commit “revertido” y la historia va a quedar un poco enrevesada.
Cambiar el nombre a una rama
En Gitlab hay que usar main en lugar de master.
|
|
Cambiar de master a main (otro método)
En local:
|
|
Resto del equipo:
|
|
Crear una nueva rama
|
|
Hay otras alternativas:
|
|
Borrar un fichero con información sensible de la historia del repo
Usando solo git
|
|
Usando git-filter-repo
Es una herramienta escrita en Python (ver github)
rebase interactive
Escribir mensajes de commit significativos
Mis tipos de commit
Para usar con este formato:
|
|
| Type | Tipo | Descripción |
|---|---|---|
| dev | desarrollo | Es un commit de desarrollo en las fases iniciales del proyecto |
| fix | fix | Se arregla un bug |
| chore | mantenimiento | El commit no implica ni cambios de código ni de test |
| refactor | refactorización de código que no arregla un bug ni añade features | |
| docs | Añade o retoca documentación del proyecto | |
| style | Cambios que no afectan el significado del código, probablemente relacionados con el formateado del código, y similares | |
| test | Crea nuevos test o corrige test existentes | |
| perf | mejoras de performance | |
| ci | Relacionados con integración contínua (continuous integration) | |
| build | cambios que afecta al build del proyecto, p.ej. cambios de dependencias | |
| revert | Vuelta a un commit previo |
