【问题标题】:What is the best way to move the context of a git repo?移动 git repo 上下文的最佳方法是什么?
【发布时间】:2018-07-09 18:55:48
【问题描述】:

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

$~/writing/_site/

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

$~/writing/

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

我认为我可以发布

$ git push --force

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

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

【问题讨论】:

  • 你必须做一些非常不同的事情,因为git push推送提交,而不是文件。提交是完整的源代码树快照。无法推送部分快照(这不是提交,git push 推送提交)。

标签: git jekyll github-pages


【解决方案1】:

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

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

工作流程是这样的:

  1. 对 repoA 进行更改(例如写一篇新帖子)
  2. 提交对 repoA 的更改
  3. 运行jekyll 来构建您的网站(生成_site
  4. (可选)将更改推送到某个地方,通常是私有的
  5. 删除 repoB 上的所有文件和文件夹
  6. 将所有内容从 repoA\_site 移动到 repoB\
  7. 在 repoB 上提交更改
  8. 将 repoB 中的更改推送到 GitHub 页面

您可能希望将步骤58 自动化,因为它们很无聊且重复。为此,您可以使用无数种工具,例如RakeGulpGrunt 等。

如果您使用 Rake,您可能还想看看 jekyll-rakefile

【讨论】:

  • 这是,经过一番阅读,我如何使用 Pelican 或任何其他生成器进行设置。在这里的评论帮助下,我意识到我混淆了概念模型。
【解决方案2】:

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

【讨论】:

  • 我使用 GitHub Pages 进行托管,我认为 git 是移动文件的唯一方法。
  • 啊,那是应该在问题中的相关信息;我没看到标签。是的,那么另一个答案效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 2013-08-10
  • 2023-03-07
  • 2012-01-08
相关资源
最近更新 更多