git不遵守git信息排除

git不遵守git信息排除,git,github,gitignore,Git,Github,Gitignore,我正在处理一个共享存储库,我只想为自己排除某个目录下的所有文件。 所以我在$GIT\u ROOT/.GIT/info/exclude /path/to/folder/ 在此之后,我使用 git rm -r --cached /path/to/folder/* 在此之后的git状态将显示一长串已删除的文件,这些文件将暂存以提交。 我提交更改,直到这里一切都很好,因为我所做的任何更改都不会被git跟踪。但是我不能把它推到remote,因为这会让其他开发人员在repo中工作。 在此之后,如果我从远

我正在处理一个共享存储库,我只想为自己排除某个目录下的所有文件。 所以我在
$GIT\u ROOT/.GIT/info/exclude

/path/to/folder/
在此之后,我使用

git rm -r --cached /path/to/folder/*
在此之后的
git状态
将显示一长串已删除的文件,这些文件将暂存以提交。 我提交更改,直到这里一切都很好,因为我所做的任何更改都不会被git跟踪。但是我不能把它推到
remote
,因为这会让其他开发人员在repo中工作。 在此之后,如果我从远程拉,它会显示一个合并冲突,由他们修改/由我们删除。使用
git reset--hard origin/
它再次开始跟踪文件夹


因为我不能推到远程,所以这不能实现吗

问题是您将文件提交为“已删除”。这意味着任何想要合并您的更改的人都将删除这些文件。此外,如果任何人(没有合并您的更改)修改这些文件,当您合并来自其他开发人员的更改时,您将得到一个树冲突。在这种情况下,您所能做的最好的事情就是告诉git不要关心这些文件,同时将它们保存在项目中。这是通过git update index实现的——假设不变的

一个更健壮的解决方案是:

  • 将该文件夹移到您的回购协议之外
  • 添加一个符号链接
  • 忽略带有
    git更新索引的符号链接--跳过工作树--mysymlink
  • 在移动的文件夹中添加一个
    .gitignore
    (使用“
    *
    ”模式)
  • 将sparce签出放在适当的位置,以避免获取/下载该特定文件夹
.git/info/sparse checkout
内容:

*
!/path/to/mysymlink
(我想忽略的文件夹名为
mysymlink

有关详细信息,请参阅“”


报告提到了更简单的方法:

我可以使用稀疏签出来实现它。
基本上,我在
.git/info/sparse checkout
文件中以您提到的格式提到了文件夹的名称。现在,
git
忽略这些文件夹中的文件


谢谢我能够使用稀疏签出实现它。基本上,我在
.git/info/sparse checkout
文件中以您提到的格式提到了文件夹的名称。现在git会忽略这些文件夹中的文件。这对我来说很好。@shshnk太好了!我已将您的评论包含在答案中,以提高可视性。