我正在学习git,但我对不同的登台和提交文件的方式感到困惑。为了解决这个问题,我正在使用目录的比喻:工作目录,登台目录,提交目录。
rm
来自我的工作目录的文件,它只会从我的工作目录中删除它 。这是正确的吗?git rm
来自我的工作目录的文件,它会将其全部删除
三个目录。正确的吗?git rm --cached
一个文件,它将从我的暂存中删除该文件
并提交目录,但将其保留在我的工作目录中?git add .
,然后git status
显示具有的暂存文件
已添加,删除和更新。我承诺会发生什么?是的
从Commit目录中删除已删除的文件?如果我回滚
稍后提交,那些被删除的文件会重新出现吗?任何有助于更好地理解这些概念的帮助都会受到赞赏 - 谢谢!
答案 0 :(得分:20)
调整您对暂存区域(也称为索引或缓存)和--cached
选项的理解。 documentation for git rm
州
--cached
使用此选项仅从索引中取消暂存和删除路径。无论是否修改了工作树文件,都将保持不变。
向下运行列表
rm file
- 仅从工作目录中删除文件git rm
- 从工作目录和登台区域删除文件,但尚未成为历史记录的一部分(存储库,“提交目录”)git rm --cached
- 从暂存区域删除,但不删除工作目录和历史记录git add .
存在修改,新文件和删除的文件 - git将在缓存中记录修改和新的未签名文件。 (git add
对某些选项的行为会有所不同。)各种git命令的--cached
选项使它们对索引起作用或至少对索引起作用。
git add
和git rm
从工作目录更改为索引或缓存。将这些命令视为一次构建下一个提交。
在您对索引中的内容感到满意后,使用git commit
将更改从索引移至存储库。
大多数情况下,您想要的是简单的序列git rm file
,然后git commit
停止在历史记录中的当前位置跟踪文件。