9

我有一个 jekyll 网站,我想在 GitHub 上托管。由于 GitHub 不支持 jekyll 插件,我希望我的 mater 分支只包含 _site 内的文件,并创建一个包含其他所有内容的开发分支。

这可能吗?如果是这样,我该怎么做?我不是 git 最好的。

谢谢

4

1 回答 1

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

现在让master分支指向这个提交: 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 文件夹的内容!这很简单。只剩下一件事了。47651a42commit 没有任何父母,因此您需要添加-fgit 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))
于 2012-07-27T00:37:52.730 回答