Category: Git

  • Quick & Dirty Git Mirroring

    A situation that happens often – you’re working on a repository (GitHub for example) also want your commits automatically mirrored to anther repository.

    The obvious solution is to add a second remote, but that means having to constantly remember to push to both remotes. After playing around with the idea of aliases and hooks, I fell upon a little-known Git feature – secondary fetch and push URLs.

    We can add additional fetch and push URLs for a remote by using the reite set-url For example, to add https://my-backup-remote as a remote for the current git remote set-url –add –push origin https://my-backup-remote

    Taking a peek at the .config fileL

    [remote “origin”] url = https://github.com/alanapz/snorlax.git fetch = +refs/heads/:refs/remotes/origin/ pushurl = https://github.com/alanapz/snorlax.git pushurl = \\192.168.1.40\public\projects\snorlax And

    C:\dev\adista\snorlax>git remote show origin

    C:\dev\adista\snorlax>git push origin head -v Pushing to https://github.com/alanapz/snorlax.git To https://github.com/alanapz/snorlax.git = [up to date] head -> master updating local tracking ref ‘refs/remotes/origin/master’ Everything up-to-date Pushing to \192.168.1.40\public\projects\snorlax To \192.168.1.40\public\projects\snorlax = [up to date] head -> master updating local tracking ref ‘refs/remotes/origin/master’ Everything up-to-date

    Notice that fetches are not affected – we fetch from only the fetch URL (perfect – it doesn’t really make sense to fetch from our backup remote).

    C:\dev\adista\snorlax>git fetch -v
    From https://github.com/alanapz/snorlax
     = [up to date]      master     -> origin/master
    

    Quick, easy & dirty !