Powiedzmy, że utworzyłem nową gałąź my_experiment
z master
i wykonałem kilka zatwierdzeń my_experiment
. Jeśli zrobię, git log
gdy włączona my_experiment
, zobaczę zatwierdzenia dokonane w tej gałęzi, ale także zatwierdzenia dokonane master
przed utworzeniem my_experiments
gałęzi.
Uważam, że bardzo przydatne byłoby zobaczenie historii wszystkich zatwierdzeń my_experiments
gałęzi, dopóki nie pojawi się ona podczas tworzenia tej gałęzi - w rzeczywistości prawdziwą historię tylko tej gałęzi. W przeciwnym razie nie jest dla mnie jasne, gdy przeglądam dziennik, czy zatwierdzenia znajdowały się w my_experiments
gałęzi, czy nie.
Czy można to zrobić za pomocą Gita?
git log master..
mówi Gitowi?master..
) części.git merge-base
Polecenie może być użyte do znalezienia wspólnego przodka. Więc jeśli my_experiment nie został jeszcze scalony z master, a my_experiment został utworzony z mastera, można:źródło
git log --oneline `git merge-base my_experiment master`^..my_experiment --first-parent
Uwaga: jeśli ograniczysz ten dziennik do ostatniego n zatwierdzenia (na przykład ostatnich 3 zatwierdzeń, git log -3), pamiętaj, aby wstawić spację między 'n' a twoją gałęzią:
Przed Git 2.1 (sierpień 2014) ten błąd:
git log -3master..
faktycznie pokazywał ostatnie 3 zatwierdzenia bieżącej gałęzi (tutajmy_experiment
), ignorującmaster
limit (co oznacza, że jeślimy_experiment
zawiera tylko jedno zatwierdzenie, 3 nadal byłyby wymienione, 2 z nichmaster
)Zobacz commit e3fa568 autorstwa Junio C Hamano (
gitster
) :rewizja:
git log -<count>
dokładniej przeanalizuj " "źródło
Możesz użyć tylko
git log --oneline
źródło
Myślę, że opcją do twoich celów jest
git log --online --decorate
. Pozwala to poznać zaznaczone zatwierdzenie i najważniejsze zatwierdzenia dla każdej gałęzi, którą masz w swojej historii. Robiąc to, masz ładny widok na strukturę swojego repozytorium i zatwierdzeń powiązanych z określoną gałęzią. Myślę, że przeczytanie tego może pomóc.źródło
Wiem, że na ten jest już bardzo późno ... Ale oto (nie taki prosty) oneliner, aby uzyskać to, czego szukałeś:
git show-branch
(wysyłając ostrzeżenia do/dev/null
).grep -E "\[$BRANCH_NAME"
.$BRANCH_NAME
uzyskuje się zgit branch | grep -E '^\*' | awk '{ printf $2 }'
(gałąź z gwiazdą, echo bez tej gwiazdy).tail -n+2
.[$BRANCH_NAME]
zesed -E "s/^[^\[]*?\[/[/"
.źródło