使用GitHub Gist对单个文件进行版本控制

图片

随着时间的推移,开发人员经常会积累一些他在项目中使用的代码集合。

他在某些项目中使用某些脚本,在其他项目中使用其他脚本。

随着时间的推移,这些脚本得到了改进,错误已被删除和优化。 因此,出现了如何将脚本的新版本与项目中的脚本同步的问题。

有几种选择:

第一种选择:

创建一个存储库,并将所有脚本放在此处。 然后,该存储库作为子模块连接到项目并使用。

缺点:

  1. 所有脚本(包括不必要的脚本)都将复制到项目中。
  2. 该子模块未提交到项目存储库,因此,如果该子模块的远程存储库不可用,我们将无法下载整个项目。

第二种选择:

每个脚本应分别存储在Github gist上,并根据需要作为子模块进行连接
减号与第二段的第一个版本相同。

第三种选择:

使用Git子树。

(此解决方案是Git子模块的替代方案)

Git子树是合并分支的另一种方法。 他的想法是,拥有两个分支,git会理解一个分支不是另一个分支的变体,而是一个附加。

总体思路:

  1. -将文件添加到Github gist(生成一个迷你存储库)
  2. -将迷你存储库作为单独的分支绑定到我们的项目
  3. -为此分支分配一个文件夹
  4. -放气。
  5. -然后我们像常规分支一样工作(合并,提交,提取...)

现在详细介绍如何使用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-trees
https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree
https://www.nwcadence.com/blog/git-subtrees

Source: https://habr.com/ru/post/zh-CN419925/


All Articles