意外地将.idea目录文件提交到git中

意外地将.idea目录文件提交到git中,git,Git,我意外地将.idea/目录提交到git中。这会在我需要签出回购协议的其他地方引发冲突。我想知道如何从远程删除这些文件 我仍然需要这些本地文件,因为Intellij IDE需要它们。我只是不想把它们放在遥控器里。我已将目录.idea/添加到我的.gitignore中,并提交此文件并将其推送到远程。不过,在我在另一台机器上结账时,这似乎没有任何效果。我仍然收到错误消息: error: The following untracked working tree files would be overwr

我意外地将
.idea/
目录提交到git中。这会在我需要签出回购协议的其他地方引发冲突。我想知道如何从远程删除这些文件

我仍然需要这些本地文件,因为Intellij IDE需要它们。我只是不想把它们放在遥控器里。我已将目录
.idea/
添加到我的
.gitignore
中,并提交此文件并将其推送到远程。不过,在我在另一台机器上结账时,这似乎没有任何效果。我仍然收到错误消息:

error: The following untracked working tree files would be overwritten by checkout:
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/uiDesigner.xml
.idea/vcs.xml
.idea/workspace.xml

您可以将其从回购协议中删除并提交更改

git rm .idea/ -r --cached
git add -u .idea/
git commit -m "Removed the .idea folder"
之后,您可以将其推送到远程,之后的每个签出/克隆都将正常。

将.idea目录添加到忽略文件列表中 首先,将其添加到
.gitignore
,这样您(或其他人)就不会再次意外地犯下该错误:

将其从存储库中删除 其次,仅从存储库中删除目录,但不要在本地删除它。要实现这一点,请执行下列操作:

把零钱寄给别人 第三,提交
.gitignore
文件,并从存储库中删除
.idea
。之后,将其推至遥控器

总结 整个过程如下所示:

$echo.idea'>>.gitignore
$git rm-r--缓存。idea
$git add.git忽略
$git commit-m'(一些说明您添加了.idea以忽略条目的消息)'
$git推送

(可选地,您可以将最后一行替换为
git push some\u remote
,其中
some\u remote
是您要推送到的远程设备的名称)

您应该向项目中添加.gitignore文件,并向其中添加
/.idea
。您应该在一行中添加每个目录/文件

如果您有一个现有的.gitignore文件,那么您只需在文件中添加一行新行,并将
/.idea
放到新行

然后运行
gitrm-r--cached.idea
命令


如果遇到错误,可以运行
gitrm-r-f--cached.idea
命令。毕竟,运行
git add.
,然后
git commit-m”删除.idea目录并添加一个.gitignore文件“
,最后通过运行
git push
命令来推送更改。

最好通过主分支执行此操作

编辑.gitignore文件。添加下面的一行

.idea

从远程回购中删除.idea文件夹。使用下面的命令

git rm-r——缓存。idea

更多信息。参考:

gitinore文件。使用下面的命令

git add.gitignore

承诺

git提交-m'已删除。idea文件夹'

推到远程

git推送原始主机


如果你还没有推到git

git rm .idea/ -r --cached
git add -u .idea/
git commit -m "Removed the .idea folder"
如果“git rm.idea/-r--cached”抛出一个错误“fatal:pathspec”.idea“不匹配任何文件”,并且已经推送到带有.idea的git

git push origin --delete remoteBranchName
git add . //Everything is up to date
git commit -m "Removed the .idea folder" //Nothing to commit
git push origin remoteBranchName

您可以通过查看提交来帮助避免将来出现这种情况。我更喜欢使用
-v
运行
commit
,以便在编写提交时在编辑器中显示差异。它有助于防止此类错误,并帮助您将提交消息的重点放在更改的内容上。Daynyth是对的。加上Git在默认情况下要求您将文件添加到提交的更改列表中,所以请使用它,不要一次提交所有内容。否则,添加
.idea
会污染存储库。除了.idea中的两个文件外,其他所有文件都应该在源代码管理中:我发现IntelliJ.ignore插件在管理所有不应该提交给git的文件时非常有用:嗨,如果我们在远程存储库中有这样的想法,有什么害处呢?这对我来说很有效,而不是公认的答案。也许是git add-u造成了不同。你不需要第二线。正如其他人所说,我没有跑第二线。工作得很有魅力!感谢提示:如果您在运行
git rm-r--cached.idea
时收到消息
fatal:pathspec.idea“未匹配任何文件”
,请删除您的.idea文件夹,从github中提取,然后重试。如果您得到@annedroiid错误“未匹配任何文件”,您可以尝试添加其路径。就像我删除database.yml文件时一样,我只是简单地执行了“git rm-r--cached config/database.yml”操作。idea目录中的一些文件应该签入到您的repo中。查看JetBrains关于你的.gitignore应该是什么样子的建议。我一生都无法从我们的回购中取出此文件夹。。。切换分支会不断重新跟踪它。。。人们已经在多个分支上运行了此功能,每当您切换分支时。。。git认为它需要。。。在某个时候。。。删除你的.idea文件夹以便。。简言之切换分支现在对我们来说基本上是一个设置擦除。我试着在master上运行它。。。然后合并到所有分支中。。但是stills正在擦除设置。我们是否有一个永久性的解决方案,将其设置为IntelliJ以从不添加
.idea
文件夹来提交文件?
git push origin --delete remoteBranchName
git add . //Everything is up to date
git commit -m "Removed the .idea folder" //Nothing to commit
git push origin remoteBranchName