在git中将文件夹部署到分支的最简单方法是什么?

Ste*_* Lu 6 git

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

Von*_*onC 5

所示的一个非常好的技巧中的子模块生成的GitHub页面通过 盲Gaenger(贝恩德·容格尔)是声明一个分支,作为一个子模块的另一个分支!

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

  • 声明publicmaster分支中主要仓库的子模块
  • 声明与您的主要仓库的子模块相同的公共 gh-pages

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

我并不是说这是您当前设置的解决方案,因为它涉及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
Run Code Online (Sandbox Code Playgroud)

但是,一旦创建了包含that(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
Run Code Online (Sandbox Code Playgroud)

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

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


2016年8月更新:更简单的GitHub页面发布现在允许将您的页面文件保存在同一分支的子文件夹中(不再gh-pages需要):

现在,您可以在存储库设置中选择源,GitHub Pages将在那里查找您的内容.

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