git diff master..foo不提供输出,但foo未合并

git diff master..foo不提供输出,但foo未合并,git,Git,如果一个分支没有完全合并,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中完成的哪些工作还并没有合并到

如果一个分支没有完全合并,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中呢

git log master..foo
将显示在foo中但不在master中的所有提交


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

您希望使用
git log
或(
git rev list
,如果是脚本)而不是diff来查看实际提交

但是,尽管如此,您的diff命令应该已经向您显示了差异,除非您在master中执行与在foo中完全相同的工作,因为这两个命令之间存在公共提交

您可以快速查看所有分支是如何通过

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

否则,在上述示例中,只需将
--all
替换为
foo master
,即可指定要查看的历史记录

一旦你

git merge foo
你将能够

git branch -d foo

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

您可能正在寻找新的

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


输出格式一开始可能会有点混乱,因此值得一读。

您使用的是哪个版本的git,它在这里可以正常工作(GIT1.7.10)
git branch -d foo