我有一个jekyll网站,我想在GitHub上托管。由于GitHub不支持jekyll插件,我想让我的mater分支只包含_site中的文件,并创建一个包含其他所有内容的开发分支。
这可能吗?如果是这样我怎么能这样做?我对git不是最好的。
感谢
答案 0 :(得分:10)
似乎所有你想拥有的是一个开发分支和一个主分支,它将包含一些文件夹内容的镜像,比如_site。
我们这样做!
好的。我假设您有一个包含开发分支的存储库,其中包含您要“导出”的所有人员和_site
文件夹。
让我们创建一个只包含_site
文件夹的内容的提交。
echo 'Fill with a meaningful description' | git commit-tree development^{tree}:_site
创建一个提交并输出其id。那是47651a42...
。您的计算机 会有所不同。
请注意,development^{tree}:_site
是树的修订版(sha1 sum),它对应于_site
分支上最后一次提交的根目录中的development
文件夹。
现在让主分支指向此提交:
git update-ref refs/heads/master 47651a42
现在git log master
在我的机器上显示以下内容
commit 47651a42e6800f399c4352d0416f4ca96895f099
Author: Aleksandr Priymak <aleksandr.priymak@gmail.com>
Date: Fri Jul 27 05:27:43 2012 +0400
first commit
如果您签出此分支,则会获得_site文件夹的内容!这很简单。只剩下一件事了。 47651a42
提交没有任何父级,因此您需要在-f
命令中添加git push
以推送更新的master。另一种方法是实际指定父级。为此,请使用此命令
echo 'Fill with a meaningful description' | git commit-tree dev^{tree}:_site -p $(cat .git/refs/heads/master)
您可以使用以下单行
执行此操作git update-ref refs/heads/master $(echo 'Add commit message here!' | git commit-tree dev^{tree}:_site -p $(cat .git/refs/heads/master))