.gitignore 只在本地使用

86

我想知道如何在本地使用gitignore忽略文件,而不将其推送(因为其他在项目上工作的人不应该得到我添加的.gitignore文件更新)。

简单来说,在运行git status命令后,我只想看到:

modified:   .gitignore

因为我将我的文件添加到了.gitignore中,但现在我想删除上面的那一行而不用推送它。

因为我已将我的文件添加到.gitignore中,但现在我希望在不进行推送的情况下去掉上面的行。

5个回答

185

对于本地忽略,您应该使用.git/info/exclude文件而不是.gitignore

特定于某个存储库但不需要与其他相关存储库共享的模式(例如,存储在存储库中但特定于一个用户工作流程的辅助文件)应放入$GIT_DIR/info/exclude文件中。

这两个文件接受相同的格式。


6
我经常将.git/info/exclude链接到项目根目录下的.gitignore_local以便于查看(并将其添加到.gitignore中)。 - flurdy
6
如果您不想污染共享的.gitignore文件,可以在.gitignore_local中自我引用它自己。 - Frédéric Bolduc

16

大多数情况下,应该提交Gitignore文件,因为忽略的内容很可能也会被团队中的其他开发人员忽略。

但是,如果您确实需要将其从被跟踪的本地更改中排除在外,则可以执行以下操作:

git update-index --assume-unchanged .gitignore

这将使其从修改列表中“消失”。但是,如果其他人更改了它,则在拉取时您将无法获取更改。然后,您需要执行以下操作将其重新添加到跟踪列表中,并再次进行拉取:

git update-index --no-assume-unchanged .gitignore


9
git update-index --assume-unchanged是一个最好避免使用的足枪。原因在于名称——即使您对某些内容进行了更改,也会忽略您所做的更改事实。 git status将显示所有内容都已提交并且工作正常,即使您查看的现实情况与拥有您代码“相同”(但真的不同)版本的另一个人的视图不同。在这种情况下,最好使用.git/info/exclude - jsageryd
2
@jsageryd 这只是针对.gitignore的,而且“即使你的现实观与另一个人不同,它也会说一切都已提交并正常工作”,这正是OP想要的。 - Vasan
3
我在使用一个配置文件,但在Windows和Linux上它的行为不同。由于我是团队中唯一使用Windows的开发人员,修改他们的配置没有意义,所以我使用了这种方式将该文件从git中排除。 - Carl Kroeger Ihl
同意,这个方法行得通,但有点复杂。我最好还是利用.git/info/exclude - undefined

4
在VSCode中的另一个选项是使用Git Exclude扩展程序,它可以通过右键单击将任何文件/文件夹添加到.git/info/exclude文件中。

0

.gitignore文件包含了不希望提交/推送到远程仓库的文件和文件夹列表。

但是,提交和推送.gitignore文件是可以接受的。这是一种非常常见的做法。所以,请提交.gitignore文件并继续进行您的代码工作。

阅读此thread以获取关于提交.gitignore文件的参考和最佳实践。


-3

为了排除没有.gitignore文件的文件

git update-index --assume-unchanged project/file.php

从排除列表中移除文件

git update-index --no-assume-unchanged project/file.php

这将有助于在本地忽略Git文件,而无需将其添加到.gitignore文件中


Vasan在将近5年前已经建议过这个解决方案。请不要重复回答。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接