Local git remotes

As part of working on cani I was also using a variety of git remotes. One of the remotes was hosted on a server I have at home. Here’s how I set that up.

Let’s say the server has a project in a folder called cani. This folder has the code and a .git/ directory:

/home/user/projects/cani

We can use the above folder to clone a bare repository (can be used as a remote without causing weird conflicts):

cd /home/user/bares
git clone --bare /home/user/projects/cani
# creates /home/user/bares/cani.git

To add this bare repository as a remote to push & pull from can look like a few different ways. Here’s the remote while on the same machine:

git remote add local /home/user/bares/cani.git

Here’s how you can set up the remote when pushing from another machine:

git remote add local ssh://USER@MACHINE:/home/user/bares/cani.git

We can associate the branch main as the default branch for remote local:

git remote set-branches local main

Now we’re ready to push to our local remote!

# without any config
git push ssh://USER@MACHINE:/home/user/bares/cani.git

# if remote configured with ssh://USER@ as above
git push local  

Pulling from the configured remote:

# without default branch
git pull local main

# with default branch branch `main`
git pull local

For what it’s worth, the ssh://USER@MACHINE syntax can be replaced with any ssh config you might have set up locally.

Anyway! I really liked working with a local remote, especially when working with offsite remotes with lower uptime. Setting up a local remote made it a much more relaxing to use a remote that is maybe not always available. In my own case, the offsite remote is a small community server that is getting massively hammered by big corporate scrapers. Now I have the best of both: a local remote I can push to with no delay and an offsite copy hosted by a friend in an online community. Notably, no big tech is involved!