git:如何查看提交到单个分支

时间:2012-08-01 10:51:09

标签: git

一位同事从大师那里创建了一个本地分支('branchA'),做了一些工作,推动了它,在master中合并,做了一些工作并再次推送它。同时,其他同事一直致力于其他分支机构并将它们合并到掌握中。

现在我需要拉动branchA来检查它。所以我做了git pullgit checkout -b branchA origin/branchA这很好。但所有命令(git diff / log / show)都显示了repo中所有分支的提交。

如何根据创建它的master版本查看对branchA所做的所有提交的差异?

另外,我如何git diff branchA对抗当前主人的HEAD,但只能查看branchA中更改的文件?

5 个答案:

答案 0 :(得分:11)

以下内容适用于您的第二个问题,即如何查找branchA与您当地的master当前版本之间的差异。您希望在git log中使用“双点”语法来查看branchA中不在master中的所有提交。即:

git log master..branchA

根据git log手册页:

SYNOPSIS
   git log [<options>] [<since>..<until>] [[--] <path>...]
   ...
   <since>..<until>
   Show only commits between the named two commits. When either <since> or <until> is omitted, it defaults to HEAD, i.e. the tip of the current branch.
   For a more complete list of ways to spell <since> and <until>, see gitrevisions(7).

如果您希望在masterbranchA中看到提交,但两者都没有,则可以使用'triple-dot'语法:

git log master...branchA

最后,您可以使用与git diff完全相同的语法,即git diff master..branchAgit diff master...branchA

另外,如果您已branchA签出,则甚至无需将其指定为<until>。如果未指定,Git将假设HEAD,因此这两组命令是等效的:

git checkout branchA
git log master..

git log master..branchA

答案 1 :(得分:2)

  1. git diff master..brnachA:将比较master和branchA的HEAD之间的所有已修改文件。
  2. git diff master...brnachA:将branchA与其创建的master版本进行比较。
  3. FYI:git diff将在命令行中生成输出。如果要在某些可视化工具中查看输出,请使用git difftool

    您也可以将所有git diff参数和选项传递给git difftool

答案 2 :(得分:0)

你可以用 git log --branches = mybranch

这将显示特定分支的登录

答案 3 :(得分:0)

Git提交不保留有关他们提交的“哪个分支”的信息。他们只给你一个可以走回来的树。合并发生后,您无法从合并提交中确定哪个父级来自您从哪个分支开始。这在一些细节over here中进行了讨论。

这是我的理解。如果我错了,我很乐意纠正。

答案 4 :(得分:0)

当您在主分支上时,

git log HEAD..branch。

点击此处了解更多详情:How to get the changes on a branch in git