【问题标题】:git - is there a way to get only required files in the working directorygit - 有没有办法在工作目录中只获取所需的文件
【发布时间】:2014-06-08 09:07:50
【问题描述】:

我是 git 的新手,并试图将它用于具有许多(数百个)源的项目。 我遇到的问题是 git 在结帐时将所有项目的源代码提取到我的工作目录中。这会造成很多混乱,因为我必须在文件之间跳转,并且可能会无意中更改/损坏我什至不打算更改的文件。我宁愿只提取我要修改的源,然后使用它们。 那么,有没有办法告诉 git 我只使用特定的源,因此只有这些源将被提取到工作目录? 请注意,这不是部分结帐或类似的东西。我可以检查整个分支。它更多地是关于组织一个工作文件夹。 谢谢。

【问题讨论】:

  • 这个不清楚;您只想“提取”某些来源,但不想部分结帐?这里有什么区别?
  • 另外,一种解决方案是不要修改您不想修改的任何文件。即使您(意外地)这样做了,也只需使用git status 来查看您所做的事情,然后使用git checkout 来恢复意外更改。
  • 那么听起来真正的问题是你需要整理你的回购(将东西组织到子文件夹等)
  • 可以拥有一个完整的存储库签出和一个完全独立的工作文件夹,其中包含指向某些文件子集的硬链接或软链接。但是,正如 Oli 所建议的那样,首先将文件合理地组织起来可能会更好(这样即使文件很多,也很容易找到您感兴趣的文件)。
  • 值得一提的是,只有部分项目文件可用会使您的 IDE 可能拥有的任何辅助工具变得复杂 - IntelliSense、静态分析、自动重命名/重构......

标签: git


【解决方案1】:

如果您的相关来源都在特定的子文件夹中,您可以执行 sparse checkout,以便仅签出特定的子文件夹内容(您可以在 .git/info/sparse-checkout 文件中声明,正如我mention here)。

如果没有,那么您需要将它们移动到文件夹中(重组),甚至将它们隔离到自己的 repo 中(并将它们添加到主 repo 为 submodule


另一种选择是使用支持基于任务的上下文过滤的 IDE。
例如我在“Eclipse - easy access to frequently used folders?”中提到的 Eclipse Mylyn。
Mylyn 是 task-focused interface 使用 context:

这可能不是您的堆栈的一部分,但它说明了如何解决“仅获取与我在工作文件夹中所做的更改相关的少数文件”的问题。

【讨论】:

  • 不幸的是,他们不是。从上面看我的评论。
  • @spoonboy 我添加了一个替代方案,但不会有任何神奇的解决方案。 Git 将内容作为一个整体进行管理。
  • 好的,谢谢,我想答案是否定的。只是好奇,Mercurial 支持这样的提取吗?
  • @spoonboy 与当前的回购组织,确实:没有。
  • @spoonboy 不确定 Hg(Mercurial)和稀疏结帐:mercurial.selenic.com/wiki/PartialClonestackoverflow.com/a/2587100/6309 建议“不可能”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 2016-07-23
相关资源
最近更新 更多