2015-04-12 4 views
8

Я пытаюсь выполнить скрипты некоторых операций git, которые связаны с некоторыми перезагрузками/выбором вишни/etc.Разрешить конфликт git с командами сантехники

Есть ли способ разрешить конфликт без необходимости запускать команды, такие как:

git rebase --continue 
git cherry-pick --continue 
git merge --continue 

Я пытаюсь избежать редактор когда-либо исполняется, когда мерзавец хочет совершить сообщение.

Возможно, есть способ сообщить git, что все было решено и передано сообщение о фиксации по умолчанию, если необходимо?

+0

Существует множество способов предоставить сообщение фиксации неинтерактивно ('-m',' -C', '-F', чтобы назвать несколько из' git commit'). Ни одно из них не является специфическим для разрешения конфликтов. – chepner

+0

Есть ли способ сказать git, что все конфликты разрешены без использования * - продолжить? –

+0

Я не уверен, что понимаю. По определению, конфликт - это то, что требует ручного вмешательства, и «git» не знает, что ручное вмешательство закончено, если вы не запускаете что-то *, как 'git whatever -continue'. – chepner

ответ

5

Вы можете использовать git commit -m '$msg', чтобы зафиксировать изменения, затем выдает команду о том, "продолжать идти к следующим шагам":

Для git rebase:

git commit -m '$msg' 
git rebase --skip 

Fo г git cherry_pick:

git commit -m '$msg' 
# if you are cherry-picking several commits at once, 
# this will skip the current (conflicting) one, and proceed with the remaining ones : 
git reset 
git cherry-pick --continue 

Для git merge:
Там нет git merge --continue директивы. В случае конфликта вы просто исправите конфликт, затем commit. Таким образом, git commit -m '$msg' сделает это.

+0

Да, git rebase -skip _after_ создание фиксации для устранения конфликтов похоже, работает! Так же, как просто делать фиксацию после вишневого забора. Итак, получается, что мне действительно не нужна команда сантехника ... Мне просто нужно было создать фиксацию вручную, вместо того, чтобы закончить работу. –

3

Попробуйте использовать -x вариант. Thats опция делает:

-x При записи фиксации, добавьте строку, которая говорит «(вишня выбрала от совершения ...)» к исходному сообщению фиксации для того, чтобы указать, какие совершить это изменение было вишневый. Это сделано только для черешни без конфликтов. Не используйте этот вариант , если вы выбрали вишню из своего частного филиала, потому что информация бесполезна для получателя. Если, с другой стороны, вы выбрали вишню между двумя видимыми видимыми ветвями (например, , обратившись к исправлению в ветку обслуживания для более старой версии от ветви разработки), добавив эту информацию.

git-scm.herokuapp.com/docs/git-cherry-pick

Также --allow-empty может быть полезным

+0

Спасибо за это, но я ищу более общее решение, когда конфликты. Это относится к rebase, cherry-pick, merge, stashpop, и я уверен, что другие –

+0

Не могли бы вы предоставить некоторые сведения о том, какое поведение вы хотели реализовать? Например: если на вишневом диске есть какие-то конфликты слияния, как вы думаете, чтобы решить его: просто не говорите ничего, чтобы пустить консоль и продолжать движение (какой способ не может существовать) или, возможно, вы хотите вернуть все свои изменения (http://stackoverflow.com/questions/2073841/how-can-i-discard-remote-changes-and-mark-a-file-as-resolved) и так далее. –

+0

Когда возникает конфликт, пользователь исправляет конфликты, а затем просто нажимает кнопку «done». Отсутствует дополнительный вход (например, ввод сообщения фиксации). –

Смежные вопросы