为什么我不能让git忽略文件夹?

时间:2016-04-08 16:40:57

标签: git

我正在使用PyCharm开发一个Python项目,该项目在我的项目中包含一个#include <iostream> #include <memory> class Box{ private: double length; double width; double height; public: Box(double lengthValue, double widthValue, double heightValue); double volume() const; }; Box::Box(double lValue, double wValue, double hValue): length {lValue}, width {wValue}, height {hValue} { } double Box::volume() const { return length * width * height; } int main() { Box Box2 {1.5,2.5,3.5}; std::cout << Box2.volume() << std::endl; auto Box3 = std::make_unique<Box>(1.5,2.5,3.5); std::cout << Box3->volume() << std::endl; return 0; } 文件夹。

因为项目的维护者不希望贡献者编辑项目.idea,所以我向.gitignore添加了一个.gitignore_global文件,其中包含两行:

~/{myuser}

我运行了命令

# comment line because git has a bug where sometimes the first line is ignored
.idea/

运行git config --global core.excludesfile "C:\\Users\\{myuser}\\.gitignore_global" ,仍会显示以下内容:

git status

我尝试运行这两个命令:

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .idea/

第一个导致错误:

git rm --cached -r .idea/
git update-index --assume-unchanged .idea/

第二个没有任何改变。

如何让git忽略此文件夹?

5 个答案:

答案 0 :(得分:1)

问题是我想忽略的目录名后不必要的空格字符......

原始全局排除了文件:

#
.idea/ <--- there's a space here

固定的(无空格):

#
.idea/

我发誓这就是问题...无论如何,谢谢大家的帮助!

如果这有助于将来某人,我在Windows 7上使用git version 1.9.5.msysgit.1。

答案 1 :(得分:0)

如果Git没有跟踪该文件夹,它不应该出现在github中。您是否尝试检查存储库以确保它实际上载?如果是,请尝试将.idea文件夹移出项目,进行提交,然后将其重新放入全局.gitignore。如果未跟踪文件的更改,但它已存在于存储库中,则它将保留在存储库中。它只是不会更新。

答案 2 :(得分:0)

我认为问题是git config --global core.excludesfile "C:\Users\{myuser}\.gitignore_global",因为您使用\并且它是转义字符。尽量加倍。

答案 3 :(得分:0)

文件.gitignore只会影响尚未添加的文件,因此您的回购邮件中的.idea/是否会生效?

如果您的.idea/文件夹已被跟踪,请执行git rm -r --cached path_to_your_folder/

答案 4 :(得分:0)

永远不会使用update-index --asume-unchanged它可能会显示您想做的事情,但您更有可能冒险冒险。

您的描述很可能是core.excludesfile值的问题。 你在使用Git for Windows还是Cygwin Git?如果是后者,则可能需要设置cygwin路径,而不是windows路径。

另外,您也可以在.git/info/excludes中进行排除,但它们当然只适用于此回购,而非您尝试过的所有回购。

您也可以使用git check-ignore .idea/ --no-index -v -n或类似命令诊断结果。