[description] Instead of removing an entry from the index and adding one with the same name, you can also directly update that entry! Put the content you want in a file with a matching name, and then run git update-index This will create a new blob, and update the hash of the entry to that blob. Update an entry in the index! [setup] echo "file 1" > file1 echo "file 2" > file2 echo "file 3" > file3 git add . [setup goal] echo "file 1" > file1 echo "file 2" > file2 echo "file 3" > file3 git add . echo "new content" > file1 git update-index file1 [win] # This is not really a good test for the winning condition... test "$(git ls-files -s | git hash-object --stdin)" != "10c4b28623e7e44e09f5a596450a50ab7ac31fbe" -a "$(git ls-files | wc -l)" -eq 3