取消跟踪文件后Git状态不干净

取消跟踪文件后Git状态不干净,git,Git,我已使用以下命令取消跟踪文件: git rm --cached source/html/weekend-message.html git reset HEAD source/html/weekend-message.html 这是“关于堆栈溢出”中描述的方法。之后,我的git状态如下: 我不知道现在该做什么(我想要一个干净的状态),所以我继续查找并找到并执行了以下命令: git rm --cached source/html/weekend-message.html git reset

我已使用以下命令取消跟踪文件:

git rm --cached source/html/weekend-message.html
git reset HEAD source/html/weekend-message.html
这是“关于堆栈溢出”中描述的方法。之后,我的git状态如下:

我不知道现在该做什么(我想要一个干净的状态),所以我继续查找并找到并执行了以下命令:

git rm --cached source/html/weekend-message.html
git reset HEAD source/html/weekend-message.html
现在我的git状态如下所示:

我很困惑。我只想取消对该文件的跟踪,并在此之后拥有一个空git状态。我该怎么做


更新:执行VonC回答中建议的命令后:

git rm --cached source/html/weekend-message.html
git commit -m "delete source/html/weekend-message.html"
我的git状态如下所示:

Git状态仍然不干净:(

您应该有:

  • 已提交(以便记录删除)
  • 将该文件添加到您的.git中忽略、添加并提交该更改
由于已重置该文件(撤消索引中记录的删除),您可以重试:

git rm --cached source/html/weekend-message.html
git commit -m "delete source/html/weekend-message.html"
然后:

  • 将该文件添加到
    .gitignore
    文件中(您将看到该文件立即从
    git状态
    输出中消失)
  • 添加并提交
    .gitignore
    修改(第二次提交)

注意:如下面评论中所建议的,您可以只进行一次提交:

  • git-rm——缓存的source/html/weekend message.html
  • 将文件添加到
    .gitignore
    文件中(您将看到该文件立即从
    git状态
    输出中消失),
    git add.gitignore
    。注意:现在您获得了正确的git状态,准备提交:
  • git commit-m“删除并忽略源代码/html/weekend message.html”

请注意,要在本地忽略文件(而不是在回购历史记录中记录其删除),可以使用:

git update-index --skip-worktree -- yourFile
此处不需要提交,文件仍保留在历史记录中


请参阅“.”的详细信息。

我已经执行了这些命令,但git状态仍然不干净。顺便问一下,您是说执行此属性需要两次提交吗?(
rm--cached
,然后提交删除,然后更新.gitignore,最后提交更新的.gitignore)@ŠimeVidas是的,但是一旦你将该文件添加到.gitignore,它应该会从状态中消失。我已经编辑了答案,以使这两个提交更加可见。哇!我是Git n00b,但在历史记录中有两个提交—“untrack foo”和“update.gitignore”-似乎很愚蠢。是否真的不可能在一次提交中执行所有这些操作?如果这是临时的(您可能希望取消对文件的跟踪并将其保留以供参考,但不需要永远出现异常),则只需忽略“未跟踪文件”部分,或者如果您确实需要更改,请使用
$git status-uno
“清洁状态”。