Существует множество различных способов в зависимости от того, как далеко вы продвинулись и на какой ветке (ветвях) вы хотите их использовать.
Возьмем классическую ошибку:
$ git checkout master
... pause for coffee, etc ...
... return, edit a bunch of stuff, then: oops, wanted to be on develop
Итак, теперь вы хотите, чтобы эти изменения, которые вы еще не зафиксировали в master, были в develop.
Если у вас еще нет develop, метод тривиален:
$ git checkout -b develop
Это создаст новую ветку develop, начиная с того места, где вы сейчас находитесь. Теперь вы можете зафиксировать, и все новые вещи находятся на develop.
У вас есть develop. Посмотрите, позволит ли Git вам переключиться без каких-либо действий:
$ git checkout develop
Это либо удастся, либо жаловаться. Если получится, отлично! Просто совершить. Если нет (error: Your local changes to the following files would be overwritten ...), у вас все еще есть много вариантов.
Самый простой, вероятно, git stash (как сказали все другие ответчики, которые опередили меня, нажав post). Запустите git stash save или git stash push,1 или просто git stash, что является сокращением от save / push:
$ git stash
Это коммит вашего кода (да, он действительно делает некоторые коммиты) с использованием странного метода, не связанного с ветвями. Коммиты, которые он делает, не находятся «в» какой-либо ветке, но теперь безопасно хранятся в репозитории, поэтому теперь вы можете переключать ветки, а затем «применить» тайник:
$ git checkout develop
Switched to branch 'develop'
$ git stash apply
Если все пойдет хорошо, и вам понравится результат, вам следует git stash drop заначку. Это удаляет ссылку на странные коммиты, не относящиеся к ветке. (Они все еще находятся в репозитории, и иногда их можно получить в экстренной ситуации, но в большинстве случаев вы должны считать, что в этот момент они исчезли.)
Шаг apply выполняет слияние спрятанных изменений, используя мощный базовый механизм слияния Git, такой же, как и при слиянии ветвей. Это означает, что вы можете получить «конфликты слияния», если ветка, над которой вы работали по ошибке, достаточно отличается от ветки, над которой вы хотели работать. Поэтому рекомендуется внимательно изучить результаты, прежде чем предположить, что тайник был применен правильно, даже если сам Git не обнаружил никаких конфликтов слияния.
Многие люди используют git stash pop, что является сокращением от git stash apply && git stash drop. Это нормально, но это означает, что если приложение приведет к беспорядку, и вы решите, что не хотите идти по этому пути, вы не сможете легко вернуть тайник. Вот почему я рекомендую отдельно apply, проверять результаты, drop только если/когда они удовлетворены. (Конечно, это вводит еще один момент, когда вы можете сделать еще один перерыв на кофе и забыть, что вы делали, вернуться и сделать неправильно вещь, так что это не идеальное лекарство.)
1 save в git stash save — это старый глагол для создания нового тайника. Git версии 2.13 представил новый глагол, чтобы сделать вещи более совместимыми с pop и добавить больше параметров в команду создания. В Git версии 2.16 старый глагол официально объявлен устаревшим (хотя он по-прежнему работает в Git 2.23, который является последним выпуском на момент редактирования этой статьи).
person
torek
schedule
27.02.2014
git stashgit-scm.com/book/en/Git-Tools-Stashing а> - person zerkms   schedule 28.02.2014