2

我正在通过 git 管理我自己的个人小型网站,这更像是一种学习体验,而不是这样做的任何真正优势。我的工作流程通常是:

  1. 在我的桌面上进行更改
  2. 在我的浏览器中测试 file:///path/to/folder,并根据需要添加/提交/更改
  3. 当我高兴的时候,推送到我已经设置为 EC2 实例的源点,其中提交后挂钩会更新工作树

我想使用MathJax在我的网站上显示数学方程式,但 MathJax 文件夹是 128Mb,而我的项目的其余部分几乎不包含 1Mb。此外,MathJax/ 包含许多小文件,并且(因为它进入我的工作树)像 git add 和 git status 这样的操作运行非常缓慢——我假设是因为 git 必须单独检查每个文件的状态。

我很想git reset --hard在添加 MathJax/ 之前提交,从我的 git repo (.gitignore) 中排除 MathJax 文件夹,然后手动将其添加到我的网络服务器,因为我不会定期更改 MathJax,并添加它到 repo 似乎为其他快速操作增加了相当大的开销。再说一次,这意味着我的 repo 不是一个独立的实体,这在概念上似乎是错误的——我知道当我下载一个看起来很美味的新脚本或服务时我会感到多么沮丧,然后我必须在它之前找到 15 个依赖项会跑。

显然,没有其他人会在这个特定的 repo 上工作,但我还是想养成良好的习惯。在这种情况下,最佳做法是什么?大型依赖项是否应该包含在 repo 中?如果不是,那么引用它们的最佳方式是什么 - README.md?

4

1 回答 1

3

引用 git 书:

经常发生的情况是,在处理一个项目时,您需要使用其中的另一个项目。也许它是第三方开发的库,或者您正在单独开发并在多个父项目中使用。在这些场景中会出现一个常见问题:您希望能够将两个项目视为独立的,但仍然能够在另一个项目中使用其中一个。

您需要使用称为子模块的 git 功能。它是另一个 git 存储库中的一个 git 存储库。有关详细信息,请参阅Git 书籍手册页

其他选项是 git subtree (不要与子树合并混淆)。它在 git 版本 1.7.11 及更高版本中可用。一篇很好的博客文章描述了子树的使用:https ://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/

于 2013-06-15T06:57:32.880 回答