如果一个分支没有完全合并,不应该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工作?
答案 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。