2011-12-23 9 views
88

así que estoy empezando a usar Git + GitHub.¿Cómo cerrar una sucursal de Git?

En nuestro pequeño equipo distribuido, cada miembro está creando su propia sucursal para cada problema/requerimiento que están asignados.

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

ahora code code, commit, code, commit, etc ...

continuación pull request, code-fixup, commit, code, commit .. etc

y FINALMENTE ... se acepta la solicitud de extracción.

Woot.

pero ... ¿ahora qué? (...... incómodo ......)

¿La persona que creó la rama en su máquina de desarrollo local necesita ... cerrar la rama? Se sugirió que la persona dev elimine la rama `(... -D ...) y luego haga una extracción/actualización del maestro ... que luego obtendrá todo su código de sucursal.

Hmmmmm ... no estoy seguro - por favor ayuda :)

+14

Una rama en Git es solo una etiqueta en una confirmación específica, por lo que, básicamente, si ya no la necesita, simplemente elimine esa "rama" (esa "etiqueta" en esa confirmación). Localmente, solo haga un 'git branch Issue # 1 -d' y eso es todo lo que hay - no se pierde ningún código, solo se elimina una etiqueta de su repositorio –

+1

@marc_s Le sugiero que solo responda :) – KingCrunch

+0

So @marc_s: estás diciendo que la práctica estándar una vez que hayas finalizado tu sucursal ... y la sucursal haya sido empujada ... ¿la eliminamos? ¿Qué hay de fusionarse? –

Respuesta

152

Solicitamos que el desarrollador pidiendo al estado petición de atracción que les gustaría la rama eliminada. La mayoría de las veces este es el caso. Hay momentos en los que se necesita una rama (por ejemplo, copiar los cambios en otra rama de publicación).

Mis dedos han memorizado nuestro proceso:

git checkout <feature-branch> 
git pull 
git checkout <release-branch> 
git pull 
git merge --no-ff <feature-branch> 
git push 
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>" 
git push --tags 
git branch -d <feature-branch> 
git push origin :<feature-branch> 

Una rama es para el trabajo. Una etiqueta marca un lugar en el tiempo. Al etiquetar cada combinación de rama, podemos resucitar una rama si es necesario. Las etiquetas de bifurcación se han utilizado varias veces para revisar los cambios.

+7

Hemos realizado un cambio reciente en nuestro procedimiento. Usar 'git push --tags' es pesado y descarga todas las etiquetas. Esto hace que sea difícil tener tus propias etiquetas locales. En su lugar usamos 'git push origin branch- ' para enviar solo una etiqueta. –

+0

Por lo tanto, en la última línea, debe recordar usar el nombre de la etiqueta para la rama de características, que hemos establecido previamente para "branch- ", en lugar de solo . ¿Correcto? –

+0

@PremierBromanov la última línea es para eliminar la sucursal remota. Para recordar, la etiqueta @BillDoor usó 'git push --tags'. – Deivide

37

Sí, basta con borrar la rama ejecutando git push origin :branchname. Para solucionar un problema nuevo más tarde, bifurque nuevamente desde el maestro.

+3

Eso eliminará la rama remota, no la local. – KingCrunch

+3

No sé por qué esto se modifica a -2, esta es la respuesta correcta. Definitivamente tienen una rama remota, ¿de qué otra forma podrían emitir un RP contra ella? –

+1

@PaulBetts Acepto. Lo voté también. – gilligan

34

después de completado el código de combinación de primera rama de dominar a continuación, eliminar esa rama

git checkout master 
git merge <branch-name> 
git branch -d <branch-name> 
+0

y esto es en mi propia máquina de desarrollo, ¿verdad? la persona principal que acepta cualquier código nuevo ... su máquina está en otra parte. –

+2

Si alguien más está haciendo la fusión, generalmente tiene su puntero de bifurcación en un control remoto separado, p. remitente/nombre de la sucursal. Tendrá que usar 'git remote prune sender' para deshacerse de él después de que lo haya hecho, aunque en la mayoría de los casos, no debe preocuparse. –

+1

* Usted * nunca debe fusionar su propia sucursal a menos que usted sea el responsable de integrarla en el árbol principal. Si no es así y le pediste a alguien más que lo integre, actualiza tu sucursal principal con los nuevos commit remotos, que deben contener lo que solicitaste que se retire, y luego elimina tu sucursal. Esto asegura que no tendrás ningún problema si el otro tipo cambió las cosas. – ThiefMaster

Cuestiones relacionadas