git - 还原 update-index/ignored 文件以便我可以更改分支?

git - revert update-index/ignored file so I can change branch?

我试图将一个错误日志添加到我的 .gitignore 文件中,并且在途中的某处读到我必须在将文件添加到 .gitignore 之后专门取消跟踪该文件。不知何故,我最终使用它来做到这一点:

git update-index --assume-unchanged Logs/Err.log

一切看起来都很好,直到我切换到我的开发分支进行合并。我不能改变分支。我收到以下错误:

Your local changes to the following files would be overwritten by checkout: Logs/Err.log

然而,当我从当前分支 运行 git status --s 时,我得到 "nothing to commit, working directory clean"

我搞砸了。我怎样才能 "actually" 忽略那个错误日志?如何恢复到我以前的非更新索引命令?

根据我自己的经验,git update-index --assume-unchanged 只在你执行它的分支上有效。它并没有真正改变底层索引的样子,它只是为发生在该分支上的操作屏蔽它。所以当你切换分支时,Git 仍然是 "sees" 脏文件。如果你想切换分支,你可以尝试以下方法:

git stash

git reset --hard HEAD

当然要先撤销update-index:

git update-index --no-assume-unchanged Logs/Err.log

我不确定这是 "correct" 的答案,但这是我解决它的方法(有用的是它只是一个几乎不重要的错误日志...)

  1. 从 .gitignore 中删除了文件
  2. 删除文件
  3. 运行 git update-index --add Logs/Err.log
  4. 提交分支
  5. 签出以开发和合并
  6. 返回上一个功能分支

看起来不错。我现在可以添加 Err.log,它会获取更改,因此分支会再次跟踪它。我会删除该文件,然后再次添加到 .gitignore,一切都会好起来的。

道德:

  1. 当你不明白他们做什么时,不要乱搞 (update-index)
  2. 不要试图忽略已经被跟踪的文件。