我正在处理共享存储库,我想为自己排除某些目录下的所有文件。
所以我在rm
$GIT_ROOT/.git/info/exclude
在此之后我使用
删除了索引/path/to/folder/
此后的git rm -r --cached /path/to/folder/*
显示已提交的已删除文件的长列表。
我提交了更改,直到这里一切都很好,因为我所做的任何更改都没有被git跟踪。但是我不能把它推到git status
,因为这会搞砸其他开发人员的工作回购。
在此之后如果我从远程拉出来,它会向我显示合并冲突remote
。使用modified by them/deleted by us
它会再次开始跟踪文件夹。
这是不是可以实现,因为我无法推送到远程?
答案 0 :(得分:1)
问题是您将文件提交为“已删除”。这意味着任何想要合并您的更改的人都会删除文件。此外,如果任何人(未合并您的更改)修改了这些文件,当您从其他开发人员合并更改时,您将遇到树冲突。在这种情况下你能做的最好的事情是告诉git 不关心这些文件,同时将它们保留在项目中。这是通过git update-index --assume-unchanged
答案 1 :(得分:1)
更强大的解决方案是:
git update-index --skip-worktree -- mysymlink
.gitignore
(使用' *
'模式) .git/info/sparse-checkout
内容:
*
!/path/to/mysymlink
(mysymlink
是我想忽略的文件夹的名称)
请参阅" git assume unchanged vs skip worktree - ignoring a symbolic link"
OP shshnk提到in the comments更简单的方法:
我能够使用稀疏结账来实现它 基本上我在
.git/info/sparse-checkout
文件中提到了您提到的格式的文件夹名称。现在git
忽略这些文件夹中的文件。