У меня вопрос по рабочему процессу git, и я не до конца понимаю все термины, чтобы узнать, что искать в Google.
Краткая версия: возможно ли "переключить" локальный каталог git на ветку из удаленного репозитория, когда ваши локальные репозитории запускаются как клоны удаленного репозитория? Я новичок в Git, так что я все еще в курсе терминологии здесь; пожалуйста, дайте мне знать, если я сказал что-то, что кажется неправильным / неправильным.
Длинная версия.
У меня есть локальный репозиторий, который является клоном "центрального" репозитория. Этот репозиторий имеет несколько веток, каждая из которых на много ревизий опережает основную ветку исходного репозитория.
$ git branch
foo
* master
universal_imports
Я знаю, что могу "переключиться" на одну из своих локальных веток, используя команду checkout
git
$ git checkout foo
$ git checkout universal_imports
etc.
У меня также есть несколько пультов
$ git remote
origin
upstream
Основная ветвь upsteam
является нашим источником истины. Это продукт , вышеупомянутый центральный репозиторий. Как указывалось ранее, мой локальный главный репозиторий начинался как клон этого репозитория. (на самом деле мой локальный репозиторий - это клон удаленного origin
, который является github-форком главной ветки вышестоящего потока. Я не уверен, что это актуально)
Вот сценарий, который я пытаюсь решить. Я делал новые разработки на своих ветках. Я на много версий впереди оригинального мастера. Однако я только что получил запрос на исправление чего-либо в производстве. Моя ментальная модель здесь была бы
- Переключите мой локальный код, чтобы он соответствовал производственному коду
- Исправить и зафиксировать
- Слить мой локальный код в ветку источника правды
- Переключите мой локальный код обратно на мои "настоящие" ветки и продолжайте разработку новых функций
Цель состоит в том, чтобы избежать запуска любого моего нового кода в производство до того, как он будет готов.
Если не считать повторного клонирования центрального хранилища, есть ли для этого рабочий процесс git? В идеале я хотел бы что-то вроде описанного мной «переключиться на удаленную ветку», но если это бессмысленный разговор, есть ли способ, которым я мог бы работать с git, который позволил бы мне справиться с этой ситуацией. (впереди новая работа, но главное - отработать точку в истории)