Помните, что с Git ваши изменения и ветки принадлежат вам, пока вы не отправите их в другое место.Так что это совершенно безопасно и даже отличная идея - зафиксировать свои локальные изменения, как только вы выполнили определенное количество работы (вы всегда можете rebase
и раздавить их позже).
В вашем случае,вот что вы могли бы сделать (хотя филиал X
не был «готов»):
git add .
git commit -a -M'WIP: (describe where you are)'
git checkout Y
Филиал X
на ваших пультах остается без изменений, но ваша локальная работа безопасна.Никто другой не увидит его, пока вы не push
сделаете это на удаленном компьютере.
Если вы хотите сохранить X
в его последнем чистом состоянии, просто проверьте новую ветку и добавьте в нее ваши коммиты:
git checkout -b pick-a-descriptive-name-for-the-branch
git commit ... # commits land on this new branch
git checkout Y
Теперь X
такой же, каким был до того, как вы начали вносить последний набор изменений, pick-a-descriptive-name-for-the-branch
содержит изменения, в которых вы находились, и Y
не затрагивается.
Вы можете легко cherry-pick
последний коммит pick-a-descriptive...
до X
, когда будете готовы продолжить работу:
git checkout pick-a-descriptive-name-for-the-branch
git log -1 # Note the SHA1 of the commit, which is your work in progress
git checkout X
git cherry-pick -n SHA1
Это будет принимать изменения с последнего коммита pick-a-descriptive-name-for-the-branch
и добавьте их к X
, не совершая их.