GIT information

This discussion is mostly for those of us with experience using other source control methods such as CVS and SVN, and are now working with Git / Github for Valyria Tear. I'd like to try and pool some resources into here as to the "standard" ways of doing things, and tips and tricks for people who are new to git.
So let me start with what I know so far:
Getting your own "master" repo of the current code:
1) Request a Fork() from github
from Roots:
Pro Git Book
http://git-scm.com/book
Article on GitHub Workflow
http://scottchacon.com/2011/08/31/github-flow.html
a method of forking
https://help.github.com/articles/fork-a-repo
From Bertram; his recommended way of pulling from the master branch
When resyncing with my repo, I'd advise you to use this command:
git pull --rebase 'my_repo_git_address'
Why? Because:
git pull is roughly equivalent to: git fetch + git merge.
And the --rebase option is an awesome one making every unmerged commits made on your own, be re-applied on top of your own git history.
This has several qualities:
1. It prevents the creation of merge points, which make unnecessary noise in your pull requests.
2. It makes sure your commits are always compatible with the reference repo.
3. It doesn't change the content of pull requests while updating your repository branch.
For those Windows users out there
1) I recommend PortableGit as opposed to the standard binary install. Get used to the Bash shell version of this, and I think you'll find it better than the normal version. I recommend it because it doesn't make an nasty changes to your registry hive, and more importantly it allows you to move your local git repo AND the binary around on a USB drive.
http://code.google.com/p/msysgit/downloads/list
Proxy settings for git
1) Determine your proxy information. If you have a standard .pac proxy it is usually port 8080, but that may not neccesarily be the case. You can get most of this info from your Internet Settings or from your local Admin
2) run:
git config --global http.proxy <proxy info>
git config --system http.sslcainfo /bin/curl-ca-bundle.crt (this step may be windows only...not sure)
working with branches
making a local branch:
git checkout -b mybranch
pushing to branch:
git push origin mybranch
and finally, deleting a branch:
git branch -d mybranch
deleting a remote branch (AKA the one you pushed)
git push origin :mybranch
past questions (now answered by members)
Questions:
1) is it best to work directly against my master? Or should I immediately branch so that when Bertram / someone else makes an "upstream" commit, I can pull to the master and trickle down (other wise, it seems I have to roll back commits and looks like a headache...)
2) is git mergetool particulary useful for the above problem
3) are there better ways to get the code and maintain a "my master" vs "global master" ?
So let me start with what I know so far:
Getting your own "master" repo of the current code:
1) Request a Fork() from github
from Roots:
Pro Git Book
http://git-scm.com/book
Article on GitHub Workflow
http://scottchacon.com/2011/08/31/github-flow.html
a method of forking
https://help.github.com/articles/fork-a-repo
From Bertram; his recommended way of pulling from the master branch
When resyncing with my repo, I'd advise you to use this command:
git pull --rebase 'my_repo_git_address'
Why? Because:
git pull is roughly equivalent to: git fetch + git merge.
And the --rebase option is an awesome one making every unmerged commits made on your own, be re-applied on top of your own git history.
This has several qualities:
1. It prevents the creation of merge points, which make unnecessary noise in your pull requests.
2. It makes sure your commits are always compatible with the reference repo.
3. It doesn't change the content of pull requests while updating your repository branch.
For those Windows users out there
1) I recommend PortableGit as opposed to the standard binary install. Get used to the Bash shell version of this, and I think you'll find it better than the normal version. I recommend it because it doesn't make an nasty changes to your registry hive, and more importantly it allows you to move your local git repo AND the binary around on a USB drive.
http://code.google.com/p/msysgit/downloads/list
Proxy settings for git
1) Determine your proxy information. If you have a standard .pac proxy it is usually port 8080, but that may not neccesarily be the case. You can get most of this info from your Internet Settings or from your local Admin
2) run:
git config --global http.proxy <proxy info>
git config --system http.sslcainfo /bin/curl-ca-bundle.crt (this step may be windows only...not sure)
working with branches
making a local branch:
git checkout -b mybranch
pushing to branch:
git push origin mybranch
and finally, deleting a branch:
git branch -d mybranch
deleting a remote branch (AKA the one you pushed)
git push origin :mybranch
past questions (now answered by members)
Questions:
1) is it best to work directly against my master? Or should I immediately branch so that when Bertram / someone else makes an "upstream" commit, I can pull to the master and trickle down (other wise, it seems I have to roll back commits and looks like a headache...)
2) is git mergetool particulary useful for the above problem
3) are there better ways to get the code and maintain a "my master" vs "global master" ?