Refresh staged files

git, git-add

Solution

The following command will update the index to contain the other changes in B that has not been staged yet:

git update-index --again

Problem

In git, is there any (simple) way to modify the index so that only changes to files which are already in it are added? It sounds kind of complicated, but what I want to achieve is simple. Lets say my index looks like this (slightly stripped `git status` output): ``` # Changes to be committed: # modified: A # modified: B # # Changed but not updated: # modified: B # modified: C # # Untracked files: # D ``` Some changes to `B` are in the index, some aren't. `C` is not staged at all. How can I update `B` in the index (stage its unstaged changes) without adding `C`? I.e. I would like for the index to look like this: ``` # Changes to be committed: # modified: A # modified: B # # Changed but not updated: # modified: C # # Untracked files: # D ``` In this simple case it can of course be achieved with a simple `git add B`, but I would like to know if there's a simple answer for the general case. I tried `git add --refresh`, but if I understand correctly, that only updates stat info.

Original source