Come gli altri hanno risposto, con Git non dovresti preoccuparti del codice non finito nelle tue filiali personali. Tuttavia, se per qualche motivo, davvero davvero non vuoi che il tuo lavoro incompiuto tocchi mai il repository principale, puoi utilizzare la natura distribuita di Git!
C'è un semplice strumento chiamato git bundle
che può aiutarti a passare facilmente le modifiche senza un repository centrale. In primo luogo, clonare il repository:
git clone https://github.com/octocat/Spoon-Knife.git working_copy_1
cd working_copy_1
apporta alcune modifiche e inseriscile 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 alla tua nuova macchina. 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 trattare il nostro bundle come un altro telecomando, quindi possiamo recuperarne le modifiche
git remote add tmp ../tmp.bundle
git fetch tmp
dal momento che l'intero punto era di 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 alla nuova copia di lavoro senza lasciare traccia né di ramo né commit!
Ma davvero - questo processo è piuttosto lungo e macchinoso. Questo è Git, non SVN: non ci dovrebbe essere alcun motivo per non spingere il tuo ramo personale al repository centrale.