问题描述
我的 master
分支名为 public /
中有一个文件夹,那么复制它的最简单方法是什么内容到不同分支的根目录,例如 gh-pages
?
在
因此,子模块技巧不再需要通过同一分支来使两种类型的内容可见。
I have a folder in my master
branch named public/
, what would be the easiest way to copy its contents to the root directory in a different branch, such as gh-pages
?
One really nice trick illustrated in Generate GitHub pages in a submodule byBlind Gaenger (Bernd Jünger) is to declare a branch as a submodule for another branch!
So if your public
content was in its own orphan branch (like gh-pages
content is usually kept in its own orphan branch), then you could:
- declare
public
as a submodule of your main repo inmaster
branch - declare the same public as a submodule of your main repo in
gh-pages
So any modification that you make in submodule public
when you are in master
branch can be updated (git submodule update
) once you switch to gh-pages
branch!
I am not saying this is a solution for your current setup, because it involves removing public
from your main content, and adding it back in its own branch (ie, the other solutions might be more straightforward), but it is an interesting way to share a common directory:
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
But once you have created an orphan branch to include that (public
) content, the trick to add that branch content as a submodule for other branch is:
$ git checkout master
$ git submodule add -b public [email protected]: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
And you can repeat that step for your gh-pages
branch.
That will create a directory "public
", present both when you checkout master
or gh-pages
.
In both cases (both checkout), a git submodule update
will be enough to get back the latest evolutions done on public
submodule.
And as usual when it comes to submodules, once you do modifications in public
directory, make sure you are on its 'public
' branch, commit and push, then go back one directory above, and add-commit again.
Update August 2016: Simpler GitHub Pages publishing now allows to keep your page files in a subfolder of the same branch (no more gh-pages
needed):
So the submodule trick is no longer necessary to make both type of content visible through the same branch.
这篇关于在git中将文件夹部署到分支的最简单方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!