2017-07-21 194 views
2

我组织中的某个人提交.idea文件。我知道正确的答案是只删除这些,但我必须解决它,因为删除它会影响其他开发人员的工作流程,即使我不同意,我现在也无法从git中删除它。Git - 完全忽略文件

我知道我可以隐藏和弹出,并且这样做了一段时间,但不断地从.idea提交文件在意外,我只是厌倦了不得不修改我的提交。

所以我试图让混帐到这个文件夹中完全忽略的文件,特别是.idea/modules.xml

我已经试过如下:

git update-index --assume-unchanged .idea/modules.xml 
git update-index --skip-worktree .idea/modules.xml 

这使得经验略胜一筹,该文件将不再在git状态下显示,我可以使用git commit -am而不会意外对提示文件进行更改。

但是,当我尝试拉动时,仍然出现错误。

git pull origin --rebase 
error: Your local changes to the following files would be overwritten by checkout: 
.idea/modules.xml 

,我觉得奇怪,因为git的甚至无法找到该文件,如果我尝试检查出来:从家酿

git checkout .idea/modules.xml 
error: pathspec '.idea/modules.xml' did not match any file(s) known to git. 

我使用的是最新版本的Git

git --version 
git version 2.13.3 

这是Git中的错误吗?有没有其他的配置选项可以用来完全忽略这个文件?

+0

'.gitignore'?或者你已经考虑过了吗? –

+0

你可以告诉你的想法将它的文件写入不同的目录,这样你就不会修改Git中的文件? –

+0

'.gitignore'对已经提交和跟踪的文件没有帮助。它只是阻止你“添加”它们。 – amalloy

回答

-1

我知道正确的答案是只删除,但我必须解决它

你没有解决它:记录其删除:

git rm --cached -r .idea/ 
echo ".idea/" >> .gitignore 
git add . 
git commit -m "remove .idea/ folder" 
git push 

从那里开始,您的回购中不再有.idea文件夹。

删除文件夹不是一个选项。它用于开发人员的工作流程,目前无论我多么不同意它必须呆在那里。

然后将其重命名:

git mv .idea .idea_settings 
echo ".idea/" >> .gitignore 
git add . 
git commit -m "rename .idea/ folder" 
git push 
  • 想要使用这些设置任何用户都可以用符号链接它。

    ln -s .idea .idea_symlink 
    
  • 不想使用它会保持一个私人未经跟踪.idea

+0

删除文件夹不是一个选项。它用于开发人员的工作流程,目前无论我多么不同意它必须呆在那里。这就是为什么我说现在我必须解决它。 –

+0

@AlexSpence我编辑了答案以解决您的评论。 – VonC

+0

@AlexSpence我的替代方案可能有帮助吗? – VonC

0

我将改写该项目丢弃它们的历史谁的任何用户...但是这只是我。我不希望那些不属于该项目的东西在那里...特别是如果它是相对容易做到这一点。

0

要完全停止跟踪文件,您需要将其从索引中删除。这可以用这个命令完成。

git rm --cached <file> 

从头修订版本中删除文件将发生在下一次提交。

+0

@Alex Spence为您效力。 –

+0

这就是我在我自己的答案中所说的:-1。此外,OP还明确表示这不是一种选择。 – VonC