首页 > 解决方案 > Git 提交了所有内容,但仍然出现错误:您对以下文件的本地更改将被结帐覆盖

问题描述

我承诺了一切。这是我的git status

On branch frontend/leo/auth
Your branch is up to date with 'origin/frontend/leo/auth'.

nothing to commit, working tree clean

但是,当我尝试结帐dev分支时,我得到

error: Your local changes to the following files would be overwritten by checkout:
    frontend/package.json
Please commit your changes or stash them before you switch branches.
Aborting

这里发生了什么事?当我承诺了所有事情时,为什么它会要求我承诺?

标签: git

解决方案


问题的发生是因为我故意不跟踪package.json这个答案,结果证明是错误的。

在 Git FAQ 中,它说,

如何忽略对跟踪文件的更改?

Git 没有提供这样做的方法。原因是如果 Git 需要覆盖这个文件,比如在签出时,它不知道对文件的更改是否宝贵并且应该保留,或者它们是否无关紧要并且可以安全地销毁。因此,它必须采取安全路线并始终保护它们。

尝试使用 的某些功能是很诱人的git update-index,即假设不变和跳过工作树位,但这些功能不能正常工作因此不应该以这种方式使用

正确做法:

正确的方法似乎是那个 SO 帖子上被接受和最受欢迎的答案


推荐阅读