En branch eller förgrening är ett begrepp inom versionshantering, exempelvis inom ett programutvecklingsprojekt eller vid författande av dokument. En förgrening är en uppdelning av utvecklingen i två parallella versionssekvenser (grenar eller kodlinjer, motsvarande utvecklingslinjer inom biologin) så att ändringar kan ske samtidigt i båda grenarna. Grenarna beskrivs som barn till eller kopior av den överordnade ursprungliga föräldragrenen (huvudgrenen, eng. mainline eller trunk).

Syftet med att skapa en branch kan vara att prova att utveckla en ny funktion utan att fördröja släpp av programversioner och programfixar, och riskera att destabilisera kodbasen. Att underhålla flera grenar kan emellertid vara resurskrävande. En förgrening syftar till att senare kunna sammanföras eller integreras med den överordnade grenen, genom att förändringar som gjorts i grenarna sedan förgreningen inträffade synkroniseras och testas.

En branch skiljer sig från en fork (avknoppning), som inte har till syfte att sammanföras med det ursprungliga projektet, utan innebär att ett nytt projekt skapas av en separat grupp utvecklare, exempelvis på grund av en schism i ett öppen källkodsprojekt.

Illustration som exemplifierar att förgrening (orange) sker vid tre tillfällen, och att dessa sammanförs (rött) vid två tillfällen med trunken (grönt).