繁体   English   中英

在 git 中获取/拉取时如何忽略其他目录?

[英]How do I ignore other directories when fetching/pulling in git?

最初,我们的 git 存储库中有一个子目录。 这是我们网站的代码。 现在我们想要包含相关文件并将它们全部保存在一个存储库中,但是对于我们的生产服务器,我们只想git pull/fetch原始子目录(即code/ )。

在执行git fetchgit pull时,如何配置git以忽略所有其他目录?

我不想重新克隆; 我找到的大多数解决方案都假设我是从头开始的。

首先,提醒一句:对这个问题的前两条评论中的每一条都有不好的建议[1]。

所以... fetch不会更新工作文件。 pull执行一次提取,然后合并到HEAD (大致),实际上它是通常更新工作目录的更新HEAD的检出。

您可以设置“稀疏结帐”,但路径仍然相对于工作树根。 也就是说,如果你有

/
  /other-artifacts
  /website
  file

并且您在/repo的生产服务器上拥有您的存储库,您可以设置一个稀疏结帐来为您提供/repo/website/* ,但是如果您希望website的内容直接出现在/repo ,那就是另一回事了。

“我不想重新克隆”这一声明可能会也可能不会限制您的选择; 没有更好地理解原因,我无法真正解决这个问题。 假设 repo 工作树当前生产网站目录,重新克隆到新位置可能是(一部分)从您所在的位置到您想要的位置的最简单方法,尽管移动和/或重新配置现有的 repo 可能是可行。

我的意思是,如果生产目录是 repo 工作树的子树,那么您可能需要将 repo 工作树放在文件系统上的其他位置。 然后可以用指向工作树正确部分的符号链接替换生产目录; 或者您可以在每次结帐后更新它(使用结帐后挂钩)。

另一种根本不同的方法是将网站本身放在一个单独的 repo 中,并使其成为更广泛 repo 的子模块。 当你开始谈论子模块时,很多人会感到紧张,这将是相当大的返工——肯定不仅仅是重新克隆。

对生产站点使用单独的分支(如评论中所建议的)似乎是一种近似子模块的“穷人”方法; 但这样做只是自找麻烦,因为“仅限生产”分支上的任何提交都将被视为删除了网站文件夹之外的所有内容,相对于来自主分支的任何可访问提交。


[1] 我只能假设作者知道他们并没有真正给出深思熟虑的建议,因为他们选择在评论中“回答”,而不是在回答部分他们受制于表决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM