git diff显示不够

cod*_*odr 26 git github git-diff

我想看看master分支和我的功能分支之间的区别.我有很多从主服务器到我的功能分支的东西,并希望看到如果我将我的功能合并到主服务器中将添加的更改.

这是我的情况:

-*--*--*-----*<master>
  \     \     \
   1--*--*--*--2--*<feature>
Run Code Online (Sandbox Code Playgroud)

我的问题是git diff master feature似乎只显示提交号2.我想看到一个github pull请求将显示的差异,我相信这是提交的所有方式1.我注意到git cherry显示我提交的我希望看到的区别为.

谢谢你的建议.

Mar*_*air 123

要实现的重要一点git diff A B是,它只会向您显示提交图中两个点之间树的状态之间的差异 - 它并不关心历史.在.....用于符号git diff的含义如下:

为git diff指定提交的不同方式的说明

所以,当你运行git diff master feature的是不只是显示你所引入的变化的提交已标记为2-输出应该显示在COMMITED树的状态之间的确切差异master和COMMITED树的状态feature.如果它没有向您显示您的功能分支上的早期更改,也许您解决了早期合并来自master的冲突,而不是版本中的master

正如cebewee所说,可能是你想要的git log -p master..feature,因为git log 关心历史.的意义.....git log,因为他们选择了一系列的提交是不同的:

为git日志指定提交范围的不同方法的说明

顺便提一下,它经常说从合并master到主题分支是错误的事情 - 相反,你应该重新定位,或者在你的主题分支master完成后合并.这使得主题分支的含义易于理解.git维护者做了一篇(有点难以理解)关于合并哲学的博客文章,讨论了这一点.

  • 然而,链接的博客文章确实说,在功能分支不再干净地合并到"master"的情况下,一个正确的行动方案是将`master`合并到功能分支中并解决功能分支上的冲突. (2认同)

Lar*_*ski 6

git diff master feature不显示任何提交'但提交主和功能之间的文本差异.听起来好像你想看到所有功能的提交,这些提交尚未掌握?在这种情况下,尝试git log master..featuregit log -p master..feature,如果你想看到差异,也可以.

有关man git-rev-parse"a..b"语法的说明,请参阅"规范范围"一节.