¿Cómo eliminar una rama localmente?

159

Tengo un maestro y una rama de desarrollo en mi repositorio. Quiero eliminar la rama maestra de mi computadora para no comprometerme accidentalmente (sucedió ...).

Aquí hay preguntas sobre cómo eliminar sucursales de forma local y remota, pero no he podido averiguar cómo eliminar solo una sucursal localmente.

Una respuesta dijo usar esto:

git branch -d local_branch_name

Pero lo intenté y la rama todavía aparece en la aplicación GitHub.

Nate
fuente
¿Cuál es el resultado de ese comando? ¿En qué rama estás? ¿Cómo aparece en la consola?
Habla
@SLaks Tenía un tipo en mi pregunta. En la consola, en realidad dice que se eliminó la rama, pero en la aplicación GitHub (incluso después de reiniciarla) la rama y la confirmación siguen siendo visibles. La salida esDeleted branch master (was e8a8e29).
Nate
GitHub para Windows también muestra sucursales remotas
SLaks
@SLaks Entonces, después de eliminar la sucursal localmente, si hago clic en ella en la aplicación GitHub para Windows, ¿simplemente la vuelvo a clonar? Quiero evitar que pueda realizar cambios en la rama maestra directamente.
Nate

Respuestas:

114

Creo (en base a sus comentarios) que entiendo lo que quieres hacer: desea que su copia local del repositorio que no tienen ni la rama local ordinaria master, ni la rama remota de seguimiento origin/master, a pesar de que el repositorio clonado el github : Tiene una rama local masterque no desea eliminar de la versión de github.

Puede hacer esto eliminando la rama de seguimiento remoto localmente, pero simplemente volverá cada vez que solicite a su git que sincronice su repositorio local con el repositorio remoto, porque su git le pregunta a su git "qué ramas tiene" y dice "Tengo master" para que tu git (re) cree origin/masterpara ti, para que tu repositorio tenga lo que tiene el suyo.

Para eliminar su rama de seguimiento remoto localmente utilizando la interfaz de línea de comando:

git branch -d -r origin/master

pero nuevamente, solo volverá a sincronizarse nuevamente. Que es posible derrotar a esto también (mediante remote.origin.fetchla manipulación), pero usted es probablemente mejor sólo ser lo suficientemente disciplinado para no crear o modificar masterlocalmente.

torek
fuente
Relacionado: ¿Cómo clonar una sola rama en git?
Tobias Kienzler
99

Forzar la eliminación de la rama local:

$ git branch -D <branch_name>

[ NOTA ]:

"-D" Es forzar la opción de eliminación.


Benyamin Jafari
fuente
66
Si elimino una rama local que tenía un conjunto ascendente y luego hago una inserción normal, ¿no eliminará la rama remota, verdad?
Impulsado por el café el
1
@FueledByCoffee Aquí está la respuesta a esta pregunta
Benyamin Jafari, el
17

Hasta donde puedo entender el problema original, agregaste commits al maestro local por error y aún no presionaste esos cambios. Ahora desea cancelar sus cambios y esperar eliminar sus cambios locales y crear una nueva rama maestra desde la remota.

Simplemente puede restablecer sus cambios y volver a cargar el maestro desde el servidor remoto:

git reset --hard origin/master
Eugene Kaurov
fuente
13

La aplicación Github para Windows muestra todas las ramas remotas de un repositorio. Si ha eliminado la rama localmente $ git branch -d [branch_name], la rama remota todavía existe en su repositorio de Github y aparecerá independientemente de la aplicación Windows Github.

Si desea eliminar la rama por completo (también de forma remota), use el comando anterior en combinación con $ git push origin :[name_of_your_new_branch]. Advertencia: este comando borra todas las ramas existentes y puede causar la pérdida de código. Tenga cuidado, no creo que esto sea lo que está tratando de hacer.

Sin embargo, cada vez que elimine los cambios de la rama local, la rama remota seguirá apareciendo en la aplicación. Si no desea seguir haciendo cambios, simplemente ignórelo y no haga clic; de lo contrario, puede clonar el repositorio. Si tiene más preguntas, hágamelo saber.


fuente
1

necesita cambiar a otra rama e intentar lo mismo.

git branch -d

Kumar Vaduganathan
fuente
1
¿Se supone que esto es una respuesta? O una aclaración qustion? O una simple pregunta? Es tan corto que no puedo decirlo. ¿Te gustaría elaborar?
Yunnosch
0

Según sus etiquetas, supongo que está usando Github. ¿Por qué no crear algunas reglas de protección de sucursal para su sucursal maestra? De esa manera, incluso si intentas presionar para dominar, lo rechazará.

1) Vaya a la pestaña 'Configuración' de su repositorio en Github.

2) Haga clic en 'Ramas' en el menú lateral izquierdo.

3) Haga clic en 'Agregar regla'

4) Ingrese 'maestro' para un patrón de rama.

5) Marque 'Requerir revisiones de solicitud de extracción antes de fusionar'

También recomendaría hacer lo mismo para su rama de desarrollo.

Qamar Stationwala
fuente