Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git提交后钩子_Git_Repository_Github - Fatal编程技术网

git提交后钩子

git提交后钩子,git,repository,github,Git,Repository,Github,我有两个git项目repo,它们有两个或三个共同的文件 大概是这样的: projecta------>helper\u函数 projectb------>helper\u功能 我想知道是否有一种公认的方法可以在repo之间“共享”这些公共帮助文件,这样我就不必在两个repo中维护单独的副本 当项目a中的helper_函数被更新时,会像post-commit钩子一样更新项目B中的helper_函数吗?或者是否有更无缝的方法来确保两个项目都有最新和最好版本的helper_函数文件,并且该文件自动包含

我有两个git项目repo,它们有两个或三个共同的文件

大概是这样的:

projecta------>helper\u函数

projectb------>helper\u功能

我想知道是否有一种公认的方法可以在repo之间“共享”这些公共帮助文件,这样我就不必在两个repo中维护单独的副本

当项目a中的helper_函数被更新时,会像post-commit钩子一样更新项目B中的helper_函数吗?或者是否有更无缝的方法来确保两个项目都有最新和最好版本的helper_函数文件,并且该文件自动包含在项目的任何包中

感谢您以公认的方式提供任何想法或资源来处理此问题


此外,我还想补充一点,这两个项目都有协作者,因此理想情况下是自动的,因此我们都在同一个页面上,而不必使用软链接或别名。

有些人可能会说,这对于一些文件来说是过度的,但对我来说,这听起来是使用git对子模块的支持的一个很好的例子。基本上,您将创建一个名为
helper\u functions
的新存储库,并将其作为子模块添加到每个现有存储库中:

git submodule add git://foo/bar/helper_functions.git helper_functions
然而,使用子模块有一些微妙之处,因此值得先读一读。我喜欢把这作为一个起点,但还有很多其他很好的解释,例如,来自


< >我不会创建钩子来提交和推送子模块,但是我认为最好是在更新主库中提交的子模块的版本时仔细考虑。不过,我发现非常有用的是使用
提交子模块
脚本,确保在将新的子模块版本提交到存储库之前推送子模块更改。

我会使用子模块,但建议使用“git slave”来处理对共享存储库的任何更新


另一种选择是使用子树。

谢谢你快速而彻底的回答,我从来没有遇到过git的这个特性。小心点。你很快就会发现自己在利用我的答案。