As mentioned earlier, git-gutter is an extension designed for showing you git information directly in your file, and operating from there, whilst magit focuses on operating on diffs.
This feature isn't planned for git gutter any time soon
(https://github.com/syohex/emacs-git-gutter/issues/91)
However it's the sort of thing that emacs lisp should be very good at wiping up (go through the hunks in a region and stage them out a time).
Trying this myself this was almost the case, the only problem was git-gutter kicks off a background process after you stage a hunk and doesn't wait for it to finish, so I had to add a little hacky magic to deal with this.
The following emacs lisp function should do what you want. You might want to bind it to some keys.
(defun my-git-stage-region ()
(interactive)
(let ((git-gutter:ask-p nil)
(start (region-beginning))
(end (region-end)))
(save-excursion
(goto-char start)
(git-gutter:next-hunk 1)
(while (< (point) end)
(git-gutter:stage-hunk)
;; This is a hack to wait for git-gutter to finish
;; updating information (git-gutter kicks
;; of a process to update the diff information
;; and does not block)
(while (get-buffer (git-gutter:diff-process-buffer (git-gutter:base-file)))
(sit-for 0.05))
(git-gutter:next-hunk 1)))))
s
. But you can also stage just part of the hunk, by marking parts of it (the same way you would do that in a file-visiting buffer) and then stage just that.