如何将未暂存文件移动到未跟踪文件?

How do I move an unstaged file to untracked?

说这是我在 git 状态下看到的:

Changes not staged for commit:
    modified:   Makefile.in

Untracked files:
   ../node_modules/somepath/inverter_packet.js

我想做的是将 Makefile.in 从 'Changes not staged for commit' 移动到 'Untracked files.'

我知道我可以使用 git update-index --assume-unchanged Makefile.in 忽略更改,并使用 --no-assume-unchanged 命令恢复它们,但我不想让这些文件完全看不见,因为我这样做edit/commit他们偶尔。

我想从 'not staged' 部分删除文件,但在我键入 git status.

时仍然看到它

或者,如果我可以(最好是简单地)在键入 git diff 时停止显示未暂存文件的差异(例如,像上面的 Makefile.in),那也很好。

I want to remove files from the 'not staged' section, but still see it when I type git status.

您希望它们移到哪里?真是无处可藏

正如您提到的,这些是跟踪文件,因此您不想使用 git rm 从存储库中删除它们,那将是完全错误的。这里唯一真正的选择是假设它们不变。他们将 "out of view" 无论哪种方式,所以这个问题真的没有多大意义。

另一种选择是使用 git stash -p 仅存储单个文件,但随后您将丢失工作副本中的更改,直到您将存储弹出,这又不是您看起来的样子'重新开始。

我遇到过类似的情况。这是我按照 unstaged 到 untracking 所做的。

  1. git rm [文件名和路径] --cached

现在对应的文件被删除了。它使用 --cached 选项

将文件保存在本地主机中
  1. git 提交(删除的文件)。

再次构建您的项目。如果始终生成文件,您将在 Untracked 中获得该文件。 现在将其添加到 .git/info/exclude.

  1. git状态

您现在正在取消跟踪最初未暂存的文件。

注意:如果文件不是在构建过程中生成的,您将不会在取消跟踪中获得这些文件。我的意思是它们完全从 git 跟踪中删除。