Відповіді:
Звучить як все, що вам потрібно:
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