一位同事从 master 创建了一个本地分支('branchA'),做了一些工作,推送了它, merge 到 master 中,做了一些更多的工作并再次推送了它。同时,其他同事也一直在做其他分支的工作, merge 到master。
现在我需要 pull branchA 来查看它。所以我做了一个 git pull
和 git 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).
如果您想在
master
或 branchA
中看到提交,但不想在两者中都看到,您可以使用“三点”语法:git log master...branchA
最后,您可以对
git diff
使用完全相同的语法,即分别为 git diff master..branchA
和 git 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/