Прежде всего - я очень мало знаю о git, поэтому я просмотрел другие, возможно, похожие сообщения, но я не знаю, нужны ли они мне. И я знаю достаточно, чтобы знать, что если я запускаю команды, не будучи уверенным, все может пойти еще хуже.

У меня есть ветка (промежуточная), и я использую битбакет для слияния указанной ветки с мастером. Это будет поддерживать быстрое слияние вперед.

Я подумал, что буду умным и попытаюсь запустить слияние из командной строки, чтобы мне не пришлось открывать битбакет.

Итак, из командной строки я сделал следующее

git checkout master
git merge staging

Казалось, работает. Затем я отправил его на битбакет.

Но после этого все попытки использовать мою старую технику теперь требуют, чтобы я выбрал обычное слияние вместо использования быстрой перемотки вперед.

Это все было настроено кем-то другим, и теперь я не знаю, как это исправить.

Если у меня есть мастер и постановка.

И я хочу надежно объединить промежуточные этапы с мастером и сохранить историю и т. д. Мне нужно пройти весь путь битбакета? Что я приобретаю или теряю?

Изменить: забыл добавить, что однажды я случайно зарегистрировался в мастере напрямую. Вернулся к проверке постановки, но я думаю, что это корень моей проблемы.

git
1
Pineapple Joe 4 Ноя 2019 в 22:37
 – 
Schwern
4 Ноя 2019 в 22:41
Спасибо @Schwern. Я также забыл, что совершил ошибку, объединившись с мастером вместо того, чтобы один раз ставить. Поэтому я посмотрел на перебазирование, но я не знаю, как это сделать. Я не знаю, в каком направлении идет перебазирование.
 – 
Pineapple Joe
4 Ноя 2019 в 22:46

1 ответ

Чтобы обеспечить быстрое слияние, вам необходимо убедиться, что ваша промежуточная ветка создана из вашей основной ветки.

git checkout master - переходит на ветку master.

git checkout -b staging, если промежуточная стадия НЕ существует. идет на постановку.

git checkout staging, если промежуточная ветвь ДЕЙСТВИТЕЛЬНО существует. Идет на постановку.

Затем вам нужно убедиться, что все коммиты, которые вы добавляете в master, также добавляются в staging — т. е. если вы исправляете ошибку в master, вам нужно применить тот же самый коммит к промежуточной ветке.

Или вы должны убедиться, что вы не добавляете больше коммитов в master, пока работаете над промежуточной стадией. Это не всегда практично. Теперь при слиянии вы получите быструю перемотку вперед, которая не должна иметь конфликтов слияния:

git checkout master

git merge staging

РЕЗЮМЕ: вы не можете избежать конфликтов слияния при работе с git. Самое простое решение — справляться с этими конфликтами, когда они возникают, и сводить к минимуму трудности, связанные с их решением. Совершайте коммиты как можно раньше и чаще, а также сливайтесь так часто, как это практически возможно, чтобы свести к минимуму головную боль.

0
BenKoshy 5 Ноя 2019 в 04:45
Спасибо. Я попробовал git checkout -b staging, но он сказал, что ветка уже существует. Затем я попробовал две последние команды, но это не помогло. не уверен, что вы подразумеваете под этим «Тогда вам нужно убедиться, что все коммиты, которые вы добавляете в мастер, также добавляются в промежуточную»
 – 
Pineapple Joe
4 Ноя 2019 в 23:21
Я добавил дополнительные комментарии. Примечание: вы не можете постоянно избегать конфликтов слияния. Лучшей политикой является частая фиксация и слияние, чтобы свести к минимуму такие конфликты.
 – 
BenKoshy
5 Ноя 2019 в 01:29
Спасибо. Как кто-то это делает: «Тогда вам нужно убедиться, что все коммиты, которые вы добавляете в master, также добавляются в staging». Я попытался объединить мастер с промежуточной, но он сказал, что он уже обновлен.
 – 
Pineapple Joe
5 Ноя 2019 в 02:44
Если она актуальна, то вам не о чем беспокоиться. Если вы вносите изменения в мастер, которого нет в постановке, вам нужно каким-то образом применить эти изменения к постановке: самый простой способ - объединить мастер с постановкой: но тогда вам придется иметь дело с конфликтами, которые могут возникнуть. РЕЗЮМЕ: избежать конфликтов невозможно, но очень легко с ними справиться. Обучение/практика занимает всего 5 минут. Вы можете запустить тестовый каталог git и поэкспериментировать — это лучший способ
 – 
BenKoshy
5 Ноя 2019 в 04:43