Git - 完全忽略文件

时间:2017-07-21 03:42:16

标签: git

我的组织中有人提交.idea文件。我知道正确的答案是删除这些,但我必须解决它,因为删除它会影响其他开发人员的工作流程,即使我不同意,我也不能在此时从git中删除它。

我知道我可以藏匿和弹出,并且暂时这样做了,但是在事故中不断提交来自.idea的文件,我只是厌倦了修改我的提交。

所以我试图让git完全忽略此文件夹中的文件,特别是.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.

我正在使用Homebrew的最新版本的git

git --version
git version 2.13.3

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

3 个答案:

答案 0 :(得分:0)

我会改写丢弃它们的项目的历史......但那只是我。我不希望那些不属于项目的东西在那里...特别是如果它相对容易做到的话。

答案 1 :(得分:0)

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

git rm --cached <file>

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

答案 2 :(得分:-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