我在分支x上,并在它上面添加了更多的提交。我想看看MASTER和我所在的分支在提交方面的所有差异。我可以做一个

git checkout master
git log

然后是

git checkout branch-X
git log

和视觉上的区别,但我希望有一个更简单,更不容易出错的方法。


当前回答

我建议使用以下方法来查看“在提交中”的区别。对于对称差分,重复反向参数的命令:

git cherry -v master [your branch, or HEAD as default]

其他回答

#! /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命令替换为启动可视化diff工具的命令。

如果您使用的是Linux,那么gitg是一种非常快速且图形化的方法。

如果你坚持使用命令行,你可以使用:

git log --oneline --decorate

为了让git日志在默认情况下更好,我通常设置这些全局首选项:

git config --global log.decorate true
git config --global log.abbrevCommit true

这不是完美的答案,但对使用Github的人来说更好:

去你的回购:见解->网络

我建议使用以下方法来查看“在提交中”的区别。对于对称差分,重复反向参数的命令:

git cherry -v master [your branch, or HEAD as default]

我认为这是选择和环境的问题。我更喜欢用

git log origin/master..origin/develop --oneline --no-merges

它将显示在develop中不在主分支中的提交。

如果您想查看哪些文件实际上被修改了,请使用

git diff --stat origin/master..origin/develop --no-merges

如果你不指定参数,它将显示完整的差异。 如果你想看到视觉差异,在linux上安装meld,或者在windows上安装WinMerge。确保它们是默认的扩散工具。然后使用类似的东西

git difftool -y origin/master..origin/develop --no-merges

以防你想与当前分支进行比较。使用HEAD比使用use这样的分支名更方便:

git fetch
git log origin/master..HEAD --oneline --no-merges

它将显示所有即将合并的提交