git diff显示不够

我想看看主分支和我的function分支之间的区别。 我有很多从主人拉到我的function分支,并希望看到如果我将我的function合并到主人将被添加的更改。

这是我的情况:

-*--*--*-----*<master> \ \ \ 1--*--*--*--2--*<feature> 

我的问题是git diff master feature似乎只显示提交编号2.我想看到一个github拉请求会显示差异,我相信是所有的方式提交1.我注意到git cherry显示我的提交我想看看有什么不同。

感谢您的任何build议。

关于git diff AB的一个重要的事情是,它只能在提交图中的两个点之间显示出树的状态之间的差异 – 它并不关心历史。 用于git diff.....符号具有以下含义:

说明提交git diff的不同方法

所以当你运行git diff master feature ,不仅仅是显示你已经标记为2的提交所引起的改变 – 输出应该显示master提交的树的状态和提交的树的状态之间的确切区别feature 。 如果没有向您显示function分支上的早期更改,那么您是否可以解决来自以前版本中master版本的合并冲突?

因为cebewee说可能是你想要的是git log -p master..feature ,因为git log 确实关心历史。 git log的意义和...是不同的,因为他们select了一系列的提交:

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

顺便说一下,它经常说,从master合并到主题分支是错误的事情要做 – 而不是你应该重定位,或合并你的主题分支到完成后的master 。 这使主题分支的含义容易理解。 git的维护者做了一个(有点难以理解)的博客post,关于合并哲学的讨论。

git diff master feature不显示任何提交',但提交主和function之间的文本差异。 这听起来好像你想看到function的所有提交,这是不是在主? 在这种情况下,请尝试git log master..featuregit log -p master..feature ,如果你想查看diff。

有关“a..b”语法的解释,请参阅man git-rev-parse中的“指定范围”一节。

我相对较新的git,但如果我正确地理解你的问题。 你的问题根源在于没有正确理解远程和本地存储库以及它们是如何相互关联的。 我记得有一次,我明白了,一切都变得容易了。

认为你在这种情况下只有两个分支:

  • featureBranch
  • masterBranch

然而,如果你做一个git branch -a你将能够看到你所有的分支,本地和远程

所以你真实的情况是:

  • featureBranch
  • masterBranch
  • 远程分支(S)
  *---* <remote's Master> which is behind your local \ -*--*--*-----*<master> which is ahead of your remote/origin \ \ \ 1--*--*--*--2--*<feature> 

为了能够看到类似于你在Github Pull Request看到的差异,你必须用你的远程分支来diff它。

 git diff <local branch> <remote>/<remote branch> 

看比较本地git分支与远程分支?