为什么Git子树一遍又一遍地处理相同的提交?

为什么Git子树一遍又一遍地处理相同的提交?,git,git-subtree,Git,Git Subtree,我使用git subtree split从大型回购协议中提取了一个子树,并将其推送到另一个远程服务器。 我可以成功地从远程子树中提取提交。 然而,当我试图将更改从主项目推送到子树时,我会看到这样的情况 C:\Dev\projects\myproject>git subtree push -P services/myService subtree-repo master git push using: subtree-repo master 227/400 (226) 因此,自子树拆分之

我使用
git subtree split
从大型回购协议中提取了一个子树,并将其推送到另一个远程服务器。 我可以成功地从远程子树中提取提交。 然而,当我试图将更改从主项目推送到子树时,我会看到这样的情况

C:\Dev\projects\myproject>git subtree push -P services/myService subtree-repo master
git push using:  subtree-repo master
227/400 (226)
因此,自<代码>子树拆分之后的所有提交都将被处理,以确定要推送的内容。如果400个与服务/myService相关的提交中有2个提交,那么只有这2个被推送,所以这是正确的行为

然而,处理400次提交需要很多时间,而且这个数字可能会在一个月内急剧增加到数千次,因此每次推送都需要一个小时左右。这是不能接受的

我试着自己解决它,结果发现。 很快,它建议使用
git subtree split
--rejoin
标志,这样将生成带有子树引用的合并提交,并且下一次仅推送提交,因为将处理该合并

不幸的是,这对我不起作用。执行git子树拆分

C:\Dev\projects\myproject>git subtree split --rejoin -P services/myService
4/400 (3)
成功完成:

C:\Dev\projects\myproject>git subtree split --rejoin -P services/myService
Already up-to-date.
0e50cea87309b1ec79a00113165d9db2baa8f862
但是一次又一次地执行所有提交(git
子树推送也是)

有趣的是,在Git Bash中执行相同的命令会返回一个错误

$ git subtree split --rejoin -P services/myService
C:/Users/myUser/AppData/Local/Programs/Git/mingw64/libexec/git-core\git-subtree: line 751: 
14516 Done                    eval "$grl"
      17364 Segmentation fault      (core dumped) | while read rev parents; do
     process_split_commit "$rev" "$parents" 0;
done

因此,您能否帮助找到一个答案,如何使
git子树
,以完成自子树添加以来的所有提交

这是否回答了您的问题?Hi@AnthonyMastrean,不幸的是没有,出于某种原因,rejoin会一次又一次地重复相同的提交。