【发布时间】:2023-03-16 10:01:01
【问题描述】:
我正在努力学习 Git。我很困惑
git rm --cached file
和
git reset file
这两个命令似乎都将文件从暂存区域转移到非暂存区域。命令有何不同?
【问题讨论】:
我正在努力学习 Git。我很困惑
git rm --cached file
和
git reset file
这两个命令似乎都将文件从暂存区域转移到非暂存区域。命令有何不同?
【问题讨论】:
git rm --cached <file> 将从索引中完全删除文件的内容。这意味着在提交时,文件将从HEAD 提交中删除。 (如果文件只被添加到索引中并且还没有被跟踪,这是一个“无操作”。)
git reset -- <file> 将索引中的文件内容重置为与头部提交相同。这意味着在提交时不会对文件进行任何更改。如果HEAD 提交中没有文件的跟踪版本,则此操作无效。
【讨论】:
git rm --cached 会将文件的 delete 操作添加到索引中,就像 git add 将添加 add 行动。
git reset 不会将索引重置为上次提交后的状态,即empty。它保留暂存文件的列表,但将它们的 内容 重置为上次提交的内容。因此,git reset 不是(不撤消)git add 的对立面。