I'm using Git for one of my projects at the moment, and I love it.
However, because I'm the only one working on my project, the only commands I've been using are
git status
git add .
git commit -m 'message here'
git push origin master
I have pushed the project to remote a long time ago ago (I Capistrano for deployment), and all is working great.
Now I want to change the design of the site, but keep the logic intact. I'm guessing I need to create a new branch (let's call it newdesign
) for that.
What I'm wondering, though, is this: if I'm working on the newdesign
branch, and I see a bug in the master
branch, how can I fix the bug on master
and then integrate that bugfix in the newdesign
branch, so that the latter be kept up to date with the actual logic?
let's suppose you have you master and dev branches.
You work on dev for your new features and you do your fix on master.
Then you checkout dev and merge master into dev. This way master is fixed and dev can profit from the fix you made AND keeps it's own history.
Alternatively, you can rebase dev on top of branch. This gives you a "cleaner" history in the sense that you don't have merge points.
See the git guide about merging: http://git-scm.com/docs/git-merge
This is a classic case in which you can take advantage of Git branches. Here is the workflow you should use.
Let's say you've created a
develop
branch stemming frommaster
and you've made a few commits on that branch:Suddenly, you realise that there is a bug on
master
, a bug which you need to fix quickly. Instead of working directly off ofmaster
, you should create a short-lived bug-fix branch, to isolate the bug-fixing task from yourmaster
branch:After making one commit (or more) on the
bugfix
branch to fix the problem,you should make sure that everything works as it should (run tests, etc.). When you're happy with the state of your code on
bugfix
, merge it intomaster
:At that stage, you can push your (now fixed)
master
branch to remote, and delete thebugfix
branch:Now, to integrate the latest changes on
master
intodevelop
, you basically have two options.Merge
master
intodevelop
, by running:Alternatively, rebase
develop
on top ofmaster
, by running:In either case, your
develop
branch will now contain the fix, and you can resume work ondevelop
.