【问题标题】:Always ignore specific folders from remote repository始终忽略远程存储库中的特定文件夹
【发布时间】:2017-08-05 07:48:26
【问题描述】:

我在远程存储库中有这个项目,我需要对其进行配置,以便始终可以发送任何文件(推送),但只有一些文件可用且可见,也就是说,它始终接收我发送的所有内容,但只返回一些文件夹。

  • 推送:发送 A、B、C、D 和 E 文件夹
  • pull/status/checkout:仅显示/读取 A、B、C 文件夹(忽略 D 和 E)

例如,明天我将发送 F、G 和 H 文件夹,远程存储库将收到它。但在那之后,我将尝试“结帐/拉动/状态”,并且将只显示 A、B、C(D、E、F、G、H 被忽略)文件夹,并且永远永远。

简而言之,我需要远程存储库来接收所有内容,但只提供其中的一部分。

【问题讨论】:

  • 但它是否“从 repo 到客户端”工作?我知道它从客户到回购都有效
  • 这不是 .gitignore 的用途。这通常不是 git 的用途。

标签: php git laravel github


【解决方案1】:

推送和获取不是基于文件的,它们是基于提交的。

当您将客户端 Git 连接到服务器 Git 时,您可以选择这样做是为了获取提交 (git fetch),还是给他们提交 ( git push)。但是你得到或给予的是整个提交,而不是“一个文件”或“一个文件夹”(目录)。因此,您的示例是错误的。

请注意,任何一次提交总是包含其树的完整快照。也就是说,如果您的存储库中有a/file1.txta/file2.txtb/file3.txtc/file4.txt,并且您触摸这些文件中的一个 并进行提交,则新提交有副本所有四个文件。 (为了节省空间,它重新使用未修改的原始文件,但提交确实包含所有四个文件。)当您将此提交发送到另一个 Git 时,您发送 整个提交 em>,不仅仅是提交的一部分。

如果您将文件放入,他们可以将文件取出 - 默认情况下,他们将获得所有文件。 Git 确实支持一种称为“稀疏检出”的东西,您可以(ab?)将其用于这种目的,但很有可能这是错误的处理方式。

提出这个问题的人大约有 93.4% 的时间1试图将配置文件存储在他们的存储库中,但不希望将这些配置文件复制到客户端(有时除外,作为初始默认配置)。同样,这是错误的做法: 不是存储 配置文件,而是让您的系统存储默认 配置文件。客户端会像往常一样选择这些 default 文件;设置自己的实际配置的客户端将使用他们的配置而不是或覆盖默认值;并且“我的本地配置”(根本不会签入此存储库)与“示例和/或默认配置”(签入此存储库)之间不会有冲突。


1这个统计是当场编造的,就像42.7% of all statistics

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    相关资源
    最近更新 更多