在特定分支上运行git update-index --assume-unchanged path/to/file
之后,我无法使用git checkout
切换分支。
它抛出以下错误:
错误:签出将覆盖您对以下文件所做的本地更改:
路径/to/file
请在切换分支之前提交或隐藏您的更改。
正在中止
但是git diff
和git status
都告诉我没有区别&没有什么可以提交/隐藏的。
如何从分支中切换出来?
有没有比git update-index --assume-unchanged
更好的替代品(除了.gitignore
,因为我不想让它被忽略)?(与问题2@git update-index --no-assume-unchanged doesn't work相同)
发布于 2013-01-16 20:48:01
经过一段时间的使用后,我现在更喜欢git update-index --skip-worktree
,它是一个比git update-index --assume-unchanged
更好的选择。
有关更多信息,请查看。
我还计划检查this answer to 中指定的方法,它似乎更具防御性。
发布于 2021-11-04 17:37:53
今天我遇到了同样的事情,令人失望的是,我找到的大多数答案都与@Sujay的答案相似--他们实际上并没有说明如何避免git checkout
错误。
嗯,我在this page上找到了一个有效的解决方案(我不知道作者是谁,所以我可以表扬):
对我有效的解决方案是使用--
-worktree。然而,像上面的一些一样,即使在我想要保留本地更改的文件上设置了--skip-worktree标志之后,我也很难在标记分支和主分支之间切换,而git不会抱怨。
..。
将仅本地更改的
cp <local-only_file> ~/
上的安全位置
工作树中的
git checkout <local-only_file>
匹配
将有问题的文件从安全位置复制回working tree的
git update-index --skip-worktree -- <local-only_file>
cp ~/<local-only_file> ./
git diff
push
<local-only_file>
中不会包含任何更改在继续上面的步骤之前,完整的解决方案从git update-index --no-assume-unchanged <filename>
开始。执行完这些步骤后,我可以切换分支了。
https://stackoverflow.com/questions/12566384
复制相似问题