由于文件名,无法丢弃更改

时间:2016-11-23 02:25:30

标签: git

我的git repos令人沮丧,经过多次尝试我无法解决。我有两张名为amex.pngvisa.png的图片。我记得将这些重命名为Amex.pngVisa.png并提交了这些更改。对于一些未知问题,git现在总是将这些文件显示为modified,无论我对它们做什么。

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   app/assets/images/amex.png
    modified:   app/assets/images/visa.png

我使用git checkout -- app/assets/images/amex.png来放弃更改,但它会将新文件显示为modified

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   app/assets/images/Amex.png
    modified:   app/assets/images/visa.png

同样,如果我运行git checkout -- app/assets/images/Amex.png,它将再次显示git status中的第一个文件名amex.png。它似乎陷入了一个循环。我需要以某种方式打破这个循环。

它对我的开发代码没有影响,但它很烦人,因为在提交代码时我总是要注意它们。我相信我可以删除所有当前代码并再次克隆我的回购,但我想听听您的意见,以便我将来可以解决它。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作。 注意:以下内容将丢失您的repo中所有未提交的更改

首先确保该目录中没有未跟踪的文件。使用git,您只需键入删除整个目录,然后重置。我尝试过这样的事情:

rm -rf app/assets/images/
git reset --hard HEAD

这将删除整个目录,然后重置为您拥有的最新git提交(读取这些文件)

另一种选择是用

清理你的分支
git clean -df

根据Git documentation on git clean

  

git-clean - 从工作树中删除未跟踪的文件

说明

  

通过递归删除文件来清理工作树   不受版本控制,从当前目录开始。

     

通常,只删除Git未知的文件,但是如果使用-x选项   指定时,也会删除被忽略的文件。例如,这可以   有用的删除所有构建产品。

     

如果给出任何可选的...参数,则只有那些路径   影响。

选项

  

-d除了未跟踪的文件外,还删除未跟踪的目录。如果未跟踪的目录由不同的Git存储库管理,则它是   默认情况下不会删除。如果你真的想,请使用-f选项两次   删除这样的目录。

     

-f   --force如果Git配置变量clean.requireForce未设置为false,则除非给定-f,-n或-i,否则git clean将拒绝运行。