将我制作的整个 Jekyll 项目复制到单独的 git 存储库中的最佳方法是什么?

What is the best way to copy an entire Jekyll project I've made into a separate git repository?

长话短说,前段时间我 fork 了一个 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 仍然没有任何新设置吗?

像很多东西一样,"it depends."如果你根本不关心历史,那么是的,你可以只复制文件夹(少了私有 .git 目录),git init,并推送到新位置。

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

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

我想回答我是如何让复制的项目工作的,以防将来有人希望对他们的项目这样做。感谢@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 存储库,将远程添加到 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,如果您按照此方法,将不会保留其他分支。