Я думаю, вам нужно разобраться с работой git pull
. Извлечение с пульта , т. Е. расположения кода (может быть GitHub, GitLab, BitBucket и т. Д. c.) Вызывает от git до git fetch
и git merge
. Ну, что это значит?
Это означает, что сначала извлекает разницу между вашим кодом и кодом пульта (например, скажем, есть два "дополнительных" коммита на пульте), затем пытается объединить эти различия в вашу кодовую базу. Теперь, это может go плавно в случае, если эти 2 коммита не связаны с коммитами, которые вы сделали в своем коде (скажем, создание нового файла (ов)). Но, если есть случай изменения в той же части кода, скажем, ваш код был:
int a = 4;
bool x = false;
Но объединение хочет сделать это:
int a = 5;
bool x = false;
Это создает конфликт слияния, потому что ваш код говорит, что a
равно 4, а слияние говорит, что это 5, какой из них git следует рассмотреть? Следовательно, вы получаете подсказку merge conflict
при извлечении кодов. Вам нужно решить их вручную, чтобы все заработало.
git rebase master
поможет вам повторно применить ваши коммиты в LocalBranch
к мастеру. Это означает, что оно берет ваше рабочее дерево и пытается объединить его с основным рабочим деревом. См. this для подробного анализа этого процесса. Перебазировка будет означать, что все, что совершит , который вы сделали, все они будут применены поверх мастера (или, может быть, даже между ними, если хотите;)). Пожалуйста, посмотрите это видео, чтобы получить лучшее представление. Поскольку этот процесс является пошаговым, он помещает вас в другой коммит (тот, который должен был быть перебазирован первым).
git pull
(в частности, шаг merge
) «Разница» фиксирует и попытается merge
внести это в ваше главное дерево работы. Только после завершения этого процесса вы можете сделать add
и commit
и, наконец, push
Также, совет, который я хотел бы дать, используйте интерактивный ребаз , то есть git rebase -i
, чтобы сделать перебазирование, поскольку он предоставляет вам интерактивный интерфейс, чтобы помочь вам перебазировать.
Не стесняйтесь комментировать, если есть еще какая-то путаница! :)
Best
PS: вы можете сделать принудительное усилие pu sh в случае, если rebase
будет в состоянии выполнить pu sh изменения на пульт.