6

我不小心跟踪了.idea/workspace.xmlruby​​mine 创建的文件,现在我似乎无法从跟踪中删除该文件。

因此,它已被多次检查,但我真的希望它停止被跟踪,因为它会导致合并冲突。

这是我一直尝试删除文件的方法。

  1. git rm --cached .idea/workspace.xml

    $ git status
    On branch master
    Changes to be committed:
    (use "git reset HEAD <file>..." to unstage)
    
    deleted:    .idea/workspace.xml
    
  2. git commit -m 'remove workspace file from tracking'

  3. 将此条目添加到我的 .gitignore 文件中.idea/*
4

3 回答 3

0

你所展示的应该可以正常工作。我看到文件可能会被重复重新引入的两种潜在方式:

  • 如果其他人仍然遇到合并错误并通过添加他们的更改并忽略您的删除来解决它们,文件将不断返回

  • 如果您没有将您的内容包含.gitignore在您的存储库中或没有将您添加.ideas/*到 .gitignore 中,其他人可能会通过类似的方式重新添加该文件

    git add -a
    

    或者

    git add .
    

    您应该将您的更改提交到您的 .gitignore 以防止这种情况发生。

于 2012-12-07T16:31:14.320 回答
0

对我来说,问题是由使用 GitHub Windows GUI 工具引起的。

即使我手动删除了 .gitignore 中的 .idea/ 文件夹并执行了git rm -r --cached .idea,它仍会在“未同步的更改”中不断出现。

在删除缓存文件夹并添加到 .gitignore 后,我可以通过命令行手动提交来解决这个问题。不知道为什么,但它有效。

git commit -m "Manual commit"

于 2014-11-22T11:27:58.017 回答
0

提交文件后,有两种方法可以告诉 git 忽略它:

  1. 提交删除文件,然后将其添加到.gitignore

    git rm --cached git commit -m "删除..."

  2. 设置assume-unchanged标志

--[no-]assume-unchanged

指定此标志时,不会更新为路径记录的对象名称。
相反,此选项设置/取消设置路径的“假定不变”位。

当“假设不变”位打开时,用户承诺不更改文件并允许 Git 假设工作树文件与索引中记录的内容匹配。如果要更改工作树文件,则需要取消设置以告知 Git。这在处理具有非常慢的 lstat(2) 系统调用(例如 cifs)的文件系统上的大型项目时有时会很有帮助。

如果 Git 需要修改索引中的这个文件,例如在提交合并时,Git 将失败(优雅地);因此,如果假定的未跟踪文件在上游发生更改,您将需要手动处理这种情况。

于 2016-04-17T21:30:00.260 回答