删除文件并从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