One of the things that is hard to find in simple git tutorials is how to set up cooperation with someone, in case you cannot write to the same repository. This document describes how to do that. It is not by itself a git tutorial. Thus it is recommended you read a short git tutorial such as Ralf Ebert’s or read the introductory part of the documentation in the git book.

What we will describe is how to set up your own public repository and working repository in such a way that your own public repository is your origin. This has the advantage that pushing/fetching work with your own public repository by default.

Using an SSH accessible server to exchange data

Setting up your own public git repository and working repository.

In the example, we use the compute server The recipe also work if you replace this string with the valid combination for your SSH server.

Likewise, we use the git repository /home/fmg/sccblom/pub/hoare-logic-tool.git. This can be replaced with the correct location /path/to/bare.git of your (bare) git repository.

  1. On weldam, create (if necessary) a directory for sharing files.

    weldam $ mkdir ~/pub
  2. On weldam, copy the existing git repository:

    weldam $ rsync -av --progress /home/fmg/sccblom/pub/hoare-logic-tool.git ~/pub
  3. On your PC, clone the git repository:

    anywhere $ git clone
  4. On your PC, go into the directory:

    anywhere $ cd hoare-logic-tool
  5. On your PC, add the repository you copied as a remote:

    anywhere $ git remote add sccblom ssh://

caveat - for experts

When setting up a repository to be shared with others, it is important that the permission are set correctly and the git server info is up-to-date. Thus the hooks/post-update script is setup to do this automatically.

# An example hook script to prepare a packed repository for use over
# dumb transports.
# To enable this hook, rename this file to "post-update".

chmod a+rX /home/fmg/sccblom/pub/hoare-logic-tool.git

exec git update-server-info

Using web servers

  1. First step is to use wget to mirror the original public repository.

    wget --mirror --no-parent --no-host-directories --cut-dirs=2

    Note that you need to use the /. at the end to avoid mirroring other files next to the git repository. . Remove the indices generated by the web server.

    rm -f `find ltsmin -name index.html*`
  2. Validate the downloaded git repository:

    cd ltsmin
    git fsck

    This is likely to show dangling commits, which are harmless. If other error messages show up ask your local git expert.