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

时间:2014-09-27 14:01:03

标签: git

我使用此命令取消跟踪文件:

git rm --cached source/html/weekend-message.html

这是Stack Overflow上this answer中描述的方法。在那之后,我的git状态看起来像这样:

enter image description here

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

git reset HEAD source/html/weekend-message.html

现在我的git状态如下:

enter image description here

我很困惑。我只是想解开这个文件并在此之后有一个空的git状态。我该怎么做?


更新:执行以下VonC答案中建议的命令后:

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

我的git状态如下:

enter image description here

Git状态仍然不干净:(

1 个答案:

答案 0 :(得分:3)

你应该:

  • 已提交(为了记录删除)
  • 将该文件添加到.gitignore,添加并提交更改。

由于您已重置该文件(撤消索引中记录的删除),您可以再试一次:

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

然后:

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

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

  • git rm --cached source/html/weekend-message.html
  • 将文件添加到.gitignore文件(您将看到它立即从git status输出中消失),git add .gitignore。注意:现在您可以获得正确的git状态,准备提交:enter image description here
  • git commit -m "delete and ignore source/html/weekend-message.html"

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

git update-index --skip-worktree -- yourFile

不需要提交,文件仍保留在历史记录中。

点击“Git - Difference Between 'assume-unchanged' and 'skip-worktree'”了解更多信息。