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

现在我需要 pull branchA 来查看它。所以我做了一个 git pullgit checkout -b branchA origin/branchA 这很好。但是所有命令 (git diff/log/show) 都显示在 repo 中的所有分支上进行的提交。

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

另外,我如何针对 master 的当前 HEAD git diff branchA,但仅查看 branchA 内更改的文件?

最佳答案

以下适用于您的第二个问题,如何找到 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

顺便说一句,如果您已 check out branchA ,您甚至不需要将其指定为 <until> 。如果未指定,Git 将假定为 HEAD,因此这两组命令是等效的:
git checkout branchA
git log master..


git log master..branchA

关于git:如何查看对单个分支的提交,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11757672/

10-13 05:36