Suppose, I have multiple branches: feature_1, branched from HEAD of master, then feature_2 branched from HEAD of feature_1 and feature_3 branched from HEAD of feature_2.
And then I discover a bug in feature_1. I fix it and commit, now feature_2 and feature_3 still contain this bug. One way to fix this is to merge feature_1 onto feature_2 and feature_3.
Is this right way to do this?
Cherry picking is mostly used exactly for what you described.
http://linux.die.net/man/1/git-cherry-pick