En el trabajo estamos utilizando ramas temáticas que están integradas en algunas (3) ramas principales en algún momento. Ahora me gustaría eliminar todas las ramas de temas de mi remoto repositorio que se han integrado completamente en una rama principal. Si eso no es posible, recuperar una lista de sucursales locales que se han integrado también estaría bien.¿Cómo eliminar todas las sucursales de git remotas que ya se han integrado?
Respuesta
Editar:
Mejor respuesta del comentario de skalee:
git branch -a --merged remotes/origin/master | grep -v master | grep "remotes/origin/" | cut -d "/" -f 3- | xargs -n 1 git push --delete origin
vieja respuesta:
git push --delete remote topicbranch
o
git push remote :topicbranch
Dar una lista de ramas, sería algo con git branch --merged master
Puede hacerlo de una sola vez con
git branch --merged master | grep -v master | xargs -n 1 git push --delete origin
volcado que en un script llamado 'limpia' si encuentras que estás haciendo esto a menudo.
Si desea eliminar todas las sucursales remotas, no solo las que tienen sus contrapartes locales: 'git branch -a - remotes remotos/origin/master | grep -v master | grep "remotos/origen /" | cut -d "/" -f 3 | xargs -n 1 git push --delete origin'. Además, recomiendo usar 'remotes/origin/master' en lugar de' master' simple para excluir cosas que se fusionaron localmente pero que aún no se han enviado, en caso de que eventualmente olvide o decida no presionar. – skalee
@skalee ¡gracias! esto funcionó para mí, excepto cuando las sucursales están en carpetas; en su lugar, use 'cut -d"/"-f 3-'. También tuve que agregar un 'grep -v develop' para detenerlo tratando de eliminar mi rama dev. – antonyh
'xargs -n 1' es demasiado lento, si tiene muchas ramas use' xargs -n 20' en su lugar. – mozillazg
Si desea eliminar ramas remotas desde el repositorio de origen:
git branch -r --merged develop | egrep -iv '(master|develop)' | sed 's/origin\///g' | xargs -n 1 git push --delete origin
Esto también es útil para eliminar todas las ramas ascendentes después de un tenedor – ianstarz
esta es la verdadera respuesta correcta :), ya que los otros no parecen eliminar las ramas incluidas las barras, que usamos (aunque mezcladas) función/mi-característica, bugfix/my-feature –
Esto se ve bastante bien, excepto que es bastante importante usar origen/maestro o origen/desarrollar como el estándar por el cual se puede eliminar algo. No está bien eliminar algo del control remoto solo porque lo fusionó en su versión local de la rama principal, existe la posibilidad de que olvide transferir esa rama al control remoto, lo que puede significar eliminar las ramas no fusionadas del origen. –
Estos son los comandos que estoy usando para eliminar todo lo que se funden en origin/master
. Básicamente, elimino todas las ramas fusionadas en master
desde GitHub.
git remote update -p &&
git branch -r --merged origin/master |
grep origin |
grep -v master |
cut -d"/" -f2- |
xargs git push origin --delete
Solo para usuarios de Powershell y Windows.
git branch -r --merged | findstr /v "origin/master" | %{git push origin --delete $_.Trim().Substring(7)}
- 1. ¿Cómo puedo hacer que git-svn elimine las sucursales remotas que ya no existen?
- 2. Fusionando sucursales remotas en git
- 3. Reubicación de sucursales remotas en Git
- 4. Pedido/sucursales remotas Lista de git-pitón
- 5. Cabeza comprometo para todas las ramas remotas usando Git
- 6. Configuración de Git a buscar todas las ramas remotas
- 7. En git, ¿cómo reviso las sucursales remotas de un repositorio remoto?
- 8. EMPUJA todas las sucursales locales de GIT? ¿Mejores prácticas?
- 9. Git número de confirmaciones por autor en todas las sucursales
- 10. ¿Puedo mapear sucursales locales en sucursales remotas con diferentes prefijos en git?
- 11. ramas git existentes para realizar un seguimiento de las sucursales remotas
- 12. En GIT, ¿cómo puedo evitar que las personas cambien o eliminen confirmaciones que ya se han enviado?
- 13. git encontrar sucursales no fusionadas
- 14. ¿Cómo se elimina una rama remota de git "correctamente", a.k.a. actualizando la lista de sucursales remotas para todos los usuarios?
- 15. Las ramas de git remotas no se muestran con `git branch -r`?
- 16. ¿Inhabilita la finalización automática de sucursales remotas en Zsh?
- 17. Jira y git: ¿Cómo se reflejan todas las ramas?
- 18. Permitir todas las conexiones remotas, MySQL
- 19. ¿Cómo hacer que gitk muestre solo las sucursales locales?
- 20. Javascript - ejecutar después de que todas las imágenes han cargado
- 21. Notificar que todas las propiedades han cambiado en ViewModel
- 22. ¿Cómo eliminar archivos de SVN que ya han sido eliminados del FS?
- 23. Comparación de directorios de las sucursales de Git
- 24. git rebase en actualizaciones remotas
- 25. ¿Dónde se han ido todas las funciones simples en WebGL?
- 26. Archivos no rastreados entre sucursales en Git
- 27. Cambie los nombres de las sucursales en git
- 28. ¿Alguien más puede explicar el control de sucursales remotas con git?
- 29. ¿Cómo eliminar las confirmaciones de git innecesarias?
- 30. Git: distinguir entre etiquetas locales y remotas
Gracias, 'git branch --merged' se ve bien. Lamentablemente, no funcionará correctamente con las ramas que se han vuelto a instalar durante la integración ... pero bueno, al menos * algunas de mis ramas de mierda (160) se enumeran como superseguras para eliminarlas. – ThiefMaster
Las ramas reajustadas son más complicadas ... Eso podría ser posible, pero requeriría al menos el shellscript que dibujará la lista de revisiones después del punto de ramificación y luego buscará firmas de parche a lo largo de la rama principal ... Estoy no estoy al tanto de ninguna solución precocinada para esto. –
Esto es fantástico, aunque logré un pequeño inconveniente. Nombro mis ramas con un '/', p. uno de mis nombres de rama podría ser 'sf/correct-typo-7'. Debido al parámetro '-f 3' en ** corte **, este nombre de rama se truncaría a' sf'. Al cambiar el parámetro a '-f 3-', se corrige este problema y se manejan las ramas con cualquier número de barras inclinadas. –