git-还原更新索引/忽略的文件以便我可以更改分支?

git-还原更新索引/忽略的文件以便我可以更改分支?,git,gitignore,git-index,Git,Gitignore,Git Index,我试图在.gitignore文件中添加一个错误日志,在将文件添加到.gitignore后,我在某个地方读到,我必须明确地取消对该文件的跟踪。不知怎的,我最终用这个来做到这一点: git更新索引--假定日志未更改/Err.log 一切看起来都很好,直到我转到我的开发分支合并。我不能换树枝。我得到以下错误: 您对以下文件的本地更改将被签出覆盖:Logs/Err.log 然而,当我从当前分支运行一个git status--s时,我得到“无需提交,工作目录干净” 我在什么地方搞砸了。我如何“实际”忽略错

我试图在.gitignore文件中添加一个错误日志,在将文件添加到.gitignore后,我在某个地方读到,我必须明确地取消对该文件的跟踪。不知怎的,我最终用这个来做到这一点:

git更新索引--假定日志未更改/Err.log

一切看起来都很好,直到我转到我的开发分支合并。我不能换树枝。我得到以下错误:

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

然而,当我从当前分支运行一个
git status--s
时,我得到“无需提交,工作目录干净”


我在什么地方搞砸了。我如何“实际”忽略错误日志?如何恢复到以前的非更新索引命令?

根据我自己的经验,执行
git更新索引——假设unchanged
仅在执行它的分支上有效。它实际上并没有改变基础索引的外观,它只是为在该分支上发生的操作屏蔽了它。因此,当您切换分支时,Git仍然“看到”脏文件。如果要切换分支,可以尝试以下操作:

git stash

当然,您应该首先撤消
更新索引

git update-index --no-assume-unchanged Logs/Err.log
我不确定这是否是“正确”的答案,但下面是我如何解决它的(因为它只是一个几乎不重要的错误日志,这很有帮助…)

  • 已从.gitignore中删除该文件
  • 删除该文件
  • 运行
    git更新索引--添加日志/Err.log
  • 提交分支
  • 签出以开发和合并
  • 返回到上一个要素分支
  • 看起来不错。我现在可以添加Err.log,它将获取更改,因此分支将再次跟踪它。我将删除该文件,然后再次添加到.gitignore,一切都会好起来

    道德:

  • 当你不完全理解事物的功能时,不要乱搞它们(
    更新索引
  • 不要试图忽略已被跟踪的文件

  • 你试过了吗?在我的搜索中没有看到。。。现在就应该有了,吸取教训。嗯,--不,假设不变。。。我想知道这和……有什么不同。。。我会RTFM(就像我本来应该做的那样…)你在回答中所做的对我来说就像是一个黑客。一般来说,如果你需要更改分支,而你的工作目录又脏了,你应该要么隐藏、提交,要么重置。这让我们两个(当你发布答案时我正在处理它,否则我会按照你建议的方式处理)。在任何情况下,分支都会正确地合并到dev中,现在由于不再需要它而被删除。希望以后没有隐藏的问题…但它说我的工作目录是干净的。。。
    git status
    不应该给我看一些肮脏的东西吗?你没有抓住我回答的要点(和文档)。当您转到一个
    git更新索引时——假设未更改
    ,git会在文件上放置一个掩码,这样它就不会显示在该分支的索引中。然而,该文件实际上仍然存在于索引中,当您尝试更改分支时,voilla,掩码会自动脱落。
    git update-index --no-assume-unchanged Logs/Err.log