我的组织中有人提交.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中的错误吗?是否有一些其他配置选项我可以用来完全忽略这个文件?
答案 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