是否可以在我的本地计算机上安装一个包含两个包含不同目录的分支的GitHub存储库?

edh*_*ges 9 git github jekyll

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

这可能吗?如果是这样我怎么能这样做?我对git不是最好的.

谢谢

Ale*_*mak 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
Run Code Online (Sandbox Code Playgroud)

如果您签出此分支,您将获得_site文件夹的内容!这很简单.只剩下一件事了.47651a42承诺没有任何的父母,所以你需要添加-f到您的git push命令,推动更新的主.另一种方法是实际指定父级.为此,请使用此命令

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))
Run Code Online (Sandbox Code Playgroud)

  • 其实我重新考虑了答案.看看我的更新 (2认同)