Solution for Git GUI client for remote SSH

I am a Git GUI user. I don't have an issue using it for my local development. However, now we have a server with a Git repository. Can I remotely push, pull and diff by using the Git GUI client to access that?

Currently, I am SSHing to the Linux server, and use a Git command to do all the Git commands. But I found it very difficulty when it comes to diff. That's why I think is there any solution for me using the Git GUI client access remote repository and do the Git command with a Git client.

I want to be able to mount a remote server in a Git repository. Current we only have to open the Git repository in our local disk. For example, the C:\www\repo.git file. How about if I want to access 10.10.10.10/home/www/.git and do all the Git commands in the Git client?

Solutions are open for OS X and Windows.


Aside from VNC / remote X (which is an obvious solution and therefore not worth putting in an answer), the only alternative I can find is Visual Studio Code's new remote development support.

You can connect to a server via ssh (from within Visual Studio Code), and then Visual Studio Code's Git features work natively. The interface is fairly basic however - in particular there is no history view and you can't rebase, cherry-pick, etc. from the GUI. It's basically for staging commits.

This extension gives you a proper git graph view. It's pretty good.


First, when it comes to diff, you can simply git fetch your repo, and do the diff locally (with git gui), since you have the all history.

Second, if you have ssh access to the server, you don't need to actually open an ssh session.

A simple git command git@gitserver:/path/to/git/project.git is enough (repalce "command" with clone/push/pull/fetch)
That means the fetch is easy.

See Git on the Server - Setting Up the Server for an ssh setup, at least for Linux or Mac.
For Windows, you have alternative ssh server you can consider, like copssh-free-edition.


But now our team is having this issue, and I am the only person in charge for the GIT. That's why I looks for help how to solve this

Then you would need to ssh to the server, git add and git commit there in the repo, then go back to your local workstation, clone or fetch, and do the diff there. –


If your server has it enabled, you can use XForwarding to display a GUI executed on the remote machine on your local machine.

On the server-side, this means that you need to have the proper tools installed (e.g., git-gui, which means that you also need Tcl/Tk installed, which means that you also need the X infrastructure installed).

You also must enable Xforwarding, by making sure that you have a line like the following in your /etc/ssh/sshd_config:

X11Forwarding yes

To use that on your local Linux machine, you would usually use the -X flag to enable XForwarding for a given connection:

 shiro@local:~$ ssh -X gituser@gitserver

 gituser@gitserver:~$ cd repo.git
 gituser@gitserver:~/repo.git$ git gui

On your local OS X machine, you would instead use -Y:

 shiro@applejoice:~$ ssh -Y gituser@gitserver

 gituser@gitserver:~$ cd repo.git
 gituser@gitserver:~/repo.git$ git gui

You need an Xserver running on your local machine, in order to use XForwarding. While this is not a problem on Linux (or OS X), it gets complicated for Win32. There are tutorials on the web for setting up and using Xservers under Win32 (e.g., Xming).