I develop and run my code on different machines. We have a centralized storage in our infrastructure which can be mounted via NFS, SSHFS or SMB.
The “problem” is that the remote servers, which also mount my remote home (automatically, thanks to AutoFS), don’t have my keys, they never should, the keys are only in one place, my laptop. The keys that I need to commit are my SSH keys for Git push and my GPG keys for signing those commits.
The usual problem was when I git pull
on the development server needs to be an HTTP URL, internally accessible for the mentioned server. Which mean that I can’t git push
from my laptop, because we don’t allow pushing via HTTP(s).
At the same time, if I set the URL to an SSH URL, then git pull
will not work on the development server, because it does not have my SSH keys.
I know that I can set multiple remotes in git, but how about setting a different URL for a remote’s push and pull?
Turns out that’s doable!
It’s also very simple:
First, we clone using the accessible HTTP URL
git clone https://my.git.server.local/myuser/myrepo.git
Then we set the URL only for pushing
git remote set-url --push origin git@my.git.server.local:myuser/myrepo.git
And now let’s check the remote addresses
% git remote -v
origin https://my.git.server.local/myuser/myrepo.git (fetch)
origin git@my.git.server.local:myuser/myrepo.git (push)
Yey, exactly what I needed!
That’s all folks…