2

如果一个分支没有完全合并,git diff 不应该给出一些输出吗?如何解释以下行为:

$ git branch
foo
* master

$ git diff master..foo

$ git br -d foo
error: The branch 'foo' is not fully merged.
If you are sure you want to delete it, run 'git branch -D foo'.

那么如何才能知道 foo 中做了哪些我还没有合并到 master 中的工作呢?

4

4 回答 4

2
git log master..foo

将显示所有在 foo 中但不在 master 中的提交。

Git diff 本身只会显示实际跟踪文件的差异,这与历史记录不同。例如, foo 可能包含一些后来被反转的更改。

于 2012-07-17T21:36:10.670 回答
1

两个分支可能不同但包含完全相同的内容。这是因为可能存在其他差异,例如不同的提交消息、时间戳、作者等,所有这些都有助于 git 用来确定提交是否等效的 SHA1 哈希。

于 2012-07-17T23:24:29.263 回答
0

您想使用git logor ( git rev-listif scripting) 而不是 diff 来查看实际提交。

然而,话虽这么说,你的 diff 命令应该向你展示差异,除非你在 master 中做了与 foo 完全相同的工作,因为 2.x 之间的共同提交。

您可以通过以下方式快速查看所有分支如何链接

git --log --one-line --decorate --all

或者

gitk --all

--all否则,只需通过foo master在上面的示例中替换为来指定您想要查看的历史记录。

一旦您

git merge foo

你将能够

git branch -d foo
于 2012-07-17T23:20:56.760 回答
0

您可能正在寻找git show-branchcommand

git show-branch master foo将列出foo上所有不在master上的提交,以及master上所有不在foo上的提交。

输出格式一开始可能有点混乱,因此值得阅读手册页的输出部分

于 2012-07-17T23:33:47.323 回答