Git 如何确定合并是否添加新信息

Git 如何确定合并是否添加新信息,git,git-merge,Git,Git Merge,以下情况: 某些分支编码器已合并到分支编码器中。编码器已合并为集成,集成已合并为主控。所有的合并都是真正的合并。分支编码器\u dev已获得另一个提交 相应的提交图: * ed9c5fa07889eb9db1294ef92efd75ea42df0143 (HEAD -> encoder_dev) [encoder_dev]: added signal C | * 73ec0451e9ac23909fa6558c22a9996a2001fb1c (origin/master, origi

以下情况:

某些分支编码器已合并到分支编码器中。编码器已合并为集成,集成已合并为主控。所有的合并都是真正的合并。分支编码器\u dev已获得另一个提交

相应的提交图:

* ed9c5fa07889eb9db1294ef92efd75ea42df0143 (HEAD -> encoder_dev) [encoder_dev]: added signal C
| *   73ec0451e9ac23909fa6558c22a9996a2001fb1c (origin/master, origin/HEAD) included encoder changes
| |\
| | *   257e2dbfb16afb07cded3e17416048863be22e77 (origin/integration) Merge remote-tracking branch 'remotes/origin/encoder' into integration
| | |\
| | | *   0608a1965b10015d3b03d84e4cd2610c8f098f24 (origin/encoder, encoder) initial implementation
| | | |\
| | |/ /
| |/| /
| |_|/
|/| |
* | | abbbb126781839e3ff74282666515c9a547ff963 (origin/encoder_dev) [encoder_dev]: added entity and architecture
|/ /
* |   ef425daf81becbe1e2fd5ae92d099d189cc3dbe0 (master) initial checkin; all files are empty
|\ \
| |/
| * 886e3783af21fe4138614f26b53c705839749b00 [integration]: added FILE_HISTORY to each file
|/
* cabcd5630133ebaac4f505e9f3759ae0e448cfac [***]: initial checkin

现在,origin/master可以传输来自其他分支的贡献,但在本例中它不能。如果我将origin/master合并到encoder_dev中,它将不会向encoder_dev提供任何新信息,因为对代码的唯一更改是在上次提交给encoder_dev时进行的,所有以前的更改都落在origin/master中,并且origin/master从那时起没有代码更改。请注意,快进是不可能的。有没有办法自动检测到这种情况?

您可以检查
源代码/主代码
上的差异,因为
编码器_dev
源代码/主代码
之间的分叉点:

git diff encoder_dev...origin/master # 3 dots notation

# the above is a shortcut to :
git diff $(git merge-base encoder_dev origin/master) origin/master
在您的情况下,它应该产生一个完全空的diff,这意味着自从上次在
encoder\u dev
origin/master
之间合并以来,没有其他修改集成到
master


还有一句话:


除非您有很好的理由保留两个不同的分支
encoder
encoder\u dev
,您可能可以直接将新开发人员添加到
encoder
分支。

您可以检查
origin/master
上的差异,因为
encoder\u dev
origin/master
之间的分叉点:

git diff encoder_dev...origin/master # 3 dots notation

# the above is a shortcut to :
git diff $(git merge-base encoder_dev origin/master) origin/master
在您的情况下,它应该产生一个完全空的diff,这意味着自从上次在
encoder\u dev
origin/master
之间合并以来,没有其他修改集成到
master


还有一句话:


除非您有很好的理由保留两个不同的分支
encoder
encoder\u dev
,否则您可能可以直接将新的dev添加到
encoder
分支。

根据此图,
master
可以快速转发到
encoder\u dev
。我不知道你为什么认为它不能。git merge--ff only origin/master返回“致命的:不可能快进,中止”。我被你的术语弄糊涂了。我刚刚执行了“git合并源/主”。日志中的结果是:“将远程跟踪分支‘origin/master’合并到编码器_dev”。抱歉!我错了:(很抱歉让您困惑……不过,
origin/master
master
是不同的提交方式。如果您的意思是
origin/master
,您应该更清楚地说明这一点。根据此图,
master
可以快速转发到
encoder\u dev
。我不确定您为什么认为它不能。git merge--ff only origin/master re re将“致命:不可能快进,正在中止”。我对您的术语感到困惑。我刚刚执行了“git合并原点/主机”。日志中的结果是:“将远程跟踪分支‘原点/主机’合并到编码器_dev”。抱歉!我错了:(很抱歉把您弄糊涂了……不过,
origin/master
master
是不同的提交方式。如果您的意思是
origin/master
,您应该更清楚地说明这一点。