Внесение незафиксированных изменений в другую ветку
Я использую 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
по отдельности.