Views: 666
Be organized with your git, especially if you have worldwide contributers.
git checkout -b iss53 Switched to a new branch "iss53"
This is shorthand for:
$ git branch iss53 $ git checkout iss53
Figure 19. Creating a new branch pointerYou work on your website and do some commits. Doing so moves the
iss53
branch forward, because you have it checked out (that is, yourHEAD
is pointing to it):$ vim index.html $ git commit -a -m 'added a new footer [issue 53]'
Figure 20. Theiss53
branch has moved forward with your workNow you get the call that there is an issue with the website, and you need to fix it immediately. With Git, you don’t have to deploy your fix along with the
iss53
changes you’ve made, and you don’t have to put a lot of effort into reverting those changes before you can work on applying your fix to what is in production. All you have to do is switch back to yourmaster
branch.However, before you do that, note that if your working directory or staging area has uncommitted changes that conflict with the branch you’re checking out, Git won’t let you switch branches. It’s best to have a clean working state when you switch branches. There are ways to get around this (namely, stashing and commit amending) that we’ll cover later on, in Stashing and Cleaning. For now, let’s assume you’ve committed all your changes, so you can switch back to your
master
branch:$ git checkout master Switched to branch 'master'
At this point, your project working directory is exactly the way it was before you started working on issue #53, and you can concentrate on your hotfix. This is an important point to remember: when you switch branches, Git resets your working directory to look like it did the last time you committed on that branch. It adds, removes, and modifies files automatically to make sure your working copy is what the branch looked like on your last commit to it.
Next, you have a hotfix to make. Let’s create a
hotfix
branch on which to work until it’s completed:$ git checkout -b hotfix Switched to a new branch 'hotfix' $ vim index.html $ git commit -a -m 'fixed the broken email address' [hotfix 1fb7853] fixed the broken email address 1 file changed, 2 insertions(+)
x.html’: {local}: modified file {remote}: modified file Hit return to start merge resolution tool (opendiff): If you want to use a merge tool other than the default (Git chose opendiff in this case because the command was run on a Mac), you can see all the supported tools listed at the top after “one of the following tools.” Just type the name of the tool you’d rather use. Note If you need more advanced tools for resolving tricky merge conflicts, we cover more on merging in Advanced Merging. After you