Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在获取/拉入git时,如何忽略其他目录?_Git - Fatal编程技术网

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

在获取/拉入git时,如何忽略其他目录?,git,Git,最初,我们的git存储库中有一个子目录。这是我们网站的代码。现在我们希望包含相关文件并将其保存在一个存储库中,但对于我们的生产服务器,我们只希望git pull/fetch原始子目录(即code/) 如何配置git在执行git fetch或git pull时忽略所有其他目录? 我不想逃避;我找到的大多数解决方案都假设我是从零开始的。首先,一句警告:关于这个问题的前两条评论中的每一条都有不好的建议[1] 所以获取不更新工作文件pull执行一次提取,然后合并到HEAD(大致上),实际上是签出更新的H

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

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


我不想逃避;我找到的大多数解决方案都假设我是从零开始的。

首先,一句警告:关于这个问题的前两条评论中的每一条都有不好的建议[1]

所以<代码>获取不更新工作文件
pull
执行一次提取,然后合并到
HEAD
(大致上),实际上是签出更新的
HEAD
,通常更新工作目录

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

/
  /other-artifacts
  /website
  file
您的repo位于生产服务器上的
/repo
,您可以设置一个稀疏签出,为您提供
/repo/website/*
,但如果您希望
网站的内容直接出现在
/repo
中,那就另当别论了

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

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

另一个根本不同的方法是将网站本身置于单独的回购协议中,并使其成为更广泛回购协议的子模块。当你开始谈论子模块时,很多人都会感到紧张,这将是相当大的返工,而不仅仅是确定的重新调整

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



[1] 我只能假设作者知道他们并没有给出经过深思熟虑的建议,因为他们选择了“回答”这可能是你可以用
解决的问题。gitignore
文件你可能想重新考虑你的分支机构管理。如果您仅为子模块创建了一个新分支,并且贡献者可以签出该分支,但仍可以根据需要从主分支获取以引用原始站点文件,这可能会更整洁,因此您可以选择将其添加内容合并到主分支中。@Hoog-不,不是这样的。gitignore被广泛误解,所以不要散布关于它的推测性错误信息会有所帮助。@usrrname这是一个非常好的建议。有没有办法告诉
git
只从主分支同步到特定的子目录路径?我不认为。这是我想要的。谢谢。我将在本周晚些时候处理这个问题。如果其他提供的解决方案需要更多的工作才能得到我想要的,我愿意重新考虑我的“我不想重新克隆”要求。