When you run git commit, Git is prepared to commit the files that are in Git's index. It is not going to commit the files that are in your working tree.
When you run git add, Git copies a working-tree file into Git's index. This ejects the old copy (if there was an old copy) and puts in the new one instead. The files that are in Git's index are in a special form, suitable for storing in a commit: these are compressed and—importantly since Git stores every file in every commit—pre-de-duplicated, so that if this copy of this file matches any copy of any file in any existing commit, it's already de-duplicated. (This means that the files that are in Git's index are useless to you. That's why you have a usable version of the same file in your working tree—at least, up until you change it.)
Now, if you run git add from a pre-commit hook, this can work, sometimes. But sometimes, there's more than one index. When there is more than one index—and it's hard for you, in a pre-commit hook, to detect this case—running git add is not going to do any good: it may affect the next index, or may affect a temporary index that will be thrown away. In any case, the result will be bad.
What this means is that unless you are steeped in the deeper magic of Git and can detect the special index cases, you should never use git add in a pre-commit hook. If you wish to run git add before committing, do that: run git add, then run git commit.
You could, for instance, write a script that does whatever you need done, then runs git add, then runs git commit. Run this script instead of git commit. That would be a much safer way to achieve what you are trying to achieve.
As Marek R suggested in a comment, this really does look like a case of an XY problem. As LeGEC answered and I suggested above, using a script seems like the way to solve the real problem.
git commit. See this discussion, which seems to cover your case.