Я работал над проектом, но, к сожалению, я забыл переключиться на свою ветку, и поэтому работал над мастером
Как я могу скопировать работу (3 файла), которую я сделал здесь, из master, в мою ветку (называемую, например, branch123 ), не подходя к master?
stash
сохраняет локальные модификации, а затемstash apply
возвращает их обратно.git reset --hard HEAD
и вы вернулись к последнему коммиту, который вы сделали в своей основной ветке.Принятый ответ является наиболее полным, но есть особый случай, когда вы можете упростить. Если файлы, которые вы изменили в рабочем каталоге, идентичны в обоих,
master
иbranch123
вы можете просто сделатьНе нужно ничего прятать, поскольку по умолчанию поведение
checkout
НЕ перезаписывает измененные файлы в вашем рабочем каталоге, поэтому вы ничего не потеряете. (Это было на самом деле упомянуто в комментариях сначала Каскабель)Как уже упоминали другие люди в комментариях, если вы
branch123
еще не существует, вы можете сделатьНа основании того, что я нашел здесь .
источник
git checkout -b newbranch
master
иbranch123
. Смотрите мой отредактированный ответ.git stash
это то, что вам нужно.полное объяснение можно найти в Git-Tools-Stashing
источник
Так как можно создать новую ветку, но невозможно извлечь существующую ветку, пока файлы извлечены, я обнаружил следующий прием, использующий временную ветку:
Этот сценарий работает по крайней мере с плагином VS 2015 Git, но, скорее всего, будет работать с любым инструментом Git.
РЕДАКТИРОВАТЬ: я обнаружил, что вам придется выполнить rebase (git rebase --onto) временную ветвь перед выполнением слияния. В противном случае изменения в основной записи будут включены в слияние. Дополнительный шаг 3.5 выше. Подробнее о ребазе читайте здесь: https://git-scm.com/book/en/v2/Git-Branching-Rebasing.
источник