我的git repos令人沮丧,经过多次尝试我无法解决。我有两张名为amex.png
和visa.png
的图片。我记得将这些重命名为Amex.png
和Visa.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
。它似乎陷入了一个循环。我需要以某种方式打破这个循环。
它对我的开发代码没有影响,但它很烦人,因为在提交代码时我总是要注意它们。我相信我可以删除所有当前代码并再次克隆我的回购,但我想听听您的意见,以便我将来可以解决它。
答案 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将拒绝运行。