Let's see if I can make everybody almost happy with this. Patch 1 is not that much different from round one except now with tests. It is still about "precious" attributes that prevent content loss with "git clean", "git checkout <ref>" or "git merge". Patch 2 goes Ævar and Per are pursuing. It adds an opt-in config that turns all ignored files precious, but only for unpack-trees operations. Nguyễn Thái Ngọc Duy (2): Introduce "precious" file concept unpack-trees: support core.allIgnoredFilesArePreciousWhenMerging Documentation/config/core.txt | 6 ++++++ Documentation/git-clean.txt | 3 ++- Documentation/gitattributes.txt | 13 +++++++++++++ Documentation/gitignore.txt | 5 +++++ attr.c | 12 ++++++++++++ attr.h | 2 ++ builtin/clean.c | 20 +++++++++++++++++--- t/t1004-read-tree-m-u-wf.sh | 6 ++++++ t/t7300-clean.sh | 29 +++++++++++++++++++++++++++++ unpack-trees.c | 20 ++++++++++++++++++++ 10 files changed, 112 insertions(+), 4 deletions(-) -- 2.19.1.1327.g328c130451.dirty