如何还原命令"git status --porcelain | grep '^??' | cut -c4- >> .gitignore"?

3

最初为了永久忽略未跟踪的文件,我运行了一个

git status --porcelain | grep '^??' | cut -c4- >> .gitignore

命令。现在当我在我的代码中添加一个新文件时,git status不显示它。


1
您可以手动编辑.gitignore文件,或者使用提交历史将其恢复到以前的版本。请参阅https://dev59.com/q3VC5IYBdhLWcg3wrDNd了解如何执行此操作的具体步骤。 - Vlad274
1
git status 报告的是目录,而不是它们的文件,如果该目录中没有任何已被跟踪的内容。很可能是因为您正在忽略整个目录,而您的新文件就在那个目录中。 - j6t
2个回答

4
你已经用更改后的文件数据覆盖了.gitignore文件。在.gitignore语法中,git status --porcelain不具有任何意义。
你需要恢复你的.gitignore文件。最简单的方法是——假设你没有本地未提交的更改——执行以下命令:
git checkout -- .gitignore

1
如果您仍然想要添加您的文件,您有几个选项:
  • 使用git add -f file命令忽略.gitignore并将文件添加到版本控制中。
  • 编辑.gitignore文件以删除不应被忽略的行。
如果您想撤销对.gitignore所做的更改:只需使用文本编辑器编辑该文件即可。 [任意命令] >> .gitignore只会将[任意命令]的输出添加到文件末尾;
您可以通过以下方式找到列出所有文件的部分:
git status --porcelain | grep '^??' | cut -c4-

删除那个部分。

您应该修改您的.gitignore文件,因为忽略一长串特定的文件并不是很常规。

  • if you really want to ignore every untracked file (current and future), set your .gitignore to :

    # ignore everything
    *
    

    you can still add new files using git add -f

  • if you want to ignore specific folders, just name those folders :

    # ignore the "tmp/" and "build/" directories :
    tmp/
    build/
    

如需详细文档,请参见git help ignore


如果OP想要“还原”给定的命令,第一种选项实际上并没有太多意义。编辑.gitignore以删除添加的行是一个合理的计划。 - Caleb

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