我有资源库blog
:
blog
├─ master
│ └─ _site
│ └─ more folders
│
└─ gh-pages
我想将master:_site/
映射到分支gh-pages
。我如何使用git
?
答案 0 :(得分:2)
您可以将gh-pages
分支作为子模块添加到主存储库。像这样:
cd blog
git submodule add -b gh-pages <my-repository-url> master/_site
这假设目录master/_site
尚不存在。您需要彻底阅读并理解submodules section of the Git book。特别是,当您在_site
目录中提交更改时,该过程通常为:
cd master/_site
...edit some file...
git add some_file
git commit -m 'edit all the things'
cd ..
git commit -m 'edited some files' _site
答案 1 :(得分:2)
我认为这完全是偏执狂:
#!/bin/sh
if ghpages=`git rev-parse -q --verify gh-pages`; then
# there's already a branch, don't double-commit a tree
committed=`git rev-parse -q --verify gh-pages^{tree}`
current=`git rev-parse -q --verify master:_site`
test x$current = x$committed && exit
fi
if commit=`git commit-tree ${ghpages:+-p $ghpages} -m 'updating gh-pages' master:_site`; then do
git update-ref refs/heads/gh-pages $commit
fi
要根据请求硬连线,请将其放在.git/hooks/post-commit
和chmod +x
中。
答案 2 :(得分:1)
从各种令人生畏的方式来执行此操作,我会秘密(?)为我做这个(从分支主机中本地副本的根目录开始):
git checkout gh-pages
git checkout master -- _site/
mv _site/* .
rm -rf _site
然后提交并推送更改:
git add .
git commit -m "Copied site from master"
git push origin gh-pages
答案 3 :(得分:0)
执行此操作的一种方法是在_site
中初始化git存储库。
cd blog
# populates _site
jekyll build
cd _site
# create git repository, add files and push
git init
git checkout -b gh-pages
git commit -am "message"
git remote add git@github.com:<user>/<repo>.git
git push origin gh-pages
答案 4 :(得分:0)
转到要映射到远程主控的当前目录,然后在下面键入。
将克隆目录中的“.git”文件夹复制到当前目录
cp yourClonedFolder / .git。
删除克隆文件夹
rm -rf yourClonedFolder
git add。