git rm --cached和git reset有什么区别< file>?

5ktev3wc  于 2022-12-25  发布在  Git
关注(0)|答案(3)|浏览(205)

根据git rm documentation

--cached
Use this option to unstage and remove paths only from the index.    
Working tree files, whether modified or not, will be left alone.

但根据this resource,取消转移文件是通过以下操作完成的

git reset HEAD <file>

有什么区别?有区别吗?

ifsvaxew

ifsvaxew1#

git rm --cached中,你可以暂存一个文件,但是你不能从工作目录中删除它,这个文件会显示为untracked。
试乘试驾

git init test_repo
cd test_repo

touch test
git add test
git commit -m 'Added file test

git rm --cached test

git status
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    test      <---- staged for removal

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        test              <-- still in the working dir

使用git reset <file>可以取消暂存文件。在上面的示例中,您可能希望使用git reset test取消暂存删除。

git reset test
git status
On branch master
nothing to commit, working directory clean
i5desfxk

i5desfxk2#

带有git rm --cached标志的命令从索引中删除文件,但将其保留在工作目录中,这向git表明您不想再跟踪该文件。
另一方面,git reset HEAD <file>命令将文件作为跟踪文件保留在索引中,但缓存在索引中的修改会丢失,其效果就像是HEAD中的文件覆盖了缓存中的文件(而工作树文件未受影响)。

z0qdvdin

z0qdvdin3#

清除缓存已满通过此:
git rm -r --缓存。

相关问题