Git es difícil: meter la pata es fácil, y averiguar cómo solucionar tus errores es jodidamente imposible. La documentación de Git tiene este problema del huevo y la gallina en el que no puedes buscar cómo salir de un lío, a menos que ya sepas el nombre de la cosa que necesitas saber para solucionar tu problema. Así que aquí hay algunas malas situaciones en las que me he metido, y cómo finalmente salí de ellas en lenguaje sencillo.
|
etiquetas: git , control de versiones
Se usaba BitKeeper, y antes de eso tarballs y parches a pelo.
Linus dijo "sujétame el cubata" y se picó Git en un verano con los comandos que él consideraba necesarios. Muchos comandos posteriores él reconoce no usarlos porque no los necesita en su flujo de trabajo
community.trinitycore.org/topic/836-info-git-commands/
Algo crítico como es la gestión de las versiones software y que tenía que ser meridianamente claro y sencillo para evitar sorpresas se convierte en un galimatías incomprensible hasta para el más avanzado.
Cualquier cagada se converte en un infierno imposible de solucionar, al final las cagadas se acumulan una tras otra para intentar solucionar la anterior, pero lejos de solucionarlo se enrrolla aún más.
Si usas el caso base de “commit&push” ya lo tienes. El problema es cuando la gente sin leer nada se pone de juancker con los casos destructivos, que posteriormente intentan arreglar con el “mágico” force.
Git permite una flexibilidad increíble. Funciona. Solamente que hay gente muy terca con tener un historial perfecto y es cuando hacen las cosas “raras” sin saber. Como el rebase o reset —hard para solucionar el triplete de “hago cagada, subo cagada, elimino cagada”
El rebase es un comando que en un proyecto medio normal se lanza varias veces cada día.
¿Qué propondrías como alternativa a git? no se me ocurre mucho. Yo creo que si te mantienes en el "git add" y "git commit", "git pull" y "git push" vas que te matas. Luego todos los demás te permiten crear flujos tan complejos como tú quieras. Por regla general cuando tengo juniors o algún que otro vago que… » ver todo el comentario
Muchos son casos completamente normales que nos pasan a mi y al resto de mis compañeros sin tener ninguna mala fe y con muchos años de experiencia a nuestras espaldas y que para saber como gestionarlos tienes que tirar de google y rezar para que funcione sin romper nada:
- Trabajar y commitear en la rama que no toca, ahora tienes que irte a la rama buena, aplicar los cambios y deshacer los de main.
- Cualquier cosa… » ver todo el comentario
Si crees que da más problemas que soluviones es porque no has trabajado con los anteriores.
xkcd.com/1597/
Son conflictos sociales en los que siempre pilla el último.
Lo mejor de todo es que tiene el repositorio... en GitHub jajajjaj
Los reverts y demas por alguna razon nunca me van bien.
¿Que estoy haciendo algo mal?
Seguro, pero despues de 40 intentos y que no funcione nada, haces esto y voila, funciona. Paso de perder mas tiempo intentando comprender el porque lo demas no va.
Git es una herramienta, no un fin, asi que voy a lo pragmatico. Y funciona muy bien... mientras no la cagues.
git stash
git reset --hard
Es el equivalente a mandar todos los cambios ATPC.
Sigo usando y orgulloso de ello!
El problema del control de versiones es que no hay nada mejor que git (he trabajado con sourcesafe y svn previamente y git es mucho mejor)
De esa git no sabe salir solo.
En el fondo es bastante más sencillo que Git, por la simple falta de opciones.
Y alguna vez lo conseguimos recuperar sin saber exactamente cómo lo habíamos hecho.
"I've come to these steps through trial and error and lots of swearing and table flipping, and I had this crazy idea to share them with a healthy dose of levity and profanity."
SVN es un calco del sistema de archivos en carpetas. Los tres años que lo usé recuerdo que era inflexible, lento, engorroso, y difícil para hacer merges y analizar cambios.
Poder ver los cambios que has ido haciendo rápidamente en toda la historia de un proyecto es maravilloso.
Yo llevo usándolo más de una década en esas condiciones y habré hecho un revert o cosas medio complejas 2 o 3 veces en mi vida.
Tambien nombrar que, como se ve en la barra superior del meneo, existe una versión SFW: dangitgit.com/es. Aunque también es cierto que el que hizo la versión en español del original no se atrevió a traducir la palabra "shit"
La clave está en hacer commits con poquitas partes de código, para poder hacer cambios muy fáciles sin tener… » ver todo el comentario
Oh shit, I accidentally committed to the wrong branch!
# undo the last commit, already pushed, but leave the changes available
git reset HEAD~ --soft
git stash
git push origin --force
# move to the correct branch
git checkout name-of-the-correct-branch
git stash pop
git add . # or add individual files
git commit -m "your message here";
git push origin
# now your changes are on the correct branch
9front (Plan9) también usa git, pero no con una sintaxis de Unix. git es un directorio seguramente montado con bind(1) en /bin y las diferentes opciones son ejecutables a lanzar:
git/clone shithub.us/vexed
Va bien en 9front, no me puedo quejar, aunque no tiene todas las opciones, para lo simple que es p9, casi se podría usar diff a pelo.