git - Git checkout 认为有变化,而 git stash/reset 没有发现变化
问题描述
我在开发分支上,想使用以下命令签出另一个分支:
$ git checkout [BRANCH_NAME]
并得到以下错误:
error: Your local changes to the following files would be overwritten by checkout:
[FILE_NAME]
Please commit your changes or stash them before you switch branches.
Aborting
但是,当我尝试存储 [FILE_NAME] 时,我收到以下错误:
git stash save [FILE_NAME]
No local changes to save
我也尝试过 git reset --hard ,但仍然遇到同样的问题。无法弄清楚是什么导致了这个问题。有任何想法吗?
解决方案
如果你得到这个:
error: Your local changes to the following files would be overwritten by checkout: foo.txt Please commit your changes or stash them before you switch branches.
但未git status
报告任何有关 foo.txt
被修改的信息,则必须是以下情况之一:
你有一个文件,但它没有被跟踪——也就是说,它现在
foo.txt
不在索引中。您要求签出的提交确实有一个跟踪的. Git 警告你,你的将被另一个提交的 tracked替换,之后文件将被跟踪。(请记住,短语文件 X 已跟踪意味着路径 X 现在在索引中。索引内容会随着您更改提交而更改,因此某些文件的跟踪或未跟踪状态会随着时间而改变。)foo.txt
foo.txt
foo.txt
或者,您有一个
foo.txt
被跟踪的文件(在索引中),但您已将 Git 告知该文件--assume-unchanged
或--skip-worktree
该文件。您要求签出的提交确实有一个foo.txt
,并且它与您的不匹配。Git 警告你,你的foo.txt
将被其他提交的foo.txt
.
您不能存储或提交文件,因为您告诉 Git不要这样做(通过不跟踪它,或者通过设置假设不变或跳过工作树位)。尽管如此,Git 仍然为您提供了保存内容的机会,而不是粗鲁地从您要求检查的任何提交中删除文件。
推荐阅读
- r - 将应用函数与用户定义的函数一起使用,将变量添加到数据框
- docker - 在 Digital Ocean 下安装 Docker 使用哪些 url?
- excel - 将多张工作表中的特定列复制到一张工作表中
- syntax - Some() 在变量赋值的左侧做了什么?
- postgresql - 如果现有记录,则返回行,但如果插入新记录,则不返回行
- javascript - TypeError:无法读取 null 的属性“焦点”
- visual-studio-code - 如何更改 VS Code Code.exe 更新路径?
- ponylang - 没有参数的 RAII 构造函数?
- python - 在箱线图中设置轴范围
- html - 如何在弹性框行之间添加一条线?