git pull --rebase с не работающей стратегией автоматического слияния - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь выполнить ребаз с помощью стратегии автоматического слияния,

m-hissain-sk01:sc hissain$ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 47 and 3 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

error: could not apply b5f4d22... Refactored existing source
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply b5f4d22... Refactored existing source

m-hissain-sk01:sc hissain$ git status
interactive rebase in progress; onto 2d4593d
Last command done (1 command done):
   pick b5f4d22 Refactored existing source
Next commands to do (2 remaining commands):
   pick 4298398 Implemented clean swift version
...

Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add/rm <file>..." as appropriate to mark resolution)

    added by us:     MyProj.xcodeproj/project.xcworkspace/contents.xcworkspacedata
    added by us:     MyProj.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
    added by us:     MyProj/Configs/Assets.xcassets/AppIcon.appiconset/Contents.json
        ...

Ожидаемые конфликты будут автоматически разрешены в нашей версии. Но после выполнения команды я по-прежнему вижу неснятые коды, ожидающие разрешения вручную.

Почему это не сработало?

1 Ответ

2 голосов
/ 16 марта 2020

В вашем выводе пропущено начало ребазинга, но я сильно подозреваю, что было сообщение типа:

CONFLICT (add/add): ...

или:

CONFLICT (rename/delete): ...

в числе различные другие сообщения. В то время как вы указали -X ours (по крайней мере в соответствии с исходным текстом вопроса):

git pull --rebase -X ours

-X ours разрешает только , некоторые конфликты автоматически, а не все конфликты. В частности, он не разрешает то, что я называю конфликтами high level , такими как конфликты добавления / добавления или переименования / удаления.

На этом этапе вам нужно либо завершить sh операция слияния и продолжить перебазирование, используя git rebase --continue, или прервать всю операцию перебазирования, используя git rebase --abort. Помните, что git pull просто запускает две Git команды для вас:

  1. git fetch, а затем
  2. (если это удастся), git merge или git rebase с параметрами, определяемыми тем, что было выбрано на шаге 1.

git rebase, который вы вызывали на шаге 2, является неполным. (Я искал некоторые SO-ответы о том, как go о разрешении таких слияний - я знаю, что они существуют - и еще не нашел хороших для ссылки.) Редактировать: вот один для добавления / добавления: Resolving a ' оба добавили конфликт слияния в git?

...