Предполагая, что нет никаких конфликтов между тем, что вы сделали и то, что вы тянете вниз, обычное решение этой проблемы заключается в использовании тянущего перебазироваться:
git pull --rebase
Что это будет сделать, это:
- Fetch обновления с удаленным
- перемотать фиксации
- применить входящие коммиты в дерево
- И, наконец, воспроизводить ваш местный (не-кнопку) совершает после входящих тех
Конечного результат, как если бы вы сделали git pull
, волшебно сделали все изменения мгновенно, а затем их совершили.
Если есть конфликт между локальными коммитами и входящими, вам все равно придется выполнять обычное разрешение конфликтов слиянием. Но если этого не произойдет, это, как правило, приведет к более чистой истории и сокращению количества слияний.
Допустим, вы начинаете с совершить A
и сделать свой местный совершать B
:
A --- B
Между тем, другой разработчик, начиная с A
добавляет C
, D
и E
:
A --- C --- D --- E
Когда вы тянете , происходит то, что две расходящиеся ветви сливаются. Вы в конечном итоге с конечным состоянием, F
:
A --- C --- D --- E --- F
\--- B ---------------/
Если вы используете git pull --rebase
, он хотел бы получить удаленный зафиксируется, а затем добавить ваши локальные коммиты после их. Таким образом, вы закончите с этим, и никакое слияние не произойдет.
A --- C --- D --- E ---- B
(Опять же, не предполагая слияния конфликта происходит.)
Я понимаю, что, но там должен быть способ, чтобы избежать этого. Особенно, если обе проверки идентичны. – KingKongFrog