I am the CTO of Tower, a Git client for Mac and Windows.
Tower for Mac supports Undo (and also Redo) for very much all Git operations starting with version 3 two years ago. This includes undoing all working tree actions like staging/unstaging/discarding individual chunks or complete files. Just hit CMD-Z.
This feature is coming to our Windows version soon as well.
If you're interested in technical details, you can read it here: https://www.git-tower.com/blog/how-we-built-undo/