tipos - git ver commits pendientes
Usando Git, muestre todas las confirmaciones que están en una rama, pero no la otra(s) (10)
Para aquellos que todavía están buscando una respuesta simple, echa un vistazo a git cherry . Compara diferencias reales en lugar de cometer hashes. Eso significa que contiene compromisos que han sido seleccionados o rebasados.
Primero compruebe la rama que desea eliminar:
git checkout [branch-to-delete]
luego use git cherry para compararlo con su rama de desarrollo principal:
git cherry -v master
Ejemplo de salida:
+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message
- 85867e38712de930864c5edb7856342e1358b2a0 Yet another message
Nota: el indicador -v
es para incluir el mensaje de confirmación junto con el hash SHA.
Las líneas con el ''+'' al frente están en la rama a eliminar, pero no en la rama maestra. Aquellos con un ''-'' en frente tienen un commit equivalente en master.
Para JUST las confirmaciones que no están en master, combine cherry pick con grep:
git cherry -v master | grep "^/+"
Ejemplo de salida:
+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message
Tengo una rama antigua, que me gustaría eliminar. Sin embargo, antes de hacerlo, quiero comprobar que todas las confirmaciones realizadas en esta rama se fusionaron en algún momento en otra rama. Por lo tanto, me gustaría ver todas las confirmaciones realizadas en mi rama actual que no se hayan aplicado a ninguna otra rama [o, si esto no es posible sin algunas secuencias de comandos, ¿cómo se ven todas las confirmaciones en una rama que no se han aplicado? a otra rama dada?].
Para enumerar las confirmaciones faltantes entre dos ramas, puede usar compare-branches.py
Para mostrar las confirmaciones en oldbranch pero no en newbranch:
git log newbranch..oldbranch
Para mostrar la diferencia por estos compromisos (note que hay tres puntos):
git diff newbranch...oldbranch
Aquí está el documento con una ilustración del diagrama https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection#Commit-Ranges
Para ver una lista de las confirmaciones que se encuentran en una rama pero no en otra, use git log:
git log oldbranch ^newbranch --no-merges
... es decir, muestra los registros de confirmación para todas las confirmaciones en oldbranch que no están en newbranch. Puede enumerar múltiples ramas para incluir y excluir, por ejemplo,
git log oldbranch1 oldbranch2 ^newbranch1 ^newbranch2 --no-merges
Nota: en Windows ^
es una clave de escape, por lo que debe escaparse con otro ^
:
git log oldbranch ^^newbranch --no-merges
Probablemente solo quieras
git branch --contains branch-to-delete
Esto mostrará una lista de todas las ramas que contienen las confirmaciones de "rama a eliminar". Si informa algo más que "bifurcar para eliminar", la bifurcación se ha fusionado.
Tus alternativas son solo cosas de sintaxis rev-list. por ejemplo, git log one-branch..another-branch
muestra todo lo que one-branch
necesita para tener todo lo que another-branch
tiene.
También puede interesarte git show-branch
como una manera de ver qué es dónde.
Puede usar este simple script para ver los confirmaciones que no están fusionadas
#!/bin/bash
# Show commits that exists only on branch and not in current
# Usage:
# git branch-notmerge <branchname>
#
# Setup git alias
# git config alias.branch-notmerge [path/to/this/script]
grep -Fvf <(git log --pretty=format:''%H - %s'') <(git log $1 --pretty=format:''%H - %s'')
También puede utilizar la herramienta git-wtf que mostrará el estado de las ramas.
Si bien algunas de las respuestas publicadas aquí ayudarán a encontrar lo que busca, el siguiente subcomando de git branch es una solución más adecuada para su tarea.
Mientras que en master
se puede ejecutar el comando para enumerar las ramas que se pueden eliminar de forma segura, como en:
git branch --merged
develop
fpg_download_links
* master
master_merge_static
# Delete local and remote tracking branches you don''t want
git branch -d fpg_download_links
git push origin :fpg_download_links
git branch -d master_merge_static
git push origin :master_merge_static
# There is also a flag to specify remote branches in the output
git branch --remotes --merged
Si necesita verificar una (única) rama, por ejemplo, si desea que la rama ''B'' esté completamente fusionada en la rama ''A'', simplemente puede hacer lo siguiente:
$ git checkout A
$ git branch -d B
git branch -d <branchname>
tiene la seguridad de que "la rama debe estar completamente fusionada en HEAD".
Tenga en cuenta que esto elimina realmente la rama si se fusiona,
Cree una solicitud de extracción a través del servicio de alojamiento de git que está utilizando. Si la rama se ha fusionado completamente en la base, no podrá crear el nuevo PR.
Por ejemplo, en GitHub:
No hay nada para comparar.
Esto no usa git en la línea de comandos, pero a menudo encuentro que es útil usar las otras herramientas a tu disposición con un modelo mental claro en lugar de intentar recordar otro comando git arcano.
La respuesta de jimmyorr no funciona en Windows. ayuda a usar --not
lugar de ^
así:
git log oldbranch --not newbranch --no-merges