2016-11-18 3 views
5

Я пишу скрипт для переноса git-repos. На вишнево-Пика конфликтов я бегуgit cherry-pick -continue, '-no-edit' опция?

git add . 
git cherry-pick --continue 

Это вызывает Vim, что побудило меня, чтобы сохранить сообщение фиксации и замерзает сценарий. Я ищу вариант командной строки, например --no-edit или --porcelain, чтобы обойти это.

Гадкий терминал писаки может быть воспринят как хорошо;)

+0

Ну, я не был ясен с заявлениями, которые вы отправили, поэтому я запустить тест и обнаружил, что «git cherry-pick -continue» зависает до разрешения конфликтов слияния. Итак, как вы их разрешаете? – Zildyan

+0

Я разрешаю конфликты с 'git add .' в корне проекта. Я хочу принять все изменения, а затем запустить 'git cherry-pick -continue'. –

+0

@HaraldNordgren У меня была такая же проблема с 'git rebase' –

ответ

7

Как Zildyan said in his answer, вам нужно будет решить все конфликты перед выполнением git add. Поэтому вам не следует сделать это полностью автоматизированным.

Сказанное, чтобы пропустить редактирование сообщения , вы можете просто настроить ваш редактор командой, которая ничего не делает и сообщает об успехе. Идеальным для Unix-подобных систем является команда true. Следовательно:

git -c core.editor=true cherry-pick --continue 

будет делать трюк. (Вы также можете использовать любой из переменных окружения GIT_EDITOR, VISUAL или EDITOR, а на самом деле, если любой из них установлены, вы должны использовать их, а не core.editor, так как последовательность: использовать $GIT_EDITOR, если это установлено, иначе используйте $VISUAL, если это установлено, иначе используйте $EDITOR, если это установлено; else используйте core.editor, если это установлено; else используйте то, что встроено в эту версию Git.)

+0

Я предпочитаю вариант fits (используя' -c'), потому что побочных эффектов нет. Кроме того, его можно легко превратить в псевдоним. –

+0

@ JosephK.Strauss: обратите внимание, что вы можете использовать псевдоним оболочки, чтобы установить 'GIT_EDITOR', например,' alias foo = 'GIT_EDITOR = true git cherry-pick -continue'' в bash или через псевдоним Git, который использует ' ! 'для вызова оболочки. Однако, если '-c core.editor = true' хватает, это тоже хорошо. – torek

0

Вы можете использовать:

git cherry-pick <sha1> --no-commit 

после разрешения конфликта вы можете совершить его из сценария.

Ofcourse вы можете установить вишнево-подборщик стратегию-параметры для автоматического разрешения конфликтов путем принятия кода от наших/их

Без этого вы получите стандартную GIT разметку конфликта

+<<<<<<< HEAD 
     some code 
+||||||| parent of 4d64ec6... test commit 
+  first version code 
+======= 
+  second version code 
+>>>>>>> 4d64ec6... test commit 
Смежные вопросы