Cómo evitar la fusión-cometer infierno en GitHub / BitBucket


Estamos terminando con un montón de commits como este en nuestro repo:

Merge branch 'master' of bitbucket.org:user/repo

Esto sucede cada vez que un desarrollador sincroniza su bifurcación local con el repositorio de nivel superior.

¿Hay alguna manera de evitar que este infierno de merge-commit sature todo el registro de repo? ¿Puede uno evitarlos al iniciar las pull-requests de alguna manera?

Sé que puedo hacer git rebase si esto se hace solo en mi VM local, ¿hay alguna equivalencia en la interfaz de USUARIO de GitHub/BitBucket?

¿Cómo lo hacen ustedes? ¿eso?

Author: Niklas9, 2013-05-03

1 answers

Rebase Ramas de Características Antes de Fusionar

Si desea evitar las confirmaciones de fusión, debe asegurarse de que todas las confirmaciones sean de avance rápido. Para ello, asegúrese de que su rama de características se rebase limpiamente en su línea de desarrollo antes de una fusión como esta:

git checkout master
git checkout -b feature/foo

# make some commits

git rebase master
git checkout master
git merge --ff-only feature/foo

Rebase también tiene muchos indicadores, incluido el rebase interactivo con el indicador -i, pero es posible que no lo necesite si mantiene las cosas lo más simples posible y desea preservar todo el historial de su rama en un fusionar.

Utilice la bandera --ff-only

Aparte de rebasear, el uso de la bandera --ff-only asegurará que solo se permitan confirmaciones de avance rápido. Un commit no se hará si sería un commit de fusión en su lugar. La página de manual de git-merge(1) dice:

Only ff-only

Negarse a fusionar y salir con un estado distinto de cero a menos que el actual HEAD ya está actualizado o la fusión se puede resolver como un avance rápido.

 102
Author: Todd A. Jacobs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-03 12:14:09