git assume-unchanged and git stash

5

我将一些本地配置保存在“假设未更改”文件中。随着时间的推移,我创建了几个分支,并且“假设未更改”文件也在这些分支之间发生了变化(添加更多本地配置)。如果我尝试检出一个旧的分支,就会遇到以下问题:

error: Your local changes to the following files would be overwritten by checkout:
    <some assume-unchanged files>
Please, commit your changes or stash them before you can switch branches.

我不想提交它们,也不能将它们藏起来(即使使用--include-untracked选项):

$ git stash
No local changes to save

有没有解决方案,或更好的本地更改工作流程来保持未提交的更改?

假定未更改(Assume-unchanged)经常被误解为一个忽略标志。但它不是。它是一个承诺,你不会更改文件,而且Git也不必在慢速文件系统上浪费时间检查状态。某些命令仍然会检查所有文件并跟踪/包含相应的更改,并简单地忽略该标志。这已经让许多用户感到困惑。 - Philip Oakley
2个回答

1
我曾经遇到过类似的情况,发现使用.git/info/exclude比排除.gitignore对我更有效。

.git/info/exclude仅适用于单个克隆,因此一个人在他的克隆中忽略的内容在另一个人的克隆中不可用。例如,如果有人使用Eclipse进行开发,则该开发人员将 .build 文件夹添加到 .git/info/exclude 可能是有意义的,因为其他开发人员可能没有使用Eclipse。

何时使用.git/info/exclude而不是.gitignore来排除文件?


1

目前您需要使用正确的.gitignore文件或排除机制。Assume-unchanged有不同的含义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接