【问题标题】:What's the easiest way to deploy a folder to a branch in git?在 git 中将文件夹部署到分支的最简单方法是什么?
【发布时间】:2012-08-16 10:03:21
【问题描述】:

我的master 分支中有一个名为public/ 的文件夹,将其内容复制到不同分支的根目录(例如gh-pages)的最简单方法是什么?

【问题讨论】:

标签: git


【解决方案1】:

Generate GitHub pages in a submodule 中说明了一个非常好的技巧 Blind Gaenger (Bernd Jünger) 是声明一个 branch 作为 another 分支的子模块!

因此,如果您的 public 内容位于其自己的孤立分支中(例如 gh-pages 内容通常保存在其自己的孤立分支中),那么您可以:

  • public 声明为master 分支中主repo 的子模块
  • gh-pages 中声明与主仓库的子模块相同的公共

因此,当您在 master 分支中时,您在子模块 public 中所做的任何修改都可以在切换到 gh-pages 分支后更新 (git submodule update)!

我并不是说这是您当前设置的解决方案,因为它涉及从您的主要内容中删除 public,并将其添加回自己的分支(即,其他解决方案可能更直接),但它是一种共享公共目录的有趣方式:

cd yourRepo
git symbolic-ref HEAD refs/heads/public
rm .git/index
mv public ..
git clean -fdx
mv ../public/* .
git add .
git commit -m "public content in orphan branch public"
git push origin public

但是,一旦您创建了一个包含该 (public) 内容的孤立分支,将该分支内容添加为其他分支的子模块的技巧是:

$ git checkout master
$ git submodule add -b public git@github.com:user/repo.git public
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    new file:   .gitmodules
#    new file:   public
#
$ git commit -m "added public as submodule"
$ git push

您可以为您的gh-pages 分支重复该步骤。

这将创建一个目录“public”,在您结帐时显示mastergh-pages
在这两种情况下(都结帐),git submodule update 将足以取回在 public 子模块上完成的最新演变。
和往常一样,当涉及到子模块时,一旦你在public 目录中进行了修改,请确保你在它的'public' 分支上,提交并推送,然后返回上面的一个目录,然后再次添加提交。


2016 年 8 月更新:Simpler GitHub Pages publishing 现在允许将您的页面文件保存在 same 分支的子文件夹中(不再需要 gh-pages):

因此不再需要子模块技巧来使两种类型的内容通过同一分支可见。

【讨论】:

  • 谢谢,我根据你的想法使用了一些东西。我确实喜欢子模块突破!感谢您的帮助。
  • 自我注意:如果您有一些内容已经在master 中进行了版本控制,您希望用于初始化gh-branchstackoverflow.com/a/10591668/6309
  • A+ 让这个答案保持最新
【解决方案2】:
git checkout --orphan branch_name
git rm -rf .
git checkout master -- public

在master的根目录下是public的吗?

【讨论】:

  • 是的,public 位于 master 的根目录中,但是 -r 似乎不是到 git checkout 的已知切换
【解决方案3】:
cp -r public/* ./
git add .
git stash
git checkout gh-pages
git stash apply

【讨论】:

  • 这不会创建一个基于master 的分支吗?我需要完全清除该分支,并且只有 public/ 内容。
猜你喜欢
  • 2012-04-06
  • 1970-01-01
  • 2010-12-20
  • 2016-04-07
  • 2011-03-05
  • 2021-04-13
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
相关资源
最近更新 更多