Comme d'autres l'ont répondu, avec Git, vous ne devriez pas vous soucier du code non fini dans vos branches personnelles. Cependant, si pour une raison quelconque, vous ne voulez vraiment vraiment pas que votre travail inachevé touche le référentiel principal, vous pouvez utiliser la nature distribuée de Git!
Il existe un outil simple nommé git bundle
qui peut vous aider à transmettre facilement les modifications sans référentiel central. Tout d'abord, clonez le dépôt:
git clone https://github.com/octocat/Spoon-Knife.git working_copy_1
cd working_copy_1
apporter des modifications et les valider dans une branche temporaire:
git checkout -b tmp_branch
git commit -a -m "temporary changes"
Maintenant, regroupez les modifications:
git bundle create ../tmp.bundle tmp_branch
Vous avez maintenant un fichier groupé que vous pouvez envoyer à votre nouvelle machine. Comment l'utilisez-vous là-bas? Créons une nouvelle copie de travail:
cd ..
git clone https://github.com/octocat/Spoon-Knife.git working_copy_2
cd working_copy_2
nous devons traiter notre bundle comme une autre télécommande, afin que nous puissions récupérer les modifications
git remote add tmp ../tmp.bundle
git fetch tmp
puisque le but était de transférer les modifications sans laisser de trace, nous voulons les écraser dans la copie de travail afin de perdre la validation temporaire:
git merge tmp/tmp_branch --squash
et tout ce qui reste est de supprimer la télécommande temporaire:
git remote remove tmp
ALTO! Les modifications ont été transférées dans la nouvelle copie de travail sans laisser de trace ni de branche ni de commit!
Mais vraiment - ce processus est assez long et lourd. C'est Git, pas SVN - il ne devrait vraiment pas y avoir de raison de ne pas pousser votre branche personnelle vers le référentiel central.