¿Cuáles son algunos problemas con Git o cosas que te vuelven loco?

  1. Los chicos git deberían haber estado en Sha256 hace mucho tiempo. Ahora tienen un plan para alejarse de sha1, pero se están tomando su dulce momento y Linus ha comentado en varias ocasiones que “nadie usa el hash shash por seguridad”, lo cual es una mentira o un malentendido vergüenza de cómo la mayoría de la gente usa el herramienta que él dio a luz. Sé que planteé el tema del cambio de hashes en 2012 o 2013 en el canal de IRC y me dijeron “Hay un parche flotando para comenzar algo de ese trabajo, sabemos lo que tenemos que hacer, pero francamente, nadie”. importa, simplemente no es tan importante “. Destrozada
  2. Git rebase interactivo es un desastre. Podría ser TAN mucho mejor, es solo un destello de su potencial. No es re-entrante. El DSL es limitado. No puede manejar árboles de ramas. Mi amigo escribió un reemplazo de git rebase llamado “git rebase of doom” – es bastante impresionante. Si yo fuera un comentarista de git core, reemplazaría la rebase interactiva integrada completa con esta (pero está escrito en perl, y git se ha estado alejando de perl …) amling / GitScripts
  3. Git se alterna. Hay una característica poco conocida y avanzada llamada “git alterna”. Básicamente, le permite al usuario decir “además de buscar en este repositorio, también busque objetos aquí”. Luego, algunos objetos pueden “faltar” en su repositorio. Dado que los objetos son de solo escritura e inmutables, esto es como “copiar en escribir” sin la parte de “escritura”, y puede ahorrar una gran cantidad de espacio en el disco. La mayoría de los servicios, como Github, Atlassian Bitbucket, etc., probablemente utilicen alternativas, por lo que no tienen que copiar objetos cada vez que alguien solicita un repositorio. ¿Entonces, cuál es el problema? El problema es que gestionarlos es un desastre. Es por eso que escribir el sitio web de github no fue fácil. Supongamos que creas el repositorio A. Luego, desactivas el repositorio B, especificando A como “alternativo”. Luego, elimina una rama en el repositorio A. Ejecuta la recolección de basura y se eliminan algunos objetos colgantes. WHOOPS! Ahora el repositorio B está roto, ¡esos objetos se han ido para siempre! El repositorio B sabe que necesita el repositorio A, pero el repositorio A no tiene forma de saber que el repositorio B depende de él. Si un repositorio es una alternativa para otros repositorios, NUNCA puede purgar objetos de forma segura sin mucha locura. De manera similar, lo que sucede cuando crea una rama en el repositorio B, luego la empuja al repositorio A. Ahora el objeto vive en ambos lugares, por lo que tiene que volver a ejecutar una recolección de basura en el cliente (esto no solía funcionar, pero Creo que ahora la recolección de basura puede darse cuenta de que el objeto vive en una alternativa y limpiarlo). Todo esto no está bien implementado y es muy peligroso. Usando Alternativas Git
  4. La documentación de Git es bastante tosca. Git no oculta sus elementos internos, para usar git de manera efectiva, debe comprender que los confirmaciones son nodos en un gráfico acíclico dirigido, cada uno de los cuales contiene una referencia a uno o más padres. Debe comprender que una “rama” es en realidad un puntero a esos nodos. Esos nodos son en sí mismos simplemente un “puntero” a un objeto de árbol, que a su vez apunta a todas las manchas que representan los datos reales en la estructura del archivo. Sin entender estas cosas, comprender de manera efectiva la rebase, eleccionar, fusionar, etc. es muy difícil y propenso a errores.

Trabajando con gente que NO conoce Git.

Cuando comencé a usar git sentí que era una herramienta útil y elegante “Cómo codifiqué sin esto”. Así que empecé a presentarlo a los proyectos de mi escuela … Pero luego FALLO cuando recomendé a mi equipo que lo usara … Hicieron un completo desastre con GitHub, comenzaron a hacer confirmaciones, enmendar, presionar a Master, tirar y luego presionar sin revisar los cambios … Oh hombre … Perdí como 2 días de mi vida tratando de arreglar el proyecto.

Cada vez que veía que había cambios en ellos, era como:

Puedes ver el proyecto aquí.

Lo siento por mi inglés, no es mi idioma principal, no dude en comentar debajo de mis errores.