Como posso consultar o git para descobrir quais ramificações contêm um determinado commit? gitk
normalmente listará os ramos, a menos que haja muitos, caso em que apenas diz "muitos (38)" ou algo parecido. Preciso conhecer a lista completa, ou pelo menos se certas ramificações contêm a confirmação.
git
version-control
Andrew Arnott
fonte
fonte
Respostas:
Na página de manual do git-branch :
Listas remoto rastreamento ramos bem (como mencionado no user3941992 's resposta abaixo) que é 'ramos locais que têm uma relação direta com a filial remota'.
Veja também este artigo pronto para o git .
Nota: se o cometer está em um ramo de monitoramento remoto , adicione a
-a
opção .(como MichielB comenta abaixo )
MatrixFrog comenta que mostra apenas quais ramificações contêm esse commit exato .
Se você deseja saber quais ramificações contêm uma confirmação "equivalente" (ou seja, quais ramificações escolheram essa confirmação), isso é
git cherry
:(Aqui, os commits marcados com '
-
' não apareceriamgit cherry
, o que significa que eles já estão presentes<upstream>
.)fonte
tests
emaster
-master
é o ramo atual, portanto, o asterisco.git cherry
: "Como o git cherry compara o changeset em vez do ID de confirmação (sha1), você pode usar o git cherry para descobrir se uma confirmação que você fez localmente foi aplicada <upstream> sob um ID de confirmação diferente. Por exemplo, isso acontecerá se você estiver alimentando correções <upstream> por email, em vez de enviar ou enviar confirmações diretamente ". kernel.org/pub/software/scm/git/docs/git-cherry.html-a
parâmetro para também verificar ramificações remotas.git tag --contains <commit>
. Consulte Procurando por todas as tags que contêm uma confirmação? .git cherry
parte @UpAndAdam, faça a pergunta aqui: stackoverflow.com/questions/16304574/… , infelizmente, a pergunta ainda não foi respondida.Você pode executar:
No comentário do último commit na saída, você pode encontrar o nome original da ramificação
Exemplo:
fonte
git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1
para obter isso em uma linhagit log <SHA1>..master --ancestry-path --merges --oneline -1
A..B
intervalo de commit, apenas não use um range como este ::git log HEAD --oneline -1
>82c12a9 (HEAD, origin/remote-branch-name, origin/master, origin/dev, origin/HEAD, master, dev) commit message
.master
sempre é preferível se estiver nesta lista . A partir daí, é menos claro. Você poderia tentar e ler git branch de arquivo .gitmodules:git config -f .gitmodules submodule.src/foo/submodule.branch
. Pode ser um garfo / pr de longa data. Você pode cd para repo root e executargit config submodule.src/foo/submodule.branch
. Você também pode usar o ramo git atual dos superprojetos.git config submodule.src/foo/submodule.branch
Pode ser influenciado por qualquer variedade de configurações do git, incluindo um arquivo .gitconfig repo-local. (requer execuçãogit config --local include.path ./path/to/your/.gitconfig
)