Why git_remote_branch?
The basic idea for git_remote_branch is to trivialize the interaction with remote branches in simple situations.
For now git_remote_branch assumes that the local and remote branches have the same name. Multiple origins are supported.
Another goal of git_remote_branch is to help teach the real underlying git commands. Each operation done on your behalf is displayed at the console.
Installation
sudo gem install git_remote_branch
If you have an older version of Rubygems (older than 1.2), you will have to manually install the “colored” gem.
sudo gem install colored
If you’re on Windows, you must install “colored” and “win32console” manually (before or after installing git_remote_branch doesn’t matter).
gem install win32console colored
See the “Bleeding edge and development” section the end of this document for more details about fiddling with the source of git_remote_branch.
Usage
Notes:
-
parts between brackets are optional
-
When ‘origin_server’ is not specified, the name ‘origin’ is assumed.
Available commands (with aliases):
Help
$ grb [-h|help] #=> Displays help
create (alias: new)
Create a new local branch as well as a corresponding remote branch from the branch you are currently on. Automatically track the new remote branch (useful for pulling and merging). Switch to the new branch.
$ grb create branch_name [origin_server]
publish (aliases: remotize)
Publish an existing local branch to the remote server. Set up the local branch to track the new remote branch. Switch to the new branch.
$ grb publish branch_name [origin_server]
delete (aliases: destroy, kill, remove)
Delete the remote branch then delete the local branch. The local branch is not deleted if there are pending changes.
$ grb delete branch_name [origin_server]
track (aliases: follow grab fetch)
Track an existing remote branch locally.
$ grb track branch_name [origin_server]
rename (aliases: rn, mv, move)
To rename the branch you’re currently on. Rename the remote branch by copying then deleting the old name. Checkout a new local tracking branch with the new name and delete the local branch with the old name.
$ grb rename branch_name [origin_server]
explain
All commands can be prepended by the word ‘explain’. Instead of executing the command, git_remote_branch will simply output the list of commands you need to run to accomplish that goal. Examples:
$ grb explain create
git_remote_branch version 0.2.7
List of operations to do to create a new remote branch and track it locally:
git push origin master:refs/heads/branch_to_create
git fetch origin
git branch --track branch_to_create origin/branch_to_create
git checkout branch_to_create
$ grb explain create my_branch github
git_remote_branch version 0.2.7
List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch
More on git_remote_branch
-
Documentation: grb.rubyforge.org
-
Bug tracker: git-remote-branch.lighthouseapp.com/projects/19198-git_remote_branch/overview
-
Mailing list: groups.google.com/group/git_remote_branch
History
git_remote_branch in its current form was inspired by a script created by Carl Mercier and made public on his blog here:
No nonsense GIT, part 1: git-remote-branch
Contributors
-
Mathieu Martin [email protected]
-
Caio Chassot [email protected]
-
Axelson github.com/axelson
-
Carl Mercier github.com/cmer
Legalese
git_remote_branch is licensed under the MIT License. See the file COPYING for details.
Bleeding edge and development
(Notice the keyword “bleeding”)
Installing from GitHub
sudo gem install webmat-git_remote_branch --source=http://gems.github.com
Cloning the repo and installing from your copy
git clone git://github.com/webmat/git_remote_branch.git
rake install
Note that git_remote_branch uses a few more gems for tests. Running any rake task will try to load them due to the way Rake::TestTask works.
sudo gem install thoughtbot-shoulda --source http://gems.github.com
sudo gem install mocha
An attempt is made to require 2 more optional gems: redgreen and ruby-debug