Как я вижу различия фиксации между ветвями в git?
Я нахожусь на ветке-X и добавил еще пару коммитов поверх нее. Я хочу видеть все различия между мастером и веткой, в которой я нахожусь, с точки зрения коммитов. Я мог бы просто сделать
git checkout master
git log
и
git checkout branch-X
git log
и визуально различают их, но я надеюсь на более простой, менее подверженный ошибкам метод.
8 ответов:
вы можете получить действительно хороший, визуальный вывод о том, как ваши ветви отличаются от этого
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative master..branch-X
вы можете легко сделать это с
git log master..branch-Xэто покажет вам фиксации, что ветвь-X имеет, но мастер не делает.
Я думаю, что это вопрос выбора и контекста.Я предпочитаю использовать
git log origin/master..origin/develop --onelineон будет отображать коммиты в разработке, которые не находятся в главной ветви.
если вы хотите увидеть, какие файлы на самом деле изменены, используйте
git diff --stat origin/master..origin/developесли вы не укажете аргументы, он отобразит полное различие. Если вы хотите увидеть визуальную разницу, установите
meldна linux, илиWinMergeна windows. Убедитесь, что они являются диффтулами по умолчанию .Тогда используйте что-нибудь какgit difftool -y origin/master..origin/developв случае, если вы хотите сравнить его с текущей веткой. Это более удобно использовать голову вместо имени филиала как использовать:
git fetch git log origin/master..HEAD --onelineон покажет вам все коммиты, которые будут объединены
если вы находитесь на Linux,
gitgэто способ сделать это очень быстро и графически.если вы настаиваете на командной строке, вы можете использовать:
git log --oneline --decorateсделать
git logлучше по умолчанию, я обычно эти глобальные параметры:git config --global log.decorate true git config --global log.abbrevCommit true
Я бы предложил следующее, чтобы увидеть разницу "в коммитах". Для симметричной разности повторите команду с инвертированными аргументами:
git cherry -v master [your branch, or HEAD as default]
Если вы хотите использовать gitk:
gitk master..branch-Xу него есть хороший старый школьный графический интерфейс
#! /bin/bash if ((2==$#)); then a= b= alog=$(echo $a | tr '/' '-').log blog=$(echo $b | tr '/' '-').log git log --oneline $a > $alog git log --oneline $b > $blog diff $alog $blog fiспособствуя этому, потому что это позволяет A и B журналы должны быть diff'Ed визуально, бок о бок, если у вас есть визуальный инструмент diff. Заменить команды diff в конце команды запуска визуального средства просмотра различий.
