Git, flujo de trabajo de solicitud de extracción TFS

Git, flujo de trabajo de solicitud de extracción TFS

Este es el flujo de trabajo que he estado intentando, después de ver estoVídeo Git/TFS.

Entonces creo una rama desde mi rama de desarrollo.

$ git checkout -b my-feature-branch development

Luego hago un cambio, preparo, confirmo y envío los cambios al servidor TFS.

Ahora, cuando voy a la interfaz web de TFS, tengo una "rama de mis funciones" en el servidor.

Hago clic en "Nueva solicitud de extracción", creo un PR en desarrollo y acepto este PR. Este proceso elimina "my-feature-branch" en el servidor TFS, pero permanece en mi máquina local.

Todo es genial a esta altura.

De regreso a mi máquina local, sal de la rama de funciones:

git checkout development

Eliminar la sucursal local

  git branch -d my-feature-branch

warning: deleting branch 'my-feature-branch' that has been merged to
         'refs/remotes/origin/test-pr', but not yet merged to HEAD. Deleted branch my-feature-branch (was d525adc).

Recibir las últimas -

git pull -p

A veces, y es posible que esté realizando la extracción antes de la eliminación, la eliminación falla y tengo que forzar la eliminación.

git branch -D my-feature-branch

¿Mi flujo de trabajo es incorrecto? ¿Debería realizar algún tipo de fusión antes de la eliminación? ¿Por qué git no sabe que la rama de funciones se ha fusionado como una solicitud de extracción después de la extracción y me permite eliminarla sin errores?

Respuesta1

¿Por qué git no sabe que la rama de funciones se ha fusionado como una solicitud de extracción después de la extracción y me permite eliminarla sin errores?

Es difícil saberlo a partir de la información que has proporcionado, pero aquí tienes dos conjeturas:

  1. ¿Está seguro de que está retirando antes de eliminar la rama de funciones locales? Si no es así, entonces, por supuesto, la rama principal no tendrá las nuevas confirmaciones.

  2. ¿Cómo se fusiona la rama de funciones? ¿Con una fusión normal o una fusión aplastada? Una fusión regular incorpora las confirmaciones de la rama de características en la rama principal, para que Git sepa que todo está ahí. Una fusión de squash, OTOH, incorpora todos loscontenidode la rama de características, pero lo hace creando una nueva confirmación, y Git no rastrea el hecho de que la nueva confirmación aplastada se generó a partir de las confirmaciones de la rama de características, por lo que no cree que la rama de características se haya fusionado.

(Lo recomiendonousando fusiones de calabaza. Mantener las confirmaciones originales, como lo hace una combinación estándar, ayuda a que Git funcione mejor).

información relacionada