Podobnie jak inni odpowiedzieli, w Git nie powinieneś martwić się o niedokończony kod w swoich osobistych oddziałach. Jeśli jednak z jakiegoś powodu naprawdę naprawdę nie chcesz, aby Twoja niedokończona praca dotknęła głównego repozytorium, możesz skorzystać z rozproszonej natury Git!
Istnieje proste narzędzie o nazwie, git bundlektóre może pomóc w łatwym przekazywaniu zmian bez centralnego repozytorium. Najpierw sklonuj repozytorium:
git clone https://github.com/octocat/Spoon-Knife.git working_copy_1
cd working_copy_1
wprowadź zmiany i przekaż je do tymczasowego oddziału:
git checkout -b tmp_branch
git commit -a -m "temporary changes"
Teraz spakuj je zmiany:
git bundle create ../tmp.bundle tmp_branch
Teraz masz plik pakietu, który możesz wysłać na nowy komputer. Jak go tam wykorzystujesz? Utwórzmy nową kopię roboczą:
cd ..
git clone https://github.com/octocat/Spoon-Knife.git working_copy_2
cd working_copy_2
musimy traktować nasz pakiet jako innego pilota, abyśmy mogli pobrać z niego zmiany
git remote add tmp ../tmp.bundle
git fetch tmp
ponieważ chodziło o przeniesienie zmian bez pozostawiania śladu, będziemy chcieli zgnieść je do kopii roboczej, aby stracić tymczasowe zatwierdzenie:
git merge tmp/tmp_branch --squash
i wszystko, co pozostało, to usunąć tymczasowego pilota:
git remote remove tmp
ALTÓWKA! Zmiany zostały przeniesione do nowej kopii roboczej bez pozostawiania śladu ani oddziału, ani zatwierdzenia!
Ale tak naprawdę - ten proces jest dość długi i uciążliwy. To jest Git, a nie SVN - naprawdę nie powinno być żadnego powodu, aby nie wypychać osobistego oddziału do centralnego repozytorium.