`git rm --cached`和`git update-index --assume-unchanged`之间的区别?

Hun*_*nle 11 git caching git-rm

我不明白之间的差别git rm --cachedgit update-index --assume-unchanged.

我知道这git rm --cached <file>将从暂存区域中删除一个文件.

而且,我知道这git update-index --assume-unchanged <file>也是这样.

我也看到这两个命令作为SO的类似问题的建议.

这两个命令中的任何一个是否会产生另一种影响?

Tim*_*sen 6

命令

git rm --cached <file>
Run Code Online (Sandbox Code Playgroud)

用于解开Git分支中的文件.此命令将删除file从分段区域将从您提交的资料库下一次删除文件.

命令

git update-index --assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)

也将使file从临时区域消失.但是,这个命令是不同的,因为它告诉Git只是暂时忽略对其所做的任何更改file.因此,当您提交文件时,它将保留为存储库的一部分,假设它已经存在.当你希望Git再次看到对它做出的更改file时,你可以运行这个:

git update-index --no-assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)

这将把文件返回到暂存区域,如果它在您assume-unchanged之前运行时存在.

这里是一个链接git rm --cached,这里是一个链接git update-index --assume-unchanged.

  • 不幸的措辞:`git update-index --assume-unchanged` 不会从索引中*删除*文件的条目,而是会停止 Git 根据文件系统上的匹配文件检查该条目。我相信你在这里可能只是有一些措辞草率,但这是一个重要的 ;-) 为了可能使我的观点更清楚,索引最初(即在 `git read-tree` 之后)“包含”来自刚刚读入的树状结构。因此,让 Git 对索引条目“视而不见”并不等于实际上 * 删除 * 它。 (2认同)