Внесение незафиксированных изменений в другую ветку

Я использую sourcetree, и только ветка master клонируется локально. Так что я делал все свои изменения в основной ветке, и, наконец, у меня есть много незафиксированных изменений здесь, на моей локальной машине.

Но сейчас я решил не толкать их в основную ветку, а скорее развивать ветку - довольно старую ветку в моем проекте. Он существует по происхождению, но не локально.

Как я могу сначала объединить мастер для разработки, чтобы они были одинаковыми, а затем зафиксировать и протолкнуть мои изменения в ветку разработки, оставив мастера нетронутыми?

Я думал о:

git checkout origin/develop;
git merge master;

Хорошо, это решило бы первую проблему, я думаю, но тогда мои локальные изменения не были бы замечены - дерево исходных текстов рассматривает их как основные изменения, я считаю.

Я прошу об этом, потому что я не хочу ничего испортить в этом проекте.

Итак - есть предложения?

1 ответ

До git checkout а также git merge, бежать

git stash

чтобы сохранить ваши незафиксированные изменения в Git stash и удалить их из рабочего дерева. Затем, после объединения, запустите

git stash apply
git stash drop

применить эти изменения, которые вы спрятали в вашем рабочем дереве (теперь на develop ветка) и удалите изменения из тайника. Вы могли бы вместо этого бежать git stash pop, который объединяет apply а также drop, но это имеет некоторое хитрое поведение (при попадании в конфликты и тому подобное), что делает его лучше обычно просто запустить apply а также drop по отдельности.

Другие вопросы по тегам