Как и другие ответили, с Git вам не нужно заботиться о незавершенном коде в ваших личных ветках. Однако, если по какой-то причине вы действительно не хотите, чтобы ваша незаконченная работа когда-либо касалась основного репо, вы можете использовать распределенную природу Git!
Существует простой инструмент под названием, git bundle
который может помочь вам легко передавать изменения без центрального репозитория. Сначала клонируем репо:
git clone https://github.com/octocat/Spoon-Knife.git working_copy_1
cd working_copy_1
внесите некоторые изменения и передайте их во временную ветку:
git checkout -b tmp_branch
git commit -a -m "temporary changes"
Теперь объедините их изменения:
git bundle create ../tmp.bundle tmp_branch
Теперь у вас есть пакетный файл, который вы можете отправить на ваш новый компьютер. Как вы используете это там? Давайте создадим новую рабочую копию:
cd ..
git clone https://github.com/octocat/Spoon-Knife.git working_copy_2
cd working_copy_2
нам нужно рассматривать наш пакет как еще один удаленный, чтобы мы могли получить изменения из него
git remote add tmp ../tmp.bundle
git fetch tmp
так как весь смысл состоял в том, чтобы передать изменения, не оставляя следа, мы хотим сжать их в рабочую копию, чтобы потерять временную фиксацию:
git merge tmp/tmp_branch --squash
и все, что осталось, это удалить временный пульт:
git remote remove tmp
VIOLA! Изменения были перенесены в новую рабочую копию, не оставив следов ни веток, ни коммитов!
Но на самом деле - этот процесс довольно долгий и громоздкий. Это Git, а не SVN - на самом деле не должно быть никаких причин не подталкивать вашу личную ветку к центральному репо.