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太好了!我已将您的评论包含在答案中,以提高可视性。