.TH GIT-REBASE-SUBTREE 1 "@PACKAGE_TARNAME@ @PACKAGE_VERSION@" "2007\-11\-02" "@PACKAGE_NAME@ @PACKAGE_VERSION@" .SH NAME git\-rebase\-subtree \- rebase set of interdependant git branches .SH SYNOPSIS .B "git\-rebase\-subtree" .I "" .I "" .PP .B "git\-rebase\-subtree" .I "\-\-reverse" .I "" .I "" .SH DESCRIPTION So you are tracking some upstream's git repo and maintain your own set of interdependent feature branches ("branch subtree"). .PP And you want to keep that "branch subtree" up-to-date in relation to upstream so it stays sweet, small, and clean, increasing the chances that upstream will finally pick something up from it. .PP Initial situation: Local branch master tracks remote origin. .PP Note: Letters A\-Z are branch names, not revs. .PP Old tree: .nf *\-\-F / origin=master\-\-A\-\-B\-\-G \\ *\-\-D\-\-H \\ *\-\-*\-\-K .fi .PP Generate the following configuration using .I "git config rebase-subtree.subtree" .nf master A A B B F B G A D D H D K .fi .PP After "git\-fetch \-v": .nf *\-\-F / master\-\-\-A\-\-B\-\-G \\ \\ * *\-\-D\-\-H \\ \\ origin' *\-\-*\-\-K .fi .PP After hypothetical "git\-rebase\-subtree origin master": .nf *'\-\-F' / origin'=master'\-\-A'\-\-B'\-\-G' \\ *'\-\-D'\-\-H' \\ *'\-\-*'\-\-K' .fi .SS "REVERSE OPERATION" .PP Old tree: .nf *\-\-F / master\-\-Y\-\-A\-\-B\-\-G \\ *\-\-D\-\-H \\ *\-\-*\-\-K .fi .PP After hypothetical "git\-rebase\-subtree \-\-reverse master Y": .nf Y *'\-\-F' / / master\-\-A'\-\-B'\-\-G' \\ *'\-\-D'\-\-H' \\ *'\-\-*'\-\-K' .fi .SH "BUGS" .TP .B "Lacks generality (fixation about 'master')" Yes. .TP .B "Needs complicated config" Yes. Auto-generating the graph may be possible. .TP .B "Needs merge conflict handling" Definitely. At the moment, it just messes up your branch tree if some error happens during the rebase. .TP .B "Needs proper error handling" Definitely. Possibly just renaming the .I rebasetree-old/foo branches to .I foo could do the job. Needs more investigation, though. .TP .B "Should bail out if old/foo exists and is not equal to foo" Yes. .SH "SEE ALSO" git\-rebase(1).