Ok, so here's how I did it. I removed cygwin and git for windows so I could start fresh. I have the windows subsystem for linux, and git is on there. When using the windows command prompt (cmd.exe), you can type wsl git to run the git command on WSL. This command will successfully take command line arguments. All I had to do was get matlab to execute wsl git instead of git, anytime it tried. I started with the advice here: https://stackoverflow.com/questions/20530996/aliases-in-windows-command-prompt
It turns out that adding aliases that automatically generate anytime cmd.exe is opened will not work. Somehow matlab circumvents the aliasing (perhaps it runs cmd.exe as a different user). In any case, I went to the second solution, which was to create a file called git.bat with the following code:
@echo off
wsl git %*
This script takes any arguments, and passes them to wsl git. Then, I added the containing folder to my system path. This way, any time git is invoked in cmd.exe, it reference git.bat, which in turn passes arguments to wsl git.
I was initially concerned that git.bat would break git in the WSL or do some sort of recursive nonsense because the system path is shared between WSL and Windows. Fortunately, that wasn't a problem. (I think the commands on the path for WSL take priority over those on the regular system path)