2016-04-08 73 views
1

我正在使用PyCharm编写Python项目,其中包括我的项目中的.idea文件夹。为什么我不能让git忽略文件夹?

由于该项目的维护者不希望贡献者编辑项目的.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/ 

在错误的结果:

fatal: pathspec '.idea/' did not match any files 

第二个变化无关。

如何让git忽略此文件夹?

回答

1

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

原来的全局排除文件:

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

的固定使用(没有空格):

# 
.idea/ 

我发誓这是问题...谢谢大家对你的帮助呢!

如果这有助于在未来的某个人,我使用的是Windows 7的

0

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

+0

Git版本1.9.5.msysgit.1他表明,它出现在'未追踪文件:'部分,所以它不回购,因为它应该是,唯一的问题似乎忽略规则不起作用。 – kan

0

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

+0

我的不好,我确实使用过双打。 –

+0

@AvivCohn然后尝试不加倍...因为它取决于你在用什么 - cmd.exe或git bash。刚刚检查了我的本地文件,我的.gitconfig文件在'[core]'部分下有'excludesfile = C:\\ temp \\ boo',并且它工作正常。 – kan

0

文件.gitignore只会影响尚未被添加的文件,.idea/也会影响您的回购或否?

如果您.idea/文件夹尚未跟踪,做git rm -r --cached path_to_your_folder/

0

永远不使用update-index --asume-unchanged将可能出现做你想要什么,但你很可能更多的冒险,而不是文件。

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

另外,你也可以让你的排除在.git/info/excludes虽然然后他们当然只为这个回购,而不是像你试过它所有的回购。

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