每次我运行Jekyll时,它都会破坏目标文件夹的全部内容。这个问题是我的目标目录是一个小的git repo,我用它来推送到我的实际服务器。有没有办法阻止Jekyll删除Git文件,这样我就不必生成内容然后复制它们了?
答案 0 :(得分:5)
你可以:
GIT_WORK_TREE
变量,目标文件夹为值换句话说,工作树目录本身不需要.git
它可以在其他地方,您的脚本可以通过GIT_WORK_TREE
或--work-tree=<path>
选项引用实际工作树。
如果您的脚本是Jenkyll复制/删除文件的目标目录的一部分,您可以执行相反的操作,并提及.git
实际上与GIT_DIR
变量或--git-dir=<path>
的位置选项。
要将新的--work-dir
作为您的回购的默认选项,您可以使用git-config --add core.worktree ../PATH/
,其中PATH
- 相对于.git
的实际工作目录的路径。
答案 1 :(得分:2)
您是否看过Jekyll维基的部署部分? - https://github.com/mojombo/jekyll/wiki/Deployment。它清楚地解释了Jekyll的部署步骤。
你为什么要从目的地出发?那很不好!从其他克隆推送它。
答案 2 :(得分:1)
我也想要这个设置。找到这个修复Jekyll的拉取请求,使其不删除.git目录: https://github.com/mojombo/jekyll/pull/337
在那里阅读我的评论,如下:
无论如何,我的Jekyll系列现在写着:dest_files << file unless file =~ /\/\.{1,2}$/ || file =~/\/\.git/
效果很好!我甚至使用octopress(只需将你的deploy_dir更改为public)并在Rakefile中注释掉以下行:
# (Dir["#{deploy_dir}/*"]).each { |f| rm_rf(f) }
# Rake::Task[:copydot].invoke(public_dir, deploy_dir)
# puts "\n## copying #{public_dir} to #{deploy_dir}"
# cp_r "#{public_dir}/.", deploy_dir
现在你的公共目录(而不是_deploy dir)可以是你的github repo来发布你的网站(在我的情况下分支的子模块或我的父仓库)
对于octopress公开和_deploy似乎毫无意义,但我很高兴听到为什么要分割public和_deploy dirs的其他原因 - 除了Jekyll删除.git目录。 (我阅读了octopress的完整提交历史,但找不到任何解释为什么这样做的方式)
答案 3 :(得分:0)
我实际上用过
git clone --separate-git-dir repo git@github....
并解决了这个问题。
答案 4 :(得分:0)
@manojlds,我不确定我理解,TPW的默认_config.yml(我已经自定义)将_site目录的位置显示为“。”,在博客目录中也包含Git仓库。有没有办法移动这个目录,以便它不会在整个地方喷出文件?我想我在这里遗漏了一些东西,因为要么Jekyll拒绝生成任何东西,要么发生上述情况,我必须清理留下的烂摊子。
对于_site可以(或应该)所在的位置,我们是否有最佳实践?
编辑:看着它,我实际上看到了以下内容:
来源:。 目的地:./_ site终端无法找到jekyll gem(通过RVM安装)的事实可能是我的问题的原因而不是_site的位置。