有时,git建议git rm --cached
取消暂存文件git reset HEAD file
.我什么时候应该使用哪个?
编辑:
D:\code\gt2>git init
Initialized empty Git repository in D:/code/gt2/.git/
D:\code\gt2>touch a
D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# a
nothing added to commit but untracked files present (use "git add" to track)
D:\code\gt2>git add a
D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Changes to …
Run Code Online (Sandbox Code Playgroud)
git rm
将从暂存区域中删除条目.这与git reset HEAD
"unstages"文件有点不同.通过"unstage"我的意思是它将暂存区域恢复到我们开始修改之前的状态.git rm
另一方面,只需将文件完全从舞台上踢出,这样它就不会包含在下一个提交快照中,从而有效地删除它.默认情况下,a
git rm file
将完全从暂存区域中删除文件,也将从磁盘>(工作目录)中删除.要将文件保留在工作目录中,您可以使用git rm --cached
.
但究竟是什么区别git rm --cached asd
和git reset head -- asd
?
为什么git允许我重置文件?我以为我理解了reset
,因为它正在移动HEAD ...显然我错了.
所以,git reset sha file
似乎做同样的事情git checkout sha file
,除了我file
在索引和工作目录中看到的.
这对我来说没有意义.有人可以解释一下这个区别吗?