Відповіді:
Звучить як все, що вам потрібно:
git stash
git checkout branch123
git stash apply
Тоді вам слід повернутися до власної гілки, не торкаючись до ведучої гілки.
stashекономить локальні модифікації, а потім stash applyповертає їх назад.
git reset --hard HEADі ви повертаєтесь до останнього зобов’язання, яке ви зробили у своїй головній галузі.
Прийнята відповідь є найбільш ретельною, але є особливий випадок, коли можна спростити. Якщо файли, які ви змінили у робочому каталозі, однакові і в обох, masterі branch123ви можете просто зробити
git checkout branch123
Не потрібно нічого приховувати, оскільки поведінка за замовчуванням checkout- НЕ перезаписувати змінені файли у вашій робочій каталозі, тому ви нічого не втратите. (Про це фактично згадував у коментарях перший Каскабель)
Як згадували в коментарях інші люди, якщо branch123цього ще немає, ви можете зробити
git checkout -b branch123
Виходячи з того, що я тут знайшов .
git checkout -b newbranch
masterі branch123. Дивіться мою відредаговану відповідь.
git stash це те, що вам потрібно.
повне пояснення можна знайти в Git-Tools-Stashing
Оскільки можна створити нову гілку, але неможливо перевірити наявну гілку, перевіривши файли, я знайшов наступний трюк, використовуючи для роботи тимчасову гілку:
Цей сценарій працює щонайменше із плагіном VS 2015 Git, але, швидше за все, буде працювати з будь-яким інструментом git.
EDIT: Я дізнався, що вам доведеться виконати ребазування (git rebase --onto) тимчасової гілки перед виконанням об'єднання. Інакше зміни в master будуть включені в об'єднання. Додатковий крок 3.5 вище. Детальніше про ребауз дивіться тут: https://git-scm.com/book/en/v2/Git-Branching-Rebasing