我在分支-X上,并在其上添加了几个提交。我想看看MASTER和我提交的分支之间的所有区别。我可以做一个
git checkout master
git log
然后是
git checkout branch-X
git log
并在视觉上区分这些,但我希望有一种更简单,更不容易出错的方法。
答案 0 :(得分:605)
您可以使用
轻松完成此操作git log master..branch-X
这将显示你承诺分支-X但主人没有。
答案 1 :(得分:269)
你可以通过这个
得到一个非常好的视觉输出,看你的分支是如何不同的git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative master..branch-X
答案 2 :(得分:54)
我认为这是选择和背景的问题。我更喜欢使用
git log origin/master..origin/develop --oneline
它将显示不在master分支中的develop中的提交。
如果您想查看实际修改的文件,请使用
git diff --stat origin/master..origin/develop
如果你没有指定参数,它将显示完整的差异。
如果你想看到visual diff,请在linux上安装meld
,或在Windows上安装WinMerge
。确保它们是默认的difftools。然后使用类似
git difftool -y origin/master..origin/develop
如果您想将其与当前分支进行比较。使用HEAD代替分支名称比使用更方便:
git fetch
git log origin/master..HEAD --oneline
它会显示所有即将合并的提交
答案 3 :(得分:14)
如果您使用的是Linux,gitg
可以快速,图形化地完成。
如果您坚持使用命令行,则可以使用:
git log --oneline --decorate
默认情况下,要使git log
更好,我通常会设置这些全局首选项:
git config --global log.decorate true
git config --global log.abbrevCommit true
答案 4 :(得分:12)
我建议以下内容查看“提交内容”的区别。对于对称差异,请使用反向参数重复命令:
git cherry -v master [your branch, or HEAD as default]
答案 5 :(得分:4)
答案 6 :(得分:0)
#! /bin/bash
if ((2==$#)); then
a=$1
b=$2
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命令以启动可视化差异工具。
答案 7 :(得分:0)
我使用了一些答案,并找到了适合我的情况的答案(确保所有任务都在release分支中)。
其他方法也可以使用,但是我发现它们可能会添加不需要的行,例如不增加值的合并提交。
git fetch
git log origin/master..origin/release-1.1 --oneline --no-merges
或者您可以将当前数据与主数据进行比较
git fetch
git log origin/master..HEAD --oneline --no-merges
git fetch
可以确保您使用的是更新的信息。
通过这种方式,每个提交都将排成一行,您可以将其复制/粘贴到文本编辑器中,然后开始将任务与将要合并的提交进行比较。
答案 8 :(得分:0)
如果要基于提交消息进行比较,可以执行以下操作:
git fetch
git log --oneline origin/master | cut -d' ' -f2- > master_log
git log --oneline origin/branch-X | cut -d' ' -f2- > branchx_log
diff <(sort master_log) <(sort branchx_log)