移动git仓库的上下文的最佳方法是什么?

时间:2018-01-30 19:23:45

标签: git jekyll github-pages

我目前有一个git repo,用于发布到GitHub Pages的Jekyll博客。当我最初设置它时,我在博客目录的根目录初始化了git。这意味着我正在提交并推送所有Jekyll源文件,而不仅仅是静态呈现内容。基本上,我想从

推进
$~/writing/_site/

作为根,而不是我目前正在推动的

$~/writing/

我想开始推送远程repo 只是静态内容,只将所有源文件保留在我的本地计算机上。我考虑过创建一个本地分支并改变一些事情,但我认为这不会达到我的结果。这不是我改变内容本身,而是推送子目录而不是父目录。

我认为我可以发出

$ git push --force
从父目录

然后在子目录中初始化一个repo并从 it 推送,但这似乎是一种粗暴的无知。

我可以git-push --force,将Jekyll源复制到另一个未跟踪的目录,然后创建一个分支并将git-rm所有源和git-mv子目录中的内容创建到父目录中但这也像用一块面包油画。

2 个答案:

答案 0 :(得分:2)

假设您希望继续对站点的源代码进行版本控制,为了做您想做的事情,您将需要两个完全独立的Git存储库。一个用于存储源代码,另一个用于存储Jekyll在_site文件夹中生成的静态内容。

  • repoA - 完整的Jekyll源代码
  • repoB - 只是静态内容

工作流程将是这样的:

  1. 更改回购 A (例如撰写新帖子)
  2. 在回购 A
  3. 上提交更改
  4. 运行jekyll以构建您的网站(生成_site
  5. (可选)将更改推送到某处,通常是私有
  6. 删除repo B
  7. 上的所有文件和文件夹
  8. 将所有内容从回购 A \_site移至回购 B \
  9. 在回购 B
  10. 上提交更改
  11. 将repo B 中的更改推送到GitHub页面
  12. 您可能希望自动执行58的步骤,因为它们很无聊且重复。为此,您可以使用大量工具,例如RakeGulpGrunt等。

    如果你选择Rake,你可能还想看看jekyll-rakefile

答案 1 :(得分:0)

请勿将其他网站设为git存储库,并且不要使用git传输静态内容。正如torek的评论所述,git会传达所有已签入的内容(以及仅签入的内容)。相反,在构建之后,您应该使用其他工具(例如scprsync)来传输内容。