【问题标题】:What is the best way to copy an entire Jekyll project I've made into a separate git repository?将我制作的整个 Jekyll 项目复制到单独的 git 存储库中的最佳方法是什么?
【发布时间】:2020-05-10 09:58:33
【问题描述】:

长话短说,不久前我创建了一个 Jekyll 模板来学习如何使用该框架。我对原始起点进行了许多更改,并将代码完全重构为我自己的。

问题是 Github 上的存储库仍然被列为旧模板的 Fork,这使我无法创建问题来跟踪待办事项、错误等。理想情况下,我希望将我编写的所有代码复制到一个新的存储库中,并在该环境而不是 fork 中继续开发。

我的问题在于复制项目的实际机制。我是否只是将整个项目文件夹复制到一个新文件夹,重命名它,然后git init 开始一个新的仓库?我不应该复制.git 文件夹或任何其他特定文件夹吗?是否有 git 或 jekyll 的命令行命令可以简化此操作?

这里是项目中的目录和文件:

.bundle/
.git/
.gitignore
.jekyll-cache/
.sass-cache/
_config.yml
_data/
_drafts/
_includes/
_layouts/
_posts/
_sass/
_site/
404.md
about.html
CNAME
Gemfile
Gemfile.lock
homepage.html
images/
index.html
js/
LICENSE
README.md
style.scss
vendor/

编辑:我没有具体说明,但保持 git 历史记录对我来说并不重要(尤其是在我分叉之前)。

我也很好奇捆绑器是否仍然可以在没有任何额外步骤的情况下工作,即我可以在没有任何新设置的情况下运行 bundle exec jekyll serve 吗?

【问题讨论】:

    标签: git github jekyll


    【解决方案1】:

    就像很多事情一样,“这取决于。”如果您根本不关心历史记录,那么可以,您只需复制文件夹(减去私有.git 目录)git init,然后推送到新位置。

    如果您认为保留历史记录会很有用,那么我建议您只使用git remote remove <remote-name>,添加一个新的遥控器,然后推送。还有其他选项可以保留部分历史记录(例如,从您分叉的那一点开始),但如果您对 Git 不太满意,它们会稍微复杂一些。例如,您可以在所需的原始提交上重放一堆提交,但它几乎肯定需要编写一些可能不是微不足道的脚本(我从未这样做过,但它应该是可能的)。

    祝你好运!我很想看看历史:D

    【讨论】:

    • 保存 git 历史并不是很重要,尽管我对 git 很满意。我更担心的是确保 Jekyll 的实现不会在整个过程中被破坏。
    【解决方案2】:

    我想回答我是如何让复制的项目工作的,以防万一有人希望将来对他们的项目这样做。感谢 @PSGuy 关于如何完成它的总体思路。

    我的目标是:

    1. 创建一个不会从我用来学习 Jekyll 的项目中分叉的新存储库
    2. 保留与原始存储库相同的功能和大部分代码
    3. 摆脱我非常混乱的 git 历史记录,并允许未来的提交遵循“Squash and Rebase”样式,以便于阅读

    不需要需要:

    1. 保留我当前的 git 历史记录
    2. 保留我原来 repo 的分支结构

    考虑到所有这些,我开始使用以下命令复制整个文件夹:

    cp -r oldRepo/ newRepo/
    

    然后我进入新目录并为该项目启动了一个本地服务器,以确保没有任何东西开箱即用。之后很好,我通过运行删除了该项目的所有以前的 git 信息:

    rm -rf .git/
    

    然后我对项目进行了一些小的文档调整和added an MIT license。一切就绪后,我在 Github 上创建了一个新的空仓库并复制了远程 URL(类似于 https://github.com/usrName/myProject.git)。然后,我从新目录中的命令行简单地初始化了一个新的 git repo,将远程添加到 github,创建了一个新的提交,然后推送到远程。

    git init
    git remote add origin https://github.com/usrName/myProject.git
    git add .
    git commit -m "initial commit"
    git push origin master
    

    从那里一切都按预期工作,我可以从这里进一步发展。


    需要注意的一点是,当您复制文件夹时,默认情况下它会复制您当时签出的任何分支。到那时删除.git/,您将摆脱任何项目历史记录,因此请确保这是您想要的!你复制的那个分支会在新项目中变成Master,如果你按照这个方法,就不会保留其他分支了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 2011-03-14
      • 2011-03-22
      • 1970-01-01
      • 2014-07-25
      • 2011-05-21
      • 2010-09-05
      相关资源
      最近更新 更多