Git:如何将dist目录推送到同一仓库的单独分支?

6

我在一个现有代码库中有一个项目,文件夹结构如下:

myproject (master)
+-- app/ (master)
+-- dist/ (in .gitignore, but i need it as other branch)
+-- node_modules (.gitignore)
+-- index.html (master)
+-- gulpfile.babel.js (master)
+-- package.json (master)

有没有一种方法可以将dist推送到同一存储库的不同分支中?
为了澄清,我想将只有deploy分支中的dist文件,而将其他文件保留在master分支中。

1个回答

7
有没有一种方法可以将dist推送到同一仓库的另一个分支中?
有,使用git submodule
  • 创建一个孤立分支 'deploy'
  • dist文件夹内容复制到空仓库中,添加并提交,然后推送。
  • 将该分支作为dist文件夹的子模块添加。
也就是说:
git checkout --orphan deploy
# copy your folder content
git add .
git commit -m "deploybranch folder content"
git push -u origin deploy

那么

git checkout master
git submodule add -b deploy -- /remote/url/of/your/own/repo dist
git commit -m "Add deploy branch as submodule"
git push

在你的master分支中,你将通过dist根文件夹子模块保留对deploy的引用。
话虽如此,请记住生成和部署的内容通常不是存储在源控制文件系统中,而是存储在二进制引用中,例如NexusArtifactory:确保你不要在其中存储巨大的二进制文件。

感谢您回答我的问题。当我将部署分支作为子模块添加时,它显示“以下路径被您的一个.gitignore文件忽略:dist”,并提示“如果您确实想添加它,请使用-f”。我应该从“.gitignore”中删除/dist文件夹吗?这样做不会将/dist推送到主分支吗?您有解决方案吗? - vanio178
@vanio178 只需要从你的 .gitignore 文件中删除 dist 即可:你不需要再忽略那个文件夹了。 - VonC
抱歉再次向你求助,但现在它显示为:“repo URL: 'deploy' 必须是绝对路径或以./|../开头” @VonC - vanio178
@vanio178 在哪个命令上?git submodule add 吗?你必须使用远程仓库的URL。 - VonC
是的 @VonC,它在命令 git submodule add 中。我认为我的远程 URL 格式还不正确?git submodule add -b -f deploy -- https://gitlab.com/<company>/<project>/myproject-web.git/dist(branch name)/dist - vanio178
你需要在URL中停止于.git - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接