Search code examples
git

How do I update my bare repo?


I created a bare repo to publish my repository, but I can't figure out how to update the bare repo with the current state of the main repository.


Solution

  • If you want to duplicate all the objects from the main repo, do this inside the main repo:

    git push --all <url-of-bare-repo>
    

    Alternatively, do a fetch inside the bare repo:

    git fetch <url-of-main-repo>
    

    You cannot do a pull, because a pull wants to merge with HEAD, which a bare repo does not have.

    You can add these as remotes to save yourself some typing in the future:

    git remote add <whatever-name> <url-of-other-repo>
    

    Then you can simply do

    git push --all <whatever-name>
    

    or

    git fetch <whatever-name>
    

    depending on what repo you're in. If <whatever-name> is origin, you can even leave it out altogether.


    Disclaimer: I'm not a git guru. If I said something wrong, I'd like to be enlightened!

    Update: Read the comments!

    Update 2022-10-10: if you are fetching inside a bare git repo then you probably need to do a git fetch origin master:master otherwise your git log will not show the new commits. Use git fetch origin *:* to update all local branches. See comments for more info.