Git — переключение между ветками в середине работы
-
19-09-2019 - |
Вопрос
По разным причинам (в основном проверка кода) мне приходится довольно часто переключаться с текущей ветки разработки на другие ветки.
В настоящее время я использую либо «git stash», чтобы отложить незафиксированные изменения, проверить другую ветку, затем переключиться обратно и выполнить «git stash apply».
Однако иногда у меня там были новые добавленные файлы, которые не отслеживаются.К сожалению, кэширование на них не влияет.В этом случае мне придется добавить их в индекс и спрятать.
Здесь я ищу рабочий процесс, в котором мне придется выполнить минимальный набор действий для переключения ветвей, желательно избегать добавления файлов в индекс.
Решение
вы можете клонировать репо в другой каталог и по умолчанию использовать нужную ветку:
# assume your original repo is in myproj
$ git clone myproj myproj_clone --branch my_branch
Если вы затем пойдете в myproj_clone
папка, она будет в вашей ветке
$ cd myproj_clone
$ git branch
* my_branch
Другие советы
Вы можете клонировать репозиторий и просмотреть/поработать над клоном.Удалите клон, когда закончите.Если вам случится внести изменения в ветку/клон, вы можете вернуть их обратно.Я думаю, что местный клон стоит дешево.И даже если бы это было не так, дисковое пространство всё равно дешевле вашего времени.
Я не уверен, что клонирование - правильное решение, но поскольку в двух ответах предполагается, что это в мозгу, я предлагаю модификацию этой темы.клонирование может стоить недешево.С точки зрения дискового пространства это не имеет значения, но само клонирование занимает несколько секунд, а это слишком много времени, чтобы тратить его на ненужную операцию.В качестве альтернативы вы можете просто создать новый рабочий каталог, используя старый рабочий каталог git.то есть, если ваш текущий рабочий каталог — «a» (с изменениями и неиндексированными файлами), попробуйте:
$ mkdir ../b $ cd ../b $ echo 'gitdir: ../a/.git' > .git $ git checkout -f foo
Теперь b фактически является клоном a в ветке foo, и у вас есть два рабочих каталога, с которыми можно поиграть.Сделайте то, что вам нужно, в ветке foo в рабочем каталоге b, затем вернитесь в a и проверьте ветку, в которой вы находились, когда уходили.