Переместить ветвь фиксирует в текущую как незафиксированные изменения в рабочем каталоге?

Допустим, я работаю над branchA и необходимо временно зафиксировать все незафиксированные изменения. Итак, я создаю branchB и передай все.

Через некоторое время мне нужно перенести все эти изменения обратно в branchA как незафиксированные изменения.

(Некоторые изменения в файлах, которые ранее не отслеживались в репо)

Как мне это сделать? Слияние + сброс? Есть ли простая команда для этого?

Я мог бы также перефразировать этот вопрос как:

Как отменить git branch -b branchB; git add.; git commit; ?

3 ответа

Решение

Предполагая, что вы собираетесь бросить branchB прочь, я бы предложил сделать git merge branchB --squash --no-commit, --no-commit опция гарантирует, что изменения будут применены к вашему рабочему каталогу, в отличие от зафиксированного. --squash опция предотвращает коммит, который вы в итоге делаете, коммитом слияния. Причина, по которой я предлагаю использовать эту опцию, состоит в том, что не стоит делать что-либо, кроме самого слияния, в коммите слияния, и кажется, что вы хотите выполнить еще какую-то работу локально, прежде чем выполнять "реальный" коммит. Кроме того, это предотвращает вашу временную фиксацию на branchB от появления в вашей истории.

Если вы не имеете дело с большим количеством файлов, просто посмотрите отдельные файлы из другой ветки:

git checkout branchB <filename1>
git checkout branchB <filename2>

Это приводит к тому, что файлы находятся во главе другой ветви.

Вы могли бы пойти на cherry-pick --no-commit:

git checkout branchA
git cherry-pick branchB --no-commit

Выше я предполагаю, что все в одном коммите, но вы можете расширить его до последовательности вишенок.

См. Справку по вишне для получения дополнительной информации

Другие вопросы по тегам