git - Git 如何获取分支上的更改

标签 git branch

获取分支从当前分支分支以来的提交日志的最佳方法是什么?到目前为止,我的解决方案是:

git log $(git merge-base HEAD branch)..branch

git-diff 的文档表示 git diff A...B 等同于 git diff $(git-merge-base A B) B。另一方面,git-rev-parse 的文档表示 r1...r2 被定义为 r1 r2 --not $(git merge-base --all r1 r2)

为什么这些不同?请注意,git diff HEAD...branch 提供了我想要的差异,但相应的 git log 命令提供了比我想要的更多的东西。

在图片中,假设是这样的:

         x---y---z---branch
        /
---a---b---c---d---e---HEAD

我想要一个包含提交 x、y、z 的日志。

  • git diff HEAD...branch 给出这些提交
  • 但是,git log HEAD...branch 给出了 x、y、z、c、d、e。

最佳答案

在修订列表的上下文中,A...Bgit-rev-parse 定义它的方式。 git-log 获取修订列表。 git-diff 不采用修订列表 - 它采用一个或两个修订,并且定义了 A...B 语法来表示它是如何在 git-diff 联机帮助页。如果 git-diff 没有显式定义 A...B,那么该语法将无效。请注意,git-rev-parse 联机帮助页在“指定范围”部分描述了 A...B,并且该部分中的所有内容仅在修订版的情况下有效范围有效(即需要修订列表时)。

要获得仅包含 x、y 和 z 的日志,请尝试 git log HEAD..branch(两个点,而不是三个)。这与 git log branch --not HEAD 相同,意思是所有分支上的提交不在 HEAD 上。

关于git - Git 如何获取分支上的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53569/

相关文章:

merge 后git分支恢复

svn - 限制源代码访问目录中的几个文件,新开发人员 - SVN

c++ - 分支预测优化

git - 如何一劳永逸地将git存储库重置为干净状态

git - 什么 git 钩子(Hook)适用于 'git rebase --continue' ?

git - 使用 git 设置正确的 Golang 目录结构以在自定义包上使用 go build

git - 如何跟踪 Git 中共享公共(public)代码的多个项目?

mercurial - 在 Mercurial 中创建一个临时命名分支,然后将其从存在中删除

linux - 'git clone' 遵循 umask,顶级项目目录除外

Git - 支持外来字符集