Digamos que eu criado um novo ramo my_experiment
a partir master
e fez várias commit my_experiment
. Se eu fizer um git log
quando my_experiment
, vejo as confirmações feitas nesta ramificação, mas também as confirmações feitas master
antes da my_experiments
criação da ramificação.
Eu consideraria muito útil ver o histórico de todos os commit no my_experiments
ramo até que ele atinja a criação desse ramo - efetivamente, um histórico verdadeiro apenas desse ramo. Caso contrário, não está claro para mim ao examinar o log se os commits estavam na my_experiments
ramificação ou não.
Existe uma maneira de fazer isso com o Git?
git log master..
diz ao Git?master..
) parte.O
git merge-base
comando pode ser usado para encontrar um ancestral comum. Portanto, se my_experiment ainda não foi mesclado no master e my_experiment foi criado a partir do master, você pode:fonte
git log --oneline `git merge-base my_experiment master`^..my_experiment --first-parent
Nota: se você limitar esse log ao último n commit (os últimos 3 confirmados, por exemplo, git log -3), certifique-se de colocar um espaço entre 'n' e sua ramificação:
Antes do Git 2.1 (agosto de 2014), este erro:
git log -3master..
realmente mostrava os últimos 3 commits da ramificação atual (aquimy_experiment
), ignorando omaster
limite (ou seja, semy_experiment
contiver apenas um commit, 3 ainda serão listados, 2 deles demaster
)Veja commit e3fa568 de Junio C Hamano (
gitster
) :revisão: analise "
git log -<count>
" com mais cuidadofonte
Você pode usar apenas
git log --oneline
fonte
Eu acho que uma opção para seus propósitos é
git log --online --decorate
. Isso permite que você saiba a confirmação verificada e a parte superior confirma para cada ramo que você possui na sua história. Ao fazer isso, você tem uma boa visão da estrutura do seu repo e dos commits associados a uma ramificação específica. Eu acho que ler isso pode ajudar.fonte
Eu sei que é muito tarde para este ... Mas aqui está um oneliner (não tão simples) para obter o que você estava procurando:
git show-branch
(enviando os avisos para/dev/null
).grep -E "\[$BRANCH_NAME"
.$BRANCH_NAME
é obtido comgit branch | grep -E '^\*' | awk '{ printf $2 }'
(o ramo com uma estrela, ecoou sem essa estrela).tail -n+2
.[$BRANCH_NAME]
comsed -E "s/^[^\[]*?\[/[/"
.fonte