Как я вижу различия фиксации между ветвями в 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 в конце команды запуска визуального средства просмотра различий.