Я часто работаю над несколькими функциями одновременно, из-за чего мне приходится сохранять изменения и забывать о них, переключаясь на другие задачи. Я пробовал использовать git-хуки и псевдонимы терминалов в качестве напоминаний, но они либо доставляли слишком много хлопот, либо их было легко игнорировать. Итак, мне пришлось найти лучшее решение.
Эта статья изначально была опубликована в моем блоге более года назад, но я продолжаю возвращаться к ней. Повторно делюсь этим со всем миром :)
Git хранит информацию в виде списка снимков. снимок — это сохраненная версия репозитория на определенный момент времени. Каждый коммит представляет собой снимок в мире git.
Рабочее дерево — это единая проверка одной версии проекта. Эти файлы извлекаются из сжатой базы данных в каталоге Git и помещаются на диск для использования или изменения. Это место, где вы выполняете свою работу перед ее постановкой и фиксацией.
Рабочие деревья Git — это способ одновременного управления несколькими рабочими деревьями git без хлопот, связанных с git stash. Они позволяют нам работать с ветвями как с подкаталогами репозитория, полностью облегчая необходимость хранения изменений, когда требуются срочные, несвязанные изменения.
Модуль worktree позволяет вам извлекать несколько версий проекта в отдельных подкаталогах в одном корневом каталоге репозитория. Возьмем, к примеру, следующую диаграмму традиционного подхода:
В этом примере у меня есть два спрятанных изменения (которые могут состоять из сотен строк кода) и 3 ветки: feature-1, feature-2 и fix -1. К тому времени, как я закончу работу над веткой fix-1 и нажму на нее, мой мозг перейдет к следующей задаче и полностью забудет о предыдущих функциях, пока мне не напомнят о них снова.
Вместо этого с рабочими деревьями это выглядит так:
При использовании рабочих деревьев структура каталогов содержит каждое рабочее дерево (ветвь) в отдельном каталоге. Это позволяет мне плавно переключаться с одной ветки на другую, просто меняя каталог, в котором я сейчас работаю. Мой обычный рабочий процесс с этим подходом состоит из следующего:
Когда я хочу переключиться с одного рабочего дерева на другое, все, что мне нужно сделать, это либо создать другое рабочее дерево, используя те же шаги, если оно еще не создано, либо просто открыть другой каталог с помощью VSCode и начать взламывать немедленно.
Создать рабочее дерево так же просто, как запустить git worktree add имя_каталога имя_ветви для существующих веток или git worktree add имя_каталога -b имя_ветви для создания новой ветки.
После того, как вы закончите работу над веткой, вы можете безопасно удалить рабочее дерево, чтобы не загрязнять структуру каталогов. Просто запустите git worktree удалить имя_каталога. При этом базовые ветки не удаляются, поэтому вы можете безопасно проверить их позже.
Рабочие деревья — это извлечения ветвей репозитория, поэтому неотслеживаемые файлы не копируются. Файлы типа .env не будут скопированы, поэтому обязательно скопируйте их после создания рабочего дерева и установите зависимости, если они существуют.
Также обратите внимание, что каталоги, созданные для рабочих деревьев, будут отображаться в журналах состояния git при выполнении в корневом каталоге репозитория. Однако для меня эти ошибки — ничто по сравнению с забвением часов работы.
Спасибо, что читаете! Вы можете прочитать больше в моем блоге и поддержать мою работу у спонсоров GitHub!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3