Допустим, я создал новую ветку my_experiment
от master
и сделал несколько фиксаций к my_experiment
. Если я делаю, git log
когда включен my_experiment
, я вижу коммиты, сделанные в этой ветке, но также и фиксации, сделанные master
до создания my_experiments
ветки.
Мне было бы очень полезно увидеть историю всех коммитов в my_experiments
ветке до тех пор, пока не произойдет создание этой ветки - по сути, настоящая история только этой ветки. Иначе при просмотре журнала мне непонятно, были ли коммиты на my_experiments
ветке или нет.
Есть ли способ сделать это с помощью Git?
git log master..
говорит Git?master..
часть).git merge-base
Команда может быть использована для поиска общего предка. Итак, если my_experiment еще не был объединен с мастером, а my_experiment был создан из мастера, вы можете:источник
git log --oneline `git merge-base my_experiment master`^..my_experiment --first-parent
Примечание: если вы ограничиваете этот журнал последним n фиксацией (например, последними 3 фиксациями, git log -3), не забудьте поставить пробел между 'n' и вашей веткой:
До Git 2.1 (август 2014 г.) эта ошибка:
git log -3master..
фактически показывала вам последние 3 коммита текущей ветки (здесьmy_experiment
), игнорируяmaster
лимит (то есть, еслиmy_experiment
содержит только один коммит, 3 все равно будут перечислены, 2 из них изmaster
)См. Фиксацию e3fa568 от Junio C Hamano (
gitster
) :редакция:
git log -<count>
более тщательно проанализируйте " "источник
Вы можете использовать только
git log --oneline
источник
Думаю вариант для ваших целей есть
git log --online --decorate
. Это позволяет вам узнать проверенную фиксацию и верхнюю фиксацию для каждой ветки в вашей сюжетной линии. Сделав это, вы получите хорошее представление о структуре вашего репо и коммитах, связанных с конкретной веткой. Думаю, это может помочь.источник
Я знаю, что для этого уже очень поздно ... Но вот (не такой простой) единственный способ получить то, что вы искали:
git show-branch
(отправка предупреждений/dev/null
).grep -E "\[$BRANCH_NAME"
.$BRANCH_NAME
получается сgit branch | grep -E '^\*' | awk '{ printf $2 }'
(ветвь со звездой, отраженная без этой звезды).tail -n+2
.[$BRANCH_NAME]
сsed -E "s/^[^\[]*?\[/[/"
.источник