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

标签 git github jekyll

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

这可能吗?如果是这样我该怎么做?我不是 git 的最佳人选。

谢谢

最佳答案

似乎您想要的只是拥有一个开发分支和一个主分支,其中将包含某个文件夹内容的镜像,比如 _site。

让我们开始吧! 好的。我假设您有一个包含开发分支的存储库,其中包含您要“导出”的所有员工和 _site 文件夹。

让我们创建一个提交,其中仅包含 _site 文件夹的内容

echo '填写有意义的描述' | git commit-tree development^{tree}:_site 创建一个提交并输出它的 id。它是 47651a42...。它在您的机器上不同。

请注意,development^{tree}:_site 是树的修订版(sha1 总和),对应于上次提交的根目录中的 _site 文件夹开发分支。

现在让 ma​​ster 分支指向这个提交: 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 commit 没有任何父项,因此您需要将 -f 添加到您的 git push 命令以推送更新的 master。另一种方法是实际指定父级。为此,请使用此命令

echo '填写有意义的描述' | 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))

关于git - 是否可以在我的本地计算机上拥有一个包含两个包含不同目录的分支的 GitHub 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11678592/

相关文章:

git - 在提交时显示 GitLab 个人资料图片?

html - 在 Jekyll 中使用数据的正确方法

jekyll - 为什么默认布局未应用于页面?

git - 如何禁用 Microsoft.Build.Tasks.Git.LocateRepository

git - Jenkins GitHub 插件无法选择我的凭据

Git - 删除丢失的 Blob 或树

github - 在 github 操作中使用 workflow_dispatch 上的选定分支

jekyll - 将样式应用于帖子中的一组特定关键字?

git - 为什么 pathspec 不是魔法 :(exclude) excluding the specified files from git log's output?

git - 清理 fork 并从上游重新启动它