.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. .SH "SEE ALSO" git\-rebase(1).