_master
$ git rebase master
```
and/or
```
$ git checkout topic_ACE+TAO+CIAO-6_3_1
$ git rebase ACE+TAO+CIAO-6_3_1
```
### If you have forked upstream
If you have a fork of upstream, you should probably define upstream as one of your remotes:
```
$ git remote add upstream git://github.com/DOCGroup/ATCD.git
```
You should now be able to fetch and pull changes from upstream into your local repository, though you should make sure you have no uncommitted changes. (You *do* use topic branches, right?)
```
$ git fetch upstream
$ git fetch upstream --tags
$ git checkout master
$ git pull upstream master
$ git push origin master
$ git checkout ACE+TAO+CIAO-6_3_1
$ git pull upstream ACE+TAO+CIAO-6_3_1
$ git push origin ACE+TAO+CIAO-6_3_1
```
A script can do this for you - have a look at [sync_with_upstream](https://github.com/maniksurtani/githelpers/blob/master/contributors/sync_with_upstream).
#### Updating topic branches
Again, you should rebase your topic branches at this point so that they are up-to-date and when pulled by upstream, upstream can fast-forward the release branches:
```
$ git checkout topic_master
$ git rebase master
```
and/or
```
$ git checkout topic_ACE+TAO+CIAO-6_3_1
$ git rebase ACE+TAO+CIAO-6_3_1
```
The sync_with_upstream script can do this for you if your topic branch naming conventions match the script.
## GIT Enhancements
There are many ways git usage may be enhanced:
* Autocompletion on the command line via Bash or ZSH
* Custom shell prompts to display GIT repository information (again, available in Bash & ZSH)
* Coloring GIT Terminal output
* Visual tools such as gitk, qgit, Eclipse integration, etc.
* etc.