我想得到几个不连续的Git提交中的更改摘要。这是一个例子:
我希望得到这样的摘要:
有可能吗? (它与Github中的Compare view非常相似。)
谢谢!
答案 0 :(得分:3)
听起来像git diff给我。
git diff commit1 commit3
这将显示在这两个提交之间发生更改的文件名和行。 如果您从命令行使用git,我建议启用颜色。这将使diff输出更容易阅读:
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
还有一些程序可以以图形方式显示diff输出。 (比如Linux中的 kompare )
答案 1 :(得分:0)
嗯,你可以这样做:
for c in $commits; do
echo $c
git show --name-status $c
echo
done
你可以编写脚本来让它变得更漂亮,更漂亮,直到你得到你想要的输出格式。将$commits
替换为类似$(git rev-list --author=Me master..topic)
的内容以转储到提交列表中。填满所有输出并将其重组为每个文件列表(awk会很擅长)。等等。
答案 2 :(得分:0)
我一直在寻找类似的东西,除了您的“非连续”要求。我可以共享它,以防它帮助来这里的人和我有相同的问题(类似于您的问题),或者可以使您离答案更近。
我有一个功能分支与master分支不同-即两个分支自上一个共同祖先以来都有新的提交,我想知道 feature 有什么变化如果合并到master分支将尝试引入。
git diff master feature
不会执行我想要的操作,因为自从功能分支以来,master上的每个新更改都将显示为负,因为该功能没有它。我只想看到在功能方面所做的积极工作。
git log --stat master..feature
更加接近,它向我展示了由于每次与主功能不同而导致的每次提交更改的文件。但是,如果该功能具有数十个新提交,则仍然很难使用。
我想看到的是变更功能分支的“压缩”版本,相对于master而言,却忽略了自分支以来对master所做的更改。
这对我有用:
# get the commit ID of the last common ancestor
git merge-base feature master
# show the diff from that ancestor to the head of feature branch
# (works with --stat option too, to summarize changes)
git diff <ancestor ID> feature
# combined form:
git diff `git merge-base feature master` feature