First things first, the repo is already created on git hub so I'll just check it out using :
$ git clone git://github.com/torquebox/torquebox.git
Since Torquebox is using a notion of submodules :
I need to checkout the underlying submodules, this is achieved by doing :
$ cd torquebox
$ git submodule init
$ git submodule update
Since the master branch is locked up, I use for each module the following command to be able to push my changes to the master branch :
$ git remote add central git@github.com:torquebox/torquebox.git
$ cd torquebox-core
$ git remote add central git@github.com:torquebox/torquebox-core.git
# and so on for each submodule
Then I hack away and do my changes in the various torquebox project. When I'm ok with my changes, I use the following to commit :
$ git commit -a
If there is files or directories that needs to be added to the commit, I usually do :
$ git add 'filename'
# example : git add src/main/java/org/torquebox/ruby/enterprise/sip/sip_environment_builder.rb
This will commit things only locally, then I need to push everything to the central repo located on github, this is done by doing :
$ git push central master
Sometimes I get into a no-branch strange state (don't ask me why :-)) and I end up in no branch at all, you can check on which branch you are by doing :
$ git branch -a
The following command can be useful too :
$ git status
so when I'm on no branch, to recover, I use the following commands sequence :
# going back on master branch
$ git checkout master
# checking the lost commits on the no branch
$ git fsck --lost-found
# the previous command will out put something like
# dangling tree a628672f320e4e311a59ce4bcd879125500141ff
# dangling commit 69ade48b3183ffc7a4e09cf87a1d0e5cedaa39bc
# to merge the last commit into the master branch I just switched to
$ git merge 69ade48b3183ffc7a4e09cf87a1d0e5cedaa39bc
#then I can push to github again
$ git push central master.
I'll update this blog post once in a while on my path to non newbiness to git.
Please comment to make me understand things a bit further or advice me on some good eclipse plugin that would avoid me such pain...
Back to git now
Update : Ranga gave a link with a few more tips http://sipx-wiki.calivia.com/index.php/Mirroring_sipXecs_subversion_repository_with_git#Making_and_committing_changes
Update 2 : very nice and thorough visual tutorial http://www.ralfebert.de/blog/tools/visual_git_tutorial_1/