3

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

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

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

您对以下文件的本地更改将被结帐覆盖:Logs/Err.log

然而,当我git status --s从当前分支运行 a 时,我得到“没有可提交的内容,工作目录干净”

我在某个地方搞砸了。我怎样才能“实际上”忽略该错误日志?如何恢复到以前的非更新索引命令?

4

2 回答 2

0

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

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

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

道德:

  1. 当您不完全了解它们的作用时,不要乱搞(update-index
  2. 不要试图忽略已经被跟踪的文件。
于 2016-01-18T03:45:39.773 回答
0

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

git stash

或者

git reset --hard HEAD

当然,您应该首先撤消update-index

git update-index --no-assume-unchanged Logs/Err.log
于 2016-01-18T03:39:18.480 回答