如何在另一个存储库中使用git存储库?
我有一个Git媒体存储库,我保存了所有JavaScript和CSS主文件以及我将在各种项目中使用的脚本如何在另一个存储库中使用git存储库?,git,git-submodules,multiple-repositories,Git,Git Submodules,Multiple Repositories,我有一个Git媒体存储库,我保存了所有JavaScript和CSS主文件以及我将在各种项目中使用的脚本 如果我在自己的Git存储库中创建了一个新项目,那么如何在新项目中使用媒体存储库中的JavaScript文件,从而在进行更改时不必更新脚本的两个副本 关键是git子模块 开始阅读或的子模块章节 假设您有存储库PROJECT1、PROJECT2和媒体 cd /path/to/PROJECT1 git submodule add ssh://path.to.repo/MEDIA git commit
如果我在自己的Git存储库中创建了一个新项目,那么如何在新项目中使用媒体存储库中的JavaScript文件,从而在进行更改时不必更新脚本的两个副本 关键是git子模块 开始阅读或的子模块章节 假设您有存储库PROJECT1、PROJECT2和媒体
cd /path/to/PROJECT1
git submodule add ssh://path.to.repo/MEDIA
git commit -m "Added Media submodule"
在另一个回购协议上重复
现在,最酷的事情是,任何时候你向媒体提交更改,你都可以这样做:
cd /path/to/PROJECT2/MEDIA
git pull
cd ..
git add MEDIA
git commit -m "Upgraded media to version XYZ"
这只是记录了一个事实,即PROJECT2中的媒体子模块现在是XYZ版本
它可以让您100%控制每个项目使用的媒体版本git子模块非常好,但您需要对它们进行实验和了解
权力越大,屁股就越容易被咬
如果我能很好地理解你的问题,你需要以下几点:
cd /my/project2/media
git remote add project1 /my/project1/media
如果修改/my/project1/media中的文件,则可以提交该文件并将其从/my/project2/media中取出,而无需将其推送到远程服务器:
cd /my/project1/media
git commit -a -m "message"
cd /my/project2/media
git pull project1 master
您可以在以后自由删除这些提交(使用git reset),因为您没有与其他用户共享它们。考虑使用子模块而不是子模块,这将使您的repo用户的生活更加轻松。您可以在中找到更详细的指南。我对其他答案建议的子树和子模块有问题。。。主要是因为我使用的是SourceTree,它似乎有很多bug 相反,我最终使用了符号链接,这似乎效果很好,所以我将其作为一种可能的替代方案发布在这里 这里有一个完整的指南: 但基本上,您只需要在提升的命令提示符中链接这两条路径。确保使用/J硬链接前缀。大致如下:mklink/jc:\projects\MainProject\plugins C:\projects\SomePlugin 您还可以使用相对文件夹路径,并将其放入bat中,以便每个人在首次签出项目时执行 例如: mklink/J。\Assets\TaqtileTools..\TaqtileHoloTools 链接文件夹后,您可能需要忽略主存储库中引用该文件夹的文件夹。否则你就可以走了
注意我已经从另一篇文章中删除了我的重复答案,因为那篇文章被标记为与这篇文章重复的问题 下面是另一篇关于子树与子模块的信息性文章:根据这篇文章,缺点之一是:>不在提交中混合超级和子项目代码的责任在于您。没有人有时间这样做(IMO)对于您在Apache的
www
文件夹中工作的web相关项目,您应该在www
文件夹或项目的根目录中放置一个.htaccess
文件,其中包含Options+FollowSymLinks
,或者更好的是{newline}Options+FollowSymLinks{newline}在{new line}
上重写引擎(将{code>{new line}替换为实际的新行`)。此工作流提醒我使用专用NPM模块。如果您希望默认为最新版本,则可以添加脚本来传播媒体委员会