删除文件并从Git删除';s分期指数

删除文件并从Git删除';s分期指数,git,version-control,Git,Version Control,当我删除这样的文件时 git rm file_name.ext 我必须提交这些更改吗?为什么? 如果我必须这样做,我会这样做吗 git commit . -m "Delete file_name.txt" 这就是为什么我问:我在Git的暂存索引中添加了错误的文件 git add wrong_file.txt 所以我把它拿走了 git reset HEAD wrong_file.txt 但在这样做之后,我注意到了这个信息 $ git reset HEAD wrong_file.txt $

当我删除这样的文件时

git rm file_name.ext
我必须提交这些更改吗?为什么?

如果我必须这样做,我会这样做吗

git commit . -m "Delete file_name.txt"
这就是为什么我问:我在Git的暂存索引中添加了错误的文件

git add wrong_file.txt
所以我把它拿走了

git reset HEAD wrong_file.txt
但在这样做之后,我注意到了这个信息

$ git reset HEAD wrong_file.txt
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    test2.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       wrong_file.txt
$
$git重置头错误\u file.txt
$git状态
#论分行行长
#要提交的更改:
#(使用“git重置磁头…”取消分级)
#
#已删除:test2.txt
#
#未跟踪的文件:
#(使用“git add…”包含在将提交的内容中)
#
#错误的\u file.txt
$
当我将正确的文件添加到staging索引时,我注意到我删除的test2.txt文件被重命名为right_file.txt

$ touch right_file.txt &&  git add right_file.txt
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       renamed:    test2.txt -> right_file.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       wrong_file.txt
$
$touch right\u file.txt&&git add right\u file.txt
$git状态
#论分行行长
#要提交的更改:
#(使用“git重置磁头…”取消分级)
#
#重命名:test2.txt->right\u file.txt
#
#未跟踪的文件:
#(使用“git add…”包含在将提交的内容中)
#
#错误的\u file.txt
$
最简短的回答:“是”。在
git commit
之前,您的更改仅存储在索引(暂存区域)中。
commit
操作接受所有阶段性更改,并生成一个包含所有更改的新的、单个的commit,从而“永远”保留这些更改(除非您执行所谓的“重写历史”操作)

来自
git status
的“重命名”消息基于将要删除的文件与要添加的文件进行比较。如果内容匹配,git会假定(在
状态
输出中)您必须重命名该文件,而不是删除它并添加另一个文件。例如:

$ mkdir t; cd t; git init; git commit --allow-empty -m initial
Initialized empty Git repository in ...
[master (root-commit) bca9d63] initial
$ $ echo 'file contents' > somefile
$ git add somefile && git commit -m c1
[master c37af4b] c1
 1 file changed, 1 insertion(+)
 create mode 100644 somefile
现在我有了一个包含两个提交的repo,初始的空提交和包含
somefile
的“c1”(
c37af4b

$ git rm somefile
rm 'somefile'
$ echo 'file contents' > newfile
$ git add newfile
我删除了
somefile
并创建了一个新文件,但其内容与我删除的文件完全相同,因此
git status
检测到:

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   renamed:    somefile -> newfile
#
暂存区(又名索引)是您安排事情的地方,直到您喜欢这些安排为止。然后,您
提交
以冻结该安排的副本,该副本将永远可用。在您提交之前,git假定您还不太满意
git status
将当前阶段安排与
HEAD
commit进行比较,并总结差异*,它并不真正关心您添加、删除或移动了多少次,它只是将“阶段现在的样子”与“上次冻结时的样子”进行比较

[*它还将阶段与工作目录进行比较,并将差异总结为“未提交的更改”和/或“未跟踪的文件”。]

$ git commit -m c2
[master a85cea2] c2
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename somefile => newfile (100%)
$ git diff HEAD^
diff --git a/somefile b/newfile
similarity index 100%
rename from somefile
rename to newfile