I think we should reduce using update-index.  Current TGit have not used two steps commit to align with TSVN's Habit. But I think we should provide two steps commit(stash then commit) options in future. Update index will affect result of diff-index --cached or diff-index 

Overlay is difficult to debug, avoid change behaviors. 

I prefer libgit2.