【问题标题】:git rm --cached file vs git reset filegit rm --cached 文件 vs git 重置文件
【发布时间】:2023-03-16 10:01:01
【问题描述】:

我正在努力学习 Git。我很困惑

git rm --cached file

git reset file

这两个命令似乎都将文件从暂存区域转移到非暂存区域。命令有何不同?

【问题讨论】:

标签: git git-reset git-rm


【解决方案1】:

git rm --cached <file> 将从索引中完全删除文件的内容。这意味着在提交时,文件将从HEAD 提交中删除。 (如果文件只被添加到索引中并且还没有被跟踪,这是一个“无操作”。)

git reset -- <file> 将索引中的文件内容重置为与头部提交相同。这意味着在提交时不会对文件进行任何更改。如果HEAD 提交中没有文件的跟踪版本,则此操作无效。

【讨论】:

  • 也许作为补充:git rm --cached 会将文件的 delete 操作添加到索引中,就像 git add 将添加 add 行动。
  • 是index==暂存区吗?如果一个文件在索引中,它不是被扩展名跟踪的吗?
  • 对于 git reset -- ,在 HEAD 提交中应该有该文件的跟踪版本。如果是新文件添加到索引中,则 HEAD 提交中将没有跟踪版本
  • 所以git reset 不会将索引重置为上次提交后的状态,即empty。它保留暂存文件的列表,但将它们的 内容 重置为上次提交的内容。因此,git reset 不是(不撤消)git add 的对立面。
  • 有没有办法查看索引中的文件? (即使它们与 HEAD 匹配)
猜你喜欢
  • 2017-12-16
  • 2014-05-02
  • 2011-08-13
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 2012-03-20
  • 2021-04-02
相关资源
最近更新 更多