[英]How do I ignore other directories when fetching/pulling in git?
最初,我们的 git 存储库中有一个子目录。 这是我们网站的代码。 现在我们想要包含相关文件并将它们全部保存在一个存储库中,但是对于我们的生产服务器,我们只想git pull/fetch
原始子目录(即code/
)。
在执行git fetch
或git 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.