请参阅“在分支签出之间保留 git --assume-unchanged 文件”
git update-index --skip-worktree -- path
这不会从git stash
.
原始答案
来自“暂时忽略文件”:
git update-index --assume-unchanged <file>
这将允许忽略对该特定文件的更改。如果您想恢复代码更改同时将配置更改保留在同一个文件中,
这将无济于事。
并且 git stash 仍然会恢复它:如何防止 git stash 使用“假设不变”位删除对文件的更改?
请注意,在 Git 2.25(2020 年第一季度)之前,“git stash
保存”在稀疏签出的工作树中错误地删除了感兴趣区域之外的路径。
请参阅Johannes Schindelin ( ) 的提交 4a58c3d和提交 8dfb04a(2019 年 10 月 30 日)。(由Junio C Hamano 合并——在提交 57b5301中,2019 年 11 月 10 日)dscho
gitster
stash
:正确处理跳过工作树文件中的阶段性更改
签字人:约翰内斯·辛德林
git stash
在为标记有该skip-worktree
位的文件(例如,在稀疏检出中排除的文件)暂存更改时调用时,这些文件将被记录为已删除。
原因是git stash
试图通过将索引复制到临时索引然后更新工作树中的文件来构建反映工作树的树。
至关重要的是,它还要求git diff-index
更新 HEAD 中但未在索引中暂存的那些文件。
但是,当临时索引通过 更新时git update-index --add --remove
,skip-worktree 条目会将文件标记为误删除。
让我们使用新引入的--ignore-skip-worktree-entries
选项git update-index
来防止这种情况发生。
请注意,回归测试用例故意避免复制上述场景,而是尝试仅重新创建症状。
丹汤普森报道。