Git rebase, изменить порядок добавленных функций, разрешить конфликт, понять слияние

В другом примере выражение работает для отрицательных верхних индексов без необходимости кавычек вокруг отрицательного числа:

title(xlab=expression("Nitrate Loading in kg ha"^-1*"yr"^-1))

, и вам нужно только * разделять разделы, как указано выше (когда вы пишете надстрочный индекс или подстрочный индекс и нужно добавить еще текст в выражение после).

1
задан Albert 27 February 2019 в 17:16
поделиться

1 ответ

Я могу ответить на две трети вашего вопроса здесь - почему возникает конфликт, и как выяснить, что происходит. Я не знаю интерфейса PyCharm, поэтому могу только догадываться, что он вам показывает.

Почему конфликт

В скриншоте, который вы показываете, причина конфликта заключается в том, что у вас есть коммит, который добавляет блок, смежный с блоком, который еще не существует потому что вы решили перебазировать его позже в последовательности: я думаю, что вы добавляете test...spatial() после test...end(), но последнее еще не существует. Я предполагаю, что это будет добавлено, когда коммит, который добавляет это, будет рассмотрен позже.

Когда Git видит непрерывные изменения, он не продвигается вперед, потому что для этого нужно угадывать, а это не всегда безопасно. Вы должны рассмотреть их и разрешить конфликт, чтобы сказать, каков правильный результат.

Как узнать, что происходит

Я воспроизвел ваш сценарий, добавив «line1» в конце файла a в коммите, а затем добавив «line2» в второй коммит:

$ git log --format=oneline master
0a3b254 (master) line2
ef7e059 line1

Теперь я перезагружаюсь, чтобы отменить эти два коммита и получаю конфликт, когда выбираю 0a3b254 до ef7e059, а команда командной строки сообщает мне, какой коммит имеет конфликт и останавливается там:

$ git rebase -i HEAD^^
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 0a3b254... line2

Теперь вы используете другой интерфейс, поэтому я не знаю, показывает ли он фиксацию проблемы, но git status сделает это, если вы запустите его в командной строке :

$ git status
interactive rebase in progress; onto bf27dcb
Last command done (1 command done):
   pick 0a3b254 line2
Next command to do (1 remaining command):
   pick ef7e059 line1

Теперь я могу проверить коммит, который я пытаюсь перебазировать с помощью git show 0a3b254, и он показывает, что я добавляю «line2» после «line1».

Я также могу посмотреть на a, чтобы увидеть, что это за конфликт:

$ cat a
asdf
<<<<<<< HEAD
=======
line1
line2
>>>>>>> 0a3b254... line2

Это говорит мне о том, что в master здесь не было строк (между <<<<<<< HEAD и ======= ) и что в 0a3b254 у меня есть две строки. Я знаю, какие из них оставить, выполнив git show 0a3b254, потому что в a на данный момент ничего не говорится о том, что оставить.

Поэтому я разрешаю конфликт, оставив только «line2» из моей версии, и продолжаю ребазинг:

# edit a to keep just line2
git add a
git rebase --continue
...
CONFLICT (content): Merge conflict in a
error: could not apply ef7e059... line1

Опять я снова получаю конфликт с ef7e059, потому что два блока были добавлены в то же самое место, и Git, конечно, не будет знать, в каком порядке их размещать.

$ cat a
asdf
<<<<<<< HEAD
line2
=======
line1
>>>>>>> ef7e059... line1

Здесь Git сообщает мне, что я добавил line2 в предыдущем коммите на HEAD и line1 в коммите, над которым я сейчас работаю, ef7e059. Это не помогает выяснить правильный порядок, также как и git show ef7e059, но git show mybranch:a показывает мне содержимое a в исходной ветви (так как ветвь не обновляется, пока перебазирование не завершено) и помогает мне понять что мне нужно вставить строку 2 после строки 1.

# edit a to place its contents in the right order
git add a
git rebase --continue

Предположение о графическом интерфейсе PyCharm

В вашем интерфейсе я ожидаю, что Результат (центральная панель) - это место, где вы должны поместить результат разрешения конфликта, левая панель, вероятно, является состоянием кода в коммите, выбранном вишней, а правая панель, вероятно, является состоянием кода, в котором происходит выбор вишни.

На основании комментариев к этому ответу и информации о добавлении, которую вы показали в вопросе, я бы предположил, что Result содержит неправильную функцию, которую вам, возможно, придется заменить на ту, которую этот коммит фактически пытается добавить.

Нет ничего плохого в том, чтобы пытаться: вы всегда можете попробовать и посмотреть, работает ли он, и позже отменить перебазирование, если окончательные результаты не идентичны (согласно git diff) коду перед перебазированием.

0
ответ дан joanis 27 February 2019 в 17:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: