Git 仅查找从特定版本到当前标头的文件的添加内容

Git 仅查找从特定版本到当前标头的文件的添加内容,git,version-control,grep,repository,git-log,Git,Version Control,Grep,Repository,Git Log,我有一个git主分支。 假设我们有一条主线,我在不同的地方分支。 让我们以一个文件为例: A -> B -> C -> D -> E -> F -> G -> E -> J -> K -> L -> M v.1.0.0 v.2.0.0 v.3.0.0 HEAD/master 例如,我们有文件foo.xml,这是它的时间线,文件的版本B有分支(v.1.0.0

我有一个git主分支。
假设我们有一条主线,我在不同的地方分支。
让我们以一个文件为例:

A -> B -> C -> D -> E -> F -> G -> E -> J -> K -> L -> M  
  v.1.0.0         v.2.0.0       v.3.0.0                HEAD/master    
例如,我们有文件
foo.xml
,这是它的时间线,文件的版本B有分支(v.1.0.0),我们在该分支中有其他更改(为清晰起见省略),然后是v2.0.0,最后是文件的最新版本
M
head/master的当前状态

该文件的作用类似于“scatch pad”文件,这意味着在我们进行分支之后会添加一些内容,当我们从一个元素移动到另一个元素时,会删除一些内容

问题:
我如何才能找到从版本J到版本M(我不在乎J中添加的内容是否在以后的版本中被删除,但我想知道所有版本中添加的所有内容)添加的元素(实际上所有这些元素) 我不知道J的确切SHA1,但我知道目前的负责人和以前的分行名称。
如何使用git实用程序来实现这一点

注意:

我只关心
foo.xml
及其在提交过程中的更改。我不在乎其他文件/更改

一个简单的区别似乎就足够了

git diff branch-old..HEAD foo.xml |grep '^+'

一个简单的差别似乎就足够了

git diff branch-old..HEAD foo.xml |grep '^+'

什么是“元素”?文件“foo.xml”中的差异还是添加的文件?@Orel:A diff inside
foo.xml
。我只关心这个文件你觉得什么是“元素”?文件“foo.xml”中的差异还是添加的文件?@Orel:A diff inside
foo.xml
。我只关心这个文件,但这将给我的东西沿时间轴删除以及。我只希望每个版本的文件沿时间线添加我已经更新了命令,只需添加一个grep来过滤新行。警告,如果一行被更新,它将显示为一个新的。但这将给我沿时间线删除的东西。我只希望每个版本的文件沿时间线添加我已经更新了命令,只需添加一个grep来过滤新行。警告,如果一行被更新,它将显示为新的一行。