Colabora usando git y twigs separadas sin agregar un montón de commits networkingundantes

Estoy queueborando con un diseñador en un proyecto llamado "Cuentas verificadas"

Estoy desarrollando en una twig llamada verified_accounts y el diseñador está en una twig llamada chris_verified_accounts . Hemos estado fusionando periódicamente los cambios de los demás, y cuando el proyecto finalice fusionaremos verified_accounts en master

Sin embargo, toda esta fusión ha estado causando un montón de commit / commits duplicates. Por ejemplo:

http://dl.dropbox.com/u/2792776/screenshots/2012-03-02_1024.png

Commit (1) es una fusión de una request de extracción que contiene solo confirmación (2). Esto significa que estas confirmaciones son esencialmente idénticas (tienen las mismas diferencias, etc.). Del mismo modo, commit (3) es una fusión que combina solo commit (4), lo que significa que 3 y 4 también son esencialmente idénticos

¿Cuál es la mejor forma de administrar estos commits idénticos? Es decir, para cada cambio funcional en mi código, quiero una confirmación asociada. De esta forma, si estoy comentando un set de cambios, puedo estar seguro de que estoy comentando en el lugar correcto (en lugar de comentar sobre el set de cambios exactamente similar de otra confirmación dupe-y)

¿Cuál es la mejor práctica para este tipo de cosas?

Desde que fusionas obtienes commit de fusión, lo cual es inevitable cuando fusionas twigs. Lo que podría hacer en su lugar es extraer y rebase al mismo time:

 git pull --rebase 

La mejor práctica es ver estos commits como lo que son: fusionar commits. No hay simplemente "commits duplicates". (De hecho, no son commits duplicates). Contienen la información de que una twig se fusionó con otra. Cuando intentas tener una historia lineal (que, admitámoslo, es una reliquia de sistemas que no podrían manejar la bifurcación y especialmente la fusión de una manera sensata), inevitablemente perderás información sobre cómo se creó el código fuente de la forma en que es ahora. Las asignaciones de fusión son una parte importante de la historia de su proyecto, lo que le permite ver qué cometidos pertenecían a qué twig y en qué momento. Le permite seguir cada twig incluso años después de haberla escrito. Si hay algo sospechoso en un compromiso, puedes usar esa información de context para volver a entender por qué lo hiciste de esa manera.

Por favor, no obstaculice artificialmente su repository tratando de que se vea bien en alguna herramienta de visualización. Intente aprovechar todo el poder de ramificación y fusión.

(Sí, me encanta Git. Y twigs. Y fusión.)