我在master
分支中有一个名为public/
的文件夹,最简单的方法是将其内容复制到另一个分支(如gh-pages
)的根目录中?
我在master
分支中有一个名为public/
的文件夹,最简单的方法是将其内容复制到另一个分支(如gh-pages
)的根目录中?
public
内容位于自己的孤立分支(就像gh-pages
的内容通常保存在它自己的孤立分支中一样),那么你可以:
master
分支中将public
声明为主repo的一个子模块gh-pages
中将相同的public
声明为主repo的一个子模块master
分支中进行的任何更改都可以在切换到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
”的目录,当您切换到master
或gh-pages
时均会出现。
在这两种情况下(都是切换),执行git submodule update
就足以获取public
子模块的最新进展。
并且像处理子模块一样,在public
目录中进行修改后,请确保您已经处于其“public
”分支上,并进行提交和推送,然后返回上一级目录,并再次添加-提交。
2016年8月更新:更简单的 GitHub Pages 发布现在允许您将页面文件保存在同一分支的子文件夹中(不再需要gh-pages
):
因此,子模块技巧不再是通过同一分支显示两种类型内容的必要条件。
git checkout --orphan branch_name
git rm -rf .
git checkout master -- public
公共文件在主目录下吗?
public
在主分支的根目录中,但是 -r
似乎不是 git checkout
的已知开关。 - Steven Lucp -r public/* ./
git add .
git stash
git checkout gh-pages
git stash apply
master
创建一个分支吗?我需要完全清除该分支,并仅保留 public/
内容。 - Steven Lu