
随着时间的推移,开发人员经常会积累一些他在项目中使用的代码集合。
他在某些项目中使用某些脚本,在其他项目中使用其他脚本。
随着时间的推移,这些脚本得到了改进,错误已被删除和优化。 因此,出现了
如何将脚本的新版本与项目中的脚本同步的问题。
有几种选择:
第一种选择:创建一个存储库,并将所有脚本放在此处。 然后,该存储库作为子模块连接到项目并使用。
缺点:
- 所有脚本(包括不必要的脚本)都将复制到项目中。
- 该子模块未提交到项目存储库,因此,如果该子模块的远程存储库不可用,我们将无法下载整个项目。
第二种选择:每个脚本应分别存储在Github gist上,并根据需要作为子模块进行连接
减号与第二段的第一个版本相同。
第三种选择:使用
Git子树。(此解决方案是Git子模块的替代方案)
Git子树是合并分支的另一种方法。 他的想法是,拥有两个分支,git会理解一个分支不是另一个分支的变体,而是一个附加。
总体思路:
- -将文件添加到Github gist(生成一个迷你存储库)
- -将迷你存储库作为单独的分支绑定到我们的项目
- -为此分支分配一个文件夹
- -放气。
- -然后我们像常规分支一样工作(合并,提交,提取...)
现在详细介绍如何使用Git扩展。
1)我们使用
https://gist.github.com上的代码发布文件,我们可以立即获得指向“迷你”存储库的链接:

在GitExtensions中打开我们项目的资源库,然后选择:
[存储库]-> [远程存储库...]
我们作为一个单独的分支进行连接。
为此,请按
[+] 。 输入
[名称] ,
[网址]并保存
[保存更改] :
$git remote add "Util1" "https://gist.github.com/cf056e792d3bd9c2fc5973b846efe3d3.git"

我们看到我们已连接到远程存储库。
接下来,我们需要将此分支与项目中的特定文件夹关联,以便将文件复制到那里。
为此,请打开Git-bash(ctrl + G)并执行以下命令:
$git read-tree --prefix=Client/Assets/ -u Util1/master
其中:
客户/资产/ -要将文件复制到的文件夹的路径
Util1 / master-远程存储库分支的名称
(我没有找到通过UI的方法)
要点分支将附加到项目中的文件夹。 文件已经在那里。
现在,我们可以像常规分支一样工作了。例如,如果文件在Gist中发生更改,我们可以获取新版本:
我们进行
全部提取并查看所有更改:
$git fetch --progress "--all"
然后我们合并以填充分支中的更改:
$git merge -s subtree --no-ff --allow-unrelated-histories Util1/master

结果:
附加信息:https://git-scm.com/book/zh/v1/Tools-Git-Merging-treeshttps://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtreehttps://www.nwcadence.com/blog/git-subtrees