Я рекомендую рассмотреть возможность использования git worktree add
, по крайней мере, если ваш Git как минимум версии 2.15. Для этого вы можете запустить эту команду с верхнего уровня вашего рабочего дерева:
git worktree add ../project.master master
, что создаст целое отдельное рабочее дерево в ../project.master
. Затем вы можете в любое время посмотреть на свою ветку master
в этом отдельном рабочем дереве. Вы даже можете выполнять работу в master
, если это то, что вы обычно делаете (хотя многие группы и организации предлагают не делать этого вообще).
Думаю, здесь два или три вопроса. В частности, я думаю, что вы столкнулись с проблемой XY здесь: вы в настоящее время работаете в своем new-branch
, но вы хотели бы просмотреть файлы, как показано на ваш филиал master
. Тогда вы подумали: Я знаю, как просматривать файлы и перешли от этого к как я могу сохранить все без фиксации? и задали вопрос, который вы задали, а не исходный , актуальная проблема: Как я могу просмотреть файлы, которые у меня были бы, если бы я проверил какую-то другую ветку, например master
?
Ответ git stash
является своего рода ответом на вопрос, который вы на самом деле задали. См. Любой из ответов Ноэля Кра , customcommander и / или Yusef Maali . То есть, вы можете запустить git stash
, который где-то сохраняет вашу еще несохраненную работу, затем стирает еще несохраненную работу (которая фактически сохраняется сейчас) и позволяет вам переключать ветки.
Технически, все, что делает git stash
, - это делает несколько коммитов (обычно два; иногда три, если вы запрашиваете третий коммит), которые не находятся "на" любой ветке . Так что хотя это своего рода ответ на заданный вами вопрос, он также не является ответом, потому что вы спросили: Могу ли я переключить ветвь без фиксации? и git stash
совершает коммиты.
Иногда вы можете переключать ветки без фиксации , даже если у вас есть несохраненные изменения . То есть git switch master
или git checkout master
могут просто работать. Недостатком здесь является то, что он приносит незавершенную работу вместе с изменением ветвей. Новичкам в Git также не ясно, почему Git ведет себя именно так. Для (гораздо) большего об этом - в конце концов; пока не смотрите - см. Оформить заказ на другую ветку, если в текущей ветке есть незафиксированные изменения .
Но вам действительно не нужно переключать ветки. Вы действительно хотите просмотреть файлов в снимке на конце master
. Чтобы получить весь набор таких файлов, вы можете использовать git worktree
. Подкоманда git worktree
, впервые представленная в Git 2.5, позволяет вам иметь несколько разных git checkout
-с одновременно, если каждая из них находится в разных ветвях и в другом рабочем дереве (каталоге / папка - используйте любой термин, который вам нравится) в вашей файловой системе.
Если вы хотите просмотреть только один файл из master
, рассмотрите возможность использования:
git show master:path/to/file.ext
который будет просто отображать содержимое этого файла, как видно в фиксации, которая является вершиной ветки master
. Вам нужна только полная проверка, как в git worktree add
, если вам нужно просматривать множество файлов одновременно, например, в необычной программе просмотра.