Jak mogę zapytać git, aby dowiedzieć się, które gałęzie zawierają dane zatwierdzenie? gitk
zwykle wypisuje gałęzie, chyba że jest ich zbyt wiele, w takim przypadku mówi tylko „wiele (38)” lub coś w tym rodzaju. Muszę znać pełną listę, a przynajmniej to, czy niektóre gałęzie zawierają zatwierdzenie.
git
version-control
Andrew Arnott
źródło
źródło
Odpowiedzi:
Na stronie podręcznika git-branch :
Listy zdalne śledzenie oddziałów , jak również (jak wspomniano w user3941992 „s odpowiedź poniżej), który jest«lokalne oddziały, które mają bezpośredni związek ze zdalną gałąź».
Zobacz także ten artykuł gotowy do użycia z Git .
Uwaga: jeśli zatwierdzenie znajduje się w gałęzi zdalnego śledzenia , dodaj
-a
opcję .(jak komentuje MichielB poniżej )
MatrixFrog komentuje, że pokazuje tylko, które gałęzie zawierają to dokładne zatwierdzenie.
Jeśli chcesz wiedzieć, które gałęzie zawierają „równoważne” zatwierdzenie (tj. Które gałęzie wybrały tę opcję)
git cherry
:(Tutaj zatwierdzenia oznaczone „
-
” nie pojawiałyby sięgit cherry
, co oznacza, że są już obecne<upstream>
.)źródło
tests
orazmaster
-master
jest bieżącą gałęzią, dlatego gwiazdka.git cherry
: „Ponieważ git cherry porównuje zestaw zmian zamiast identyfikatora zatwierdzenia (sha1), możesz użyć git cherry, aby się dowiedzieć jeśli zatwierdzenie, które dokonałeś lokalnie, zostało zastosowane <upstream> pod innym identyfikatorem zatwierdzenia. Na przykład stanie się tak, jeśli będziesz podawać łatki <upstream> pocztą elektroniczną zamiast bezpośrednio wypychać lub wyciągać zatwierdzenia. " kernel.org/pub/software/scm/git/docs/git-cherry.html-a
parametr, aby również sprawdzić zdalne gałęzie.git tag --contains <commit>
. Zobacz Wyszukiwanie wszystkich tagów zawierających zatwierdzenie? .git cherry
części @UpAndAdam zadałem pytanie tutaj: stackoverflow.com/questions/16304574/… , niestety, na pytanie (jeszcze) nie udzielono odpowiedzi.Możesz uruchomić:
Z komentarza ostatniego zatwierdzenia w danych wyjściowych można znaleźć oryginalną nazwę gałęzi
Przykład:
źródło
git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1
, aby dostać to w jednej liniigit log <SHA1>..master --ancestry-path --merges --oneline -1
A..B
zakresu zatwierdzeń, po prostu nie używaj takiego zakresu ::git log HEAD --oneline -1
>82c12a9 (HEAD, origin/remote-branch-name, origin/master, origin/dev, origin/HEAD, master, dev) commit message
.master
zawsze jest preferowane, jeśli jest na tej liście . Stamtąd jest mniej jasne. Można spróbować odczytać git oddział z pliku .gitmodules:git config -f .gitmodules submodule.src/foo/submodule.branch
. Może to być długo stojący widelec / pr. Możesz cd repo root i uruchomićgit config submodule.src/foo/submodule.branch
. Możesz również użyć superprojektu bieżącej gałęzi git.git config submodule.src/foo/submodule.branch
może mieć na nią wpływ dowolna konfiguracja git, w tym lokalny plik .gitconfig repo. (wymaga uruchomieniagit config --local include.path ./path/to/your/.gitconfig
)