在Git版本控制中忽略父级目录

13
如何在.gitignore文件中忽略父级目录? 我尝试了这些模式,但似乎它们无法正常工作:
/../*
../
../*

4
我有点好奇,为什么你不在父文件夹中创建另一个.gitignore文件,而是在子文件夹的.gitignore文件中指定它。 - Dzung Nguyen
据我所知,这是不可能的(请参见@nXqd的答案)。而且我认为这非常令人困惑,如果您(当然还有git本身)必须搜索不仅父文件夹,而且每个子文件夹和子子文件夹,以找出哪些文件夹被忽略以及为什么。 - KingCrunch
1
我有点困惑。为什么你想在.gitignore中忽略父目录?这个父目录是否在同一个git仓库中? - johnsyweb
2个回答

17

如果您想忽略一个文件夹,但不想修改现有的.gitignore文件,请在该文件夹中放置一个只包含星号的.gitignore文件。

*

这是一个快速的BASH示例,用于完成.idea文件夹的任务:

$ echo '*' > .idea/.gitignore

14

如果您想让.gitignore被版本化,那就不能忽略它。如果它被版本化了,这意味着父文件夹的元素也一起被版本化(如果不从索引中删除所有内容,则无法忽略)。
Kingcrunch评论中指出,您仍然可以使用git add -f来将.gitignore进行版本控制,但是正如之前所述,这可能会相当令人困惑。

最好将.gitignore放在要忽略的文件夹的父文件夹中。
然后在那里声明要忽略的文件夹的名称:

folder_to_ignore/

(注意最后的'/')


1
你仍然可以使用 git add -f 文件名 命令添加被忽略的文件。这是一个常见的用例,当你想要跟踪空文件夹时。"ignore" 只是意味着它在 git statusgit add(不带 -f)中被隐藏。 - KingCrunch
@KingCrunch,没错,我已经在答案中添加了这个。 - VonC
1
你可以在不同的目录中拥有多个.gitignore文件。一个简单的解决方法是在父目录中创建另一个.gitignore文件,然后将要忽略的文件添加到其中。 - Isaac Lyman
1
@IsaacLyman 是的:您可以使用以下命令查看所有 .gitignore 文件:git check-ignore -v -- afile - VonC
如果我有一个包含许多子项目或子文件夹的 Git 存储库,而我只想忽略一个子项目中的文件,那么我不能这样做吗? - IgorGanapolsky
1
@IgorGanapolsky 当然可以:请参见我的另一个答案的第二部分,网址为https://stackoverflow.com/a/50886524/6309。 - VonC

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