git不会忽略文件

时间:2012-12-06 19:00:11

标签: git github

我意外地跟踪了由rubymine创建的.idea/workspace.xml文件,现在我似乎无法删除该文件被跟踪。

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

以下是我一直试图删除文件的方法。

  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/*

3 个答案:

答案 0 :(得分:0)

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

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

  • 如果您未将.gitignore包含在您的回购邮件中或未将.ideas/*添加到.gitignore,则其他人可能会通过以下内容重新添加该文件/ p>

    git add -a
    

    git add .
    

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

答案 1 :(得分:0)

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

即使我手动删除了.gitignore中的.idea /文件夹并执行了git rm -r --cached .idea,它也会继续回到“未同步的更改”中。

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

git commit -m "Manual commit"

答案 2 :(得分:0)

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

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

    git rm --cached  git commit -m“已删除......”

  2. 设置assume-unchanged标志

  3. <强> --[no-]assume-unchanged

      

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

         

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

         

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