Я использую Tortoise GIT. Можно ли поддерживать 2 удаленных репозитория в одной локальной папке? У меня есть главный удаленный репозиторий, а затем есть промежуточный удаленный репозиторий, который всегда намного опережает главный репозиторий. Я создал локальное репо и вытащил из главного удаленного репо. Затем я создал новую ветку и попытался извлечь из удаленного промежуточного репозитория, и это дает мне более 1000 конфликтов и более 3000 измененных файлов. Как мне справиться с этим, используя GIT черепахи?
Поддержание 3 удаленных репозиториев в одной локальной папке
Ответы (1)
Ваша проблема — это просто непонимание git pull
. Предположим, два ваших пульта называются origin
и staging
, а ветка, в которой вы работаете, называется master
.
Сейчас у вас master
настроено отслеживание удаленного origin
. Это нормально. Но теперь вы выдаете:
git pull staging master
Что делает git pull
? Он извлекает указанную ветку в FETCH_HEAD
в каталоге .git
, а затем объединяет ее с вашей текущей веткой. Это все, что он делает — выборка с последующим слиянием в ветке отслеживания по умолчанию (если команда не указана) или в указанной ветке (если она указана).
Вы берете версию master
из промежуточного репозитория и объединяете ее с копией master
из вашего репозитория origin
. Как вы заметили, репозиторий staging
«намного опережает» репозиторий origin
. Отсюда конфликты слияния.
Вы не делаете ничего плохого. На самом деле отслеживание нескольких репозиториев в одной локальной копии — стандартная операция в git (на работе я отслеживаю 12).
Вместо этого попробуйте это (опять же, предположим, что одно репо — staging
, другое — origin
, и оба используют ветку master
):
git checkout -b development --track staging/master
Это приведет к локальному извлечению ветки под названием «разработка», которая будет настроена для отслеживания основной ветки вашего промежуточного репозитория. Теперь вы можете выпускать git pull
в этой ветке столько раз, сколько хотите, зная, что она не будет пытаться объединить производственную ветку master
в себя, если только вы явно не скажете ей об этом.