diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 51e739989ad..48fde2be1e1 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -73,6 +73,7 @@ #include #include +#include #include #include @@ -2163,16 +2164,23 @@ void GitClient::handleMergeConflicts(const QString &workingDir, const QString &c : tr("Conflicts detected with commit %1").arg(commit); QMessageBox mergeOrAbort(QMessageBox::Question, tr("Conflicts Detected"), message, QMessageBox::Ignore | QMessageBox::Abort); - mergeOrAbort.addButton(tr("Run Merge Tool"), QMessageBox::ActionRole); + QPushButton *mergeToolButton = mergeOrAbort.addButton(tr("Run &Merge Tool"), + QMessageBox::ActionRole); + if (abortCommand == QLatin1String("rebase")) + mergeOrAbort.addButton(tr("&Skip"), QMessageBox::ActionRole); switch (mergeOrAbort.exec()) { - case QMessageBox::Abort: { + case QMessageBox::Abort: synchronousAbortCommand(workingDir, abortCommand); break; - } case QMessageBox::Ignore: break; - default: // Merge - merge(workingDir); + default: // Merge or Skip + if (mergeOrAbort.clickedButton() == mergeToolButton) { + merge(workingDir); + } else { + QStringList arguments = QStringList() << abortCommand << QLatin1String("--skip"); + executeAndHandleConflicts(workingDir, arguments, abortCommand); + } } }