Como otros han respondido, con Git no debería importarle el código no terminado en sus sucursales personales. Sin embargo, si por alguna razón, realmente no quieres que tu trabajo inacabado toque el repositorio principal, ¡puedes utilizar la naturaleza distribuida de Git!
Hay una herramienta simple llamada git bundleque puede ayudarlo a pasar fácilmente los cambios sin un repositorio central. Primero, clone el repositorio:
git clone https://github.com/octocat/Spoon-Knife.git working_copy_1
cd working_copy_1
hacer algunos cambios y confirmarlos en una rama temporal:
git checkout -b tmp_branch
git commit -a -m "temporary changes"
Ahora, agrupa los cambios:
git bundle create ../tmp.bundle tmp_branch
Ahora tiene un archivo de paquete que puede enviar por correo a su nueva máquina. ¿Cómo lo usas allí? Creemos una nueva copia de trabajo:
cd ..
git clone https://github.com/octocat/Spoon-Knife.git working_copy_2
cd working_copy_2
necesitamos tratar nuestro paquete como otro control remoto, para que podamos obtener los cambios de él
git remote add tmp ../tmp.bundle
git fetch tmp
Dado que el objetivo era transferir los cambios sin dejar rastro, querremos aplastarlos en la copia de trabajo para perder la confirmación temporal:
git merge tmp/tmp_branch --squash
y todo lo que queda es eliminar el control remoto temporal:
git remote remove tmp
¡VIOLA! ¡Los cambios se transfirieron a la nueva copia de trabajo sin dejar rastro de rama ni confirmación!
Pero en realidad, este proceso es bastante largo y engorroso. Esto es Git, no SVN: realmente no debería haber ninguna razón para no empujar su rama personal al repositorio central.