git diff master..foo没有输出但foo没有合并

时间:2012-07-17 21:26:40

标签: 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工作?

4 个答案:

答案 0 :(得分:2)

git log master..foo

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您希望使用git log或(git rev-list编写脚本)而不是diff来查看实际提交。

然而,话虽如此,你的diff命令应该已经向你显示了差异,除非你在master中完成了与foo完全相同的工作,因为2之间的公共提交。

您可以通过

快速查看所有分支机构之间的关联方式
git --log --one-line --decorate --all

gitk --all

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

一旦你

git merge foo

你将能够

git branch -d foo

答案 3 :(得分:0)

您可能正在寻找git show-branch command

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

输出格式起初可能有点混乱,因此值得阅读output section of the man page