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