From: Toby White Date: Tue, 17 Mar 2009 15:21:40 GMT Subject: Mirroring repository state, with branches and submodules. Message-ID: <623D3837-E899-49AF-9A37-F667A311EE58@gmail.com> I have a short script which does the following for a remote git rpository: Clones it (checking out a working tree) Makes tracking local branches for all remote branches Init/updates all submodules. This gives me an up-to-date mirror of a remote repository. I treat this as essentially read-only. What I now want to do is have some command which will update this local mirror to reflect exactly the state of the remote mirror; even when the remote mirror may have rebased history. So far, I'm doing the following: git fetch for BRANCH in $(git branch -r | cut -d / -f 2); do git checkout $BRANCH git reset --hard origin/$BRANCH done git submodule update --init but I'm not sure if that's actually the right way to do it, or if I'm missing any corner cases. Am I safe to use it? Thanks, Toby