如何删除 git bash 中的目录或文件以取消暂存

问题描述

我正在使用“ git status ”检查我的回购状态。但它表明我习惯于提交更改, 这里的命令是:

~/udacity-git-course/new-git-project (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   webpage.html

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        course-git-blog-project/
        npm-debug.log

然后我使用了命令

$ git rm --cached <webpage.html>...

但它显示

fatal: No pathspec was given.

我应该删除哪些文件?我不知道如何纠正和解决

解决方法

首先,让我在此说明:“要提交的更改”并没有错。这就是你之后采取的行动。


这一行:

  (use "git rm --cached <file>..." to unstage)

使用尖括号 <> 来表示单词 file 是一个占位符。输入命令时,尖括号本身也必须删除。此外,三个点是元文本,意思是“根据需要重复”。所以,而不是:

git rm --cached <webpage.html>...

你应该跑:

git rm --cached webpage.html

(注意缺少尖括号和缺少三个点)。

这里发生的事情是您的shell“吃掉”了webpage.html... 并进行了I/O 重定向。也就是说,你跑了:1

<webpage.html >... git rm --cached

这样git rm标准输入来自文件webpage.html,它的标准输出进入(新)文件{{1} }.这会给您留下一个名为 ... 的额外文件,该文件现在将报告为未跟踪文件;您需要使用以下命令将其删除:

...

(注意没有尖括号和 rm ... 前缀等等)。

您应该学习有关如何使用 shell(似乎是 bash、sh 或类似的)的教程。


1I/O 重定向可以放置在命令的任何位置,尽管人们通常将它们放在右边缘。也就是说,我们倾向于看到:

git

而不是:

generate-output --long >outfile

或者看起来更奇怪:

>outfile generate-output --long

但所有三个都执行相同的操作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...