移动 git 存储库上下文的最佳方法是什么?
What is the best way to move the context of a git repo?
我目前有一个发布到 GitHub 页面的 Jekyll 博客的 git 存储库。当我最初设置它时,我在博客目录的根目录下初始化了 git。这意味着我要提交并推送所有 Jekyll 源文件,而不仅仅是静态呈现的内容。基本上,我想从
推
$~/writing/_site/
作为根,而不是我目前从中推送的内容
$~/writing/
我想开始向远程仓库推送 只是 静态内容,将所有源文件仅留在我的本地机器上。我考虑过创建一个本地分支机构并进行更改,但我认为这无法实现我的结果。并不是我在改变内容本身,而是推送一个子目录而不是父目录。
我想我可以发布
$ git push --force
从父目录,然后在子目录中初始化一个 repo,并从 推送,但这似乎是一种粗鲁的无知。
我可以git-push --force
,将 Jekyll 源代码复制到另一个未跟踪的目录,然后创建一个分支,并将 git-rm
所有源代码和 git-mv
子目录中的内容放入父目录,但这也感觉像用一块面包画油画。
假设您希望继续对您网站的源代码进行版本控制,以执行您想要的操作,您将需要两个完全独立的 Git 存储库。一个存放源代码,另一个存放 Jekyll 生成的静态内容在 _site
文件夹中。
- repoA - 完整的 Jekyll 源代码
- repoB - 只是静态内容
工作流程是这样的:
- 更改 repoA(例如写一个新的 post)
- 提交对 repo 的更改A
- 运行
jekyll
建立您的网站(生成 _site
)
- (可选)将更改推送到某处,通常是私有的
- 删除存储库中的所有文件和文件夹B
- 将所有内容从 repoA
\_site
移动到 repoB\
- 提交对 repo 的更改B
- 将 repoB 中的更改推送到 GitHub 页面
您可能希望将步骤 5
到 8
自动化,因为它们很无聊且重复。为此,您可以使用无数工具,例如 Rake, Gulp, Grunt 等
如果你使用 Rake,你可能还想看看 jekyll-rakefile。
不要将其他站点设为 git
存储库,也不要使用 git
传输静态内容。正如 torek 的评论所述,git
传达所有已签入的内容(并且仅传达已签入的内容)。相反,在构建之后,您应该使用另一个工具,例如 scp
或 rsync
来传输内容。
我目前有一个发布到 GitHub 页面的 Jekyll 博客的 git 存储库。当我最初设置它时,我在博客目录的根目录下初始化了 git。这意味着我要提交并推送所有 Jekyll 源文件,而不仅仅是静态呈现的内容。基本上,我想从
推$~/writing/_site/
作为根,而不是我目前从中推送的内容
$~/writing/
我想开始向远程仓库推送 只是 静态内容,将所有源文件仅留在我的本地机器上。我考虑过创建一个本地分支机构并进行更改,但我认为这无法实现我的结果。并不是我在改变内容本身,而是推送一个子目录而不是父目录。
我想我可以发布
$ git push --force
从父目录,然后在子目录中初始化一个 repo,并从 推送,但这似乎是一种粗鲁的无知。
我可以git-push --force
,将 Jekyll 源代码复制到另一个未跟踪的目录,然后创建一个分支,并将 git-rm
所有源代码和 git-mv
子目录中的内容放入父目录,但这也感觉像用一块面包画油画。
假设您希望继续对您网站的源代码进行版本控制,以执行您想要的操作,您将需要两个完全独立的 Git 存储库。一个存放源代码,另一个存放 Jekyll 生成的静态内容在 _site
文件夹中。
- repoA - 完整的 Jekyll 源代码
- repoB - 只是静态内容
工作流程是这样的:
- 更改 repoA(例如写一个新的 post)
- 提交对 repo 的更改A
- 运行
jekyll
建立您的网站(生成_site
) - (可选)将更改推送到某处,通常是私有的
- 删除存储库中的所有文件和文件夹B
- 将所有内容从 repoA
\_site
移动到 repoB\
- 提交对 repo 的更改B
- 将 repoB 中的更改推送到 GitHub 页面
您可能希望将步骤 5
到 8
自动化,因为它们很无聊且重复。为此,您可以使用无数工具,例如 Rake, Gulp, Grunt 等
如果你使用 Rake,你可能还想看看 jekyll-rakefile。
不要将其他站点设为 git
存储库,也不要使用 git
传输静态内容。正如 torek 的评论所述,git
传达所有已签入的内容(并且仅传达已签入的内容)。相反,在构建之后,您应该使用另一个工具,例如 scp
或 rsync
来传输内容。