从本地而​​非远程删除文件

时间:2020-10-22 10:11:28

标签: git

远程存储库中有成千上万个文件,但我只能处理几个文件。如何从本地存储库中删除所有不必要的文件(从git和文件夹中删除),而不从远程存储库中删除?感谢您的帮助!

回购协议的结构

A/
  AA/
    aa1.code
    aa2.code
    ...
B/
  bb1.code
  ...
root1.code
root2.code
...

...例如,我仅需要文件root1.code和A / AA / aa1.code

3 个答案:

答案 0 :(得分:2)

快速的答案是您不能这样做。存储库就是存储库。如果您在本地删除文件,则在您进行更改时,这些文件将在远程服务器上删除。

可能有多种方法可以解决此问题,但不建议这样做。例如,您可以拥有自己的本地分支,并在该分支中使用某种IDE解决方案,其项目结构仅显示所需的文件。在诸如Visual Studio之类的系统中,这是可能的,但是当然,如​​果没有依赖项,您将无法对其进行编译。

答案 1 :(得分:2)

您可以使用Sparse Checkouts to only checkout the files you need

git clone --no-checkout remote
git sparse-checkout init --cone
git sparse-checkout set <path1> <path2> ...

clone with a filter中有一个非常新的选项,这样,您的.git年长者将只限于所需的文件和历史记录。检出very extensive answer over on the unix stackexchange的链接。看来---filter必须由您的git remote支持。

git clone --no-checkout --filter=blob:none remote
git sparse-checkout init --cone
git sparse-checkout set <path1> <path2> ...

this blog post with a couple of great examples on how to setup your sparse checkout configuration中的更多详细信息。

答案 2 :(得分:0)

我认为您必须复制整个目录才能使用文件。 因此无法删除它们,因为下一个请求请求会将它们再次复制到本地克隆中。

也许在git中使用子目录之类的东西。