git rm和git rm -f有什么区别?

时间:2018-05-15 01:40:30

标签: git git-rm

我正在阅读书籍Git Pro,并说:

要从Git中删除文件,您必须将其从跟踪的文件中删除(更准确地说,将其从暂存区域中删除),然后提交。 git rm命令执行此操作,并删除该文件 从您的工作目录中,这样您下次就不会将其视为未跟踪的文件。

以及下一段谈到git rm -f

如果您修改了文件并将其添加到暂存区域,则必须使用-f选项强制删除该文件。这是一种安全 功能,以防止意外删除尚未记录在快照中但无法从Git恢复的数据。

我不明白的是,在这两个段落中,他们都在谈论从同一区域删除文件(暂存我想,gitgit add .之后添加屏幕截图1}})。

如果两个命令都用于从暂存区域中删除文件,那有什么区别?

谢谢

1 个答案:

答案 0 :(得分:1)

git rm -f(或--force)会覆盖最新的检查。如果未提供-f,则git rm将拒绝删除自上次提交以来修改过的文件,但git rm -f将继续删除。

$ git init
Initialized empty Git repository in /home/ibug/test/.git/
$ touch foo
$ git add foo
$ git rm foo
error: the following file has changes staged in the index:
    foo
(use --cached to keep the file, or -f to force removal)
$ git commit --message "Test foo"
[master (root-commit) 1234567] Test foo
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 foo
$ git rm foo
rm 'foo'
$