FWIW, here are the basic commands I use for working with the Rakudo git repository on a regular basis. This is based on a very svn-centric view of working with a repository; git allows other management models, but this one seems to work well for Rakudo. Note that I have a commitbit to the Rakudo master repository -- see below for the workflow for non-commitbit users. 1. To checkout a copy of the master repository: {{{ git clone git@github.com:rakudo/rakudo.git }}} 2. To modify files in my local copy of the repository {{{ cd rakudo vi src/foo.txt }}} 3. To commit those modified files to my local copy of the repository, any of {{{ git commit src/foo.txt # just one file git commit src # all modified files in src/ git commit . # all modified files in current dir and below }}} 4. To add and commit a file to the local repo {{{ git add src/bar.txt git commit src/bar.txt }}} 5. To grab any other updates from the master repository {{{ git pull }}} 6. To push the changes in my local repository back to the master repository {{{ git push }}} That covers 90% of my usage of git for the Rakudo repository. If I didn't have a commitbit to the master repository, a simple mechanism for creating a patch that can be submitted to RT is: 1. Get a copy of the master repository {{{ git clone git://github.com/rakudo/rakudo.git # note this is different for non-committers }}} 2. Modify files in my local repository {{{ vi src/foo.txt }}} 3. Format the patch for RT: {{{ git diff >mypatch.diff # send mail to rakudobug@perl.org with mypatch.diff as an attachment }}}