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 2
git rm -r --cached <file> git add .
Vale para ficheros o directorios, la opción
-r
es para hacerlo recursivo, la opción--cached
esta 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 fetch
ygit 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 |