Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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正在将项目的所有源代码提取到我的工作目录中。这会造成很多混乱,因为我必须在文件之间跳转,并且可能无意中更改/损坏我甚至不打算更改的文件。我更愿意只提取我将要修改的源代码,然后使用它们。 那么,有没有办法告诉git我只处理特定的源代码,只有这些源代码才会被提取到工作目录中? 请注意,这不是部分签出或类似的操作。我可以结帐整个分行。这更多的是组织一个工作文件夹。 谢谢 如果您的相关源都在特定的子文件夹中

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

如果您的相关源都在特定的子文件夹中,您可以执行,以便只签出特定的子文件夹内容(您将在
.git/info/sparse checkout
文件中声明,如我所示)

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


另一种选择是使用支持基于任务的上下文过滤的IDE。
例如我在“.”中提到的Eclipse Mylyn Mylyn是一个使用:


这可能不是您的堆栈的一部分,但它说明了如何解决“在我的工作文件夹中仅获取与所做更改相关的少数文件”的问题;您只想“提取”某些源,但不想进行部分签出?这里的区别是什么?另外,一个解决方案是不修改任何您不想修改的文件。即使你(意外地)做了,也只需使用
git status
查看你做了什么,然后使用
git checkout
还原意外更改。听起来真正的问题是你需要整理你的repo(将内容组织到子文件夹等)您可以有一个完整的存储库签出和一个完全独立的工作文件夹,其中包含指向某些文件子集的硬链接或软链接。但是你最好首先合理地组织文件(这样即使有很多文件,也很容易找到你感兴趣的文件),正如奥利所建议的。值得一提的是,只有一些项目文件可用,这将使IDE可能拥有的任何辅助工具变得复杂——智能感知、静态分析、自动重命名/重构……不幸的是,它们不是。请看我上面的评论。@spoonboy我添加了一个替代方案,但不会有任何神奇的解决方案。Git作为一个整体管理内容。好的,谢谢,我想答案是否定的。只是好奇,mercurial支持这样的摘录吗?@spoonboy与当前的回购组织确实:不。@spoonboy不确定Hg(mercurial)和稀疏签出:并建议“不可能”。