Come altri hanno risposto, con Git non dovresti preoccuparti del codice non finito nelle tue filiali personali. Tuttavia, se per qualche motivo, davvero non vuoi davvero che il tuo lavoro incompiuto tocchi mai il repository principale, puoi utilizzare la natura distribuita di Git!
Esiste un semplice strumento chiamato git bundle
che può aiutarti a passare facilmente le modifiche senza un repository centrale. Innanzitutto, clonare il repository:
git clone https://github.com/octocat/Spoon-Knife.git working_copy_1
cd working_copy_1
apportare alcune modifiche e impegnarle in un ramo temporaneo:
git checkout -b tmp_branch
git commit -a -m "temporary changes"
Ora, raggruppa le modifiche:
git bundle create ../tmp.bundle tmp_branch
Ora hai un file bundle che puoi spedire al tuo nuovo computer. Come lo usi lì? Creiamo una nuova copia di lavoro:
cd ..
git clone https://github.com/octocat/Spoon-Knife.git working_copy_2
cd working_copy_2
dobbiamo considerare il nostro bundle come un altro telecomando, in modo da poter recuperare le modifiche da esso
git remote add tmp ../tmp.bundle
git fetch tmp
dal momento che il punto era trasferire le modifiche senza lasciare traccia, vorremmo schiacciarle nella copia di lavoro per perdere il commit temporaneo:
git merge tmp/tmp_branch --squash
e tutto ciò che rimane è rimuovere il telecomando temporaneo:
git remote remove tmp
VIOLA! Le modifiche sono state trasferite nella nuova copia di lavoro senza lasciare traccia né di diramazione né commit!
Ma davvero - questo processo è piuttosto lungo e complicato. Questo è Git, non SVN: in realtà non dovrebbe esserci alcun motivo per non spingere il proprio ramo personale nel repository centrale.