我在 branch-X 上,并在其上添加了几个提交。我想看看 MASTER 和我所在的分支在提交方面的所有差异。我可以做一个
git checkout master
git log
然后一个
git checkout branch-X
git log
并在视觉上区分这些,但我希望有一种更简单、更不容易出错的方法。
你可以很容易地做到这一点
git log master..branch-X
这将向您显示 branch-X 具有但 master 没有的提交。
您可以获得一个非常好的视觉输出,说明您的分支与此有何不同
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 --oneline --graph --all --decorate --abbrev-commit
将以更短/更易读的命令为您提供类似的输出
git log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset'
git log --oneline --graph --all --decorate
即可,--abbrev-commit
不需要,--oneline
是 --pretty=oneline --abbrev-commit
的缩写
我认为这是选择和上下文的问题。我更喜欢使用
git log origin/master..origin/develop --oneline --no-merges
它将在开发中显示不在 master 分支中的提交。
如果您想查看实际修改了哪些文件,请使用
git diff --stat origin/master..origin/develop --no-merges
如果您不指定参数,它将显示完整的差异。如果您想查看视觉差异,请在 linux 上安装 meld
,或在 Windows 上安装 WinMerge
。确保它们是默认的 difftools 。然后使用类似的东西
git difftool -y origin/master..origin/develop --no-merges
如果您想将其与当前分支进行比较。使用 HEAD 而不是使用分支名称更方便:
git fetch
git log origin/master..HEAD --oneline --no-merges
它将向您显示即将合并的所有提交
--no-merges
的帮助下删除合并提交(不添加任何值),例如:git log origin/master..HEAD --oneline --no-merges
我建议以下内容来查看“提交”中的差异。对于对称差异,使用反转的 args 重复命令:
git cherry -v master [your branch, or HEAD as default]
如果您在 Linux 上,gitg
是一种非常快速和图形化的方式。
如果您坚持使用命令行,则可以使用:
git log --oneline --decorate
为了使 git log
默认更好,我通常设置这些全局首选项:
git config --global log.decorate true
git config --global log.abbrevCommit true
如果你想使用 gitk:
gitk master..branch-X
它有一个不错的老式 GUI
不是完美的答案,但对使用 Github 的人来说效果更好:
https://i.stack.imgur.com/eCxXC.png
转到您的存储库:Insights -> Network
我使用了一些答案并找到了一个适合我的情况(确保所有任务都在发布分支中)。
其他方法也可以,但我发现它们可能会添加我不需要的行,例如没有任何价值的合并提交。
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
可确保您使用的是更新的信息。
这样,每个提交都将在一行中,您可以将其复制/粘贴到文本编辑器中,然后开始将任务与将要合并的提交进行比较。
如果要根据提交消息进行比较,可以执行以下操作:
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)
git log --format='%s'
而不是使用 --oneline
和管道到 cut
#! /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 命令替换为启动可视差异工具的命令。
不定期副业成功案例分享
branch-X
,您可以使用git log master..
git log master...branch-X
(三个点而不是两个点)。请参阅man gitrevisions
了解更多信息。