【问题标题】:git: How to view commits to a single branchgit:如何查看对单个分支的提交
【发布时间】:2023-04-08 15:57:01
【问题描述】:

一位同事从master创建了一个本地分支('branchA'),做了一些工作,推送它,合并到master,做了一些更多的工作并再次推送它。同时,其他同事也在做其他分支,合并到master。

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

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

另外我怎样才能git diffbranchA 针对master的当前HEAD,但只查看在branchA中更改的文件?

【问题讨论】:

    标签: git


    【解决方案1】:

    以下内容适用于您的第二个问题,即如何找出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 中的提交,但不能同时查看两者,您可以使用“三点”语法:

    git log master...branchA
    

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

    顺便说一句,如果您已签出branchA,您甚至不需要将其指定为&lt;until&gt;。如果未指定,Git 将假定 HEAD,因此这两组命令是等效的:

    git checkout branchA
    git log master..
    

    git log master..branchA
    

    【讨论】:

      【解决方案2】:
      1. git diff master..brnachA: 将比较 master 的 HEAD 和 branchA 之间的所有修改文件。
      2. git diff master...brnachA: 会将 branchA 与创建它的 master 版本进行比较。

      仅供参考:git diff 将在命令行中生成输出。如果您想在某些可视化工具中查看输出,请使用git difftool

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

      【讨论】:

      • -2- 不太正确。它会在masterbranchA 中返回提交,但不会同时返回。如果 master 高级 50 次提交,但 branchA 已完全合并,它将返回 master 中的 50 次提交。这不能将 branchA 与其在 master 中的合并基础进行比较,这似乎是第一个问题?
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        你可以使用 git log --branches=mybranch

        这将显示特定分支的日志

        【讨论】:

        • 这不起作用。也许是因为我已经合并到 master 中,但我看到其他人所做的更改。
        【解决方案5】:

        当你在 master 分支时 git log HEAD..branch。

        查看这里了解更多详情:How to get the changes on a branch in git

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-07
          • 2023-03-15
          • 2015-07-06
          • 2017-12-04
          • 2017-11-15
          • 2011-05-17
          • 2019-11-24
          • 1970-01-01
          相关资源
          最近更新 更多