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

5

假设这是我在git状态中看到的内容:

Changes not staged for commit:
    modified:   Makefile.in

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

我想做的事情类似于将Makefile.in从“未提交的更改”移动到“未跟踪的文件”。我知道可以使用“git update-index --assume-unchanged Makefile.in”忽略更改,并使用“--no-assume-unchanged”命令恢复它们,但我不想完全看不到这些文件,因为我偶尔会编辑/提交它们。我想把文件从“未暂存”的部分删除,但在输入“git status”时仍然能看到它。或者,如果我可以(最好是简单地)停止显示未暂存文件的差异(例如上面的Makefile.in),那也很好。

2
未跟踪的文件是指根本没有被Git版本控制的文件。因此,我猜想让更改出现在“未跟踪的文件”部分的唯一方法就是停止跟踪它们。git rm --cached -- <file> git commit。然而,由于您声明偶尔会提交该文件,我认为这不是您想要做的事情。 - Alderath
1
运行 git rm --cached <path> 命令,其中 <path> 表示涉及文件的路径。 - jub0bs
2个回答

4

我也遇到了类似的情况。这是我采取的步骤,将未暂存文件变为未跟踪文件:

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

现在相应的文件已被删除,但使用--cached选项保留了该文件在本地主机上。

  1. git commit(被删除的文件)。

重新构建项目。如果该文件总是生成,则会在未跟踪中找到该文件。现在将其添加到.git/info/exclude文件中。

  1. git status

您现在正在将最初未暂存的文件变为未跟踪的文件。

注意:如果文件在构建过程中没有生成,则无法将其转换为未跟踪状态。也就是说,它们已完全从git跟踪中删除。


2
我想从“未暂存”部分中删除文件,但在键入git status时仍要看到它。
您希望将它们移动到哪里?实际上没有其他地方可以隐藏。
如您所述,这些是已跟踪的文件,因此您不希望使用git rm从repo中删除它们,那样就会出现问题。唯一真正的选择是让它们被视为未更改。无论哪种方式,它们都将“不可见”,因此问题并没有多少意义。
另一个选择是使用git stash -p仅存储单个文件,但这样您将失去工作副本中的更改,直到您弹出存储区,这似乎也不是您想要的。

1
首先,谢谢您的回复。 我不想让它们在存储方面真正“移动”到任何地方。 我只想将它们重新分类为“未跟踪”。 但是,如果无法通过标准的一系列git命令轻松实现这一点,我将不得不尝试其他方法。 - J.M. Janzen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接