Я на самом деле когда-то продвинул с --force
и .git
репозиторий и ругался достижением Linus . В целом это создаст много проблем для других людей. Простой ответ, "Не делают этого".
я вижу, что другие дали рецепт для того, чтобы сделать так так или иначе, таким образом, я не повторю их здесь. Но вот подсказка для восстановления с ситуации после , Вы выставили исправленную фиксацию с - сила (или +master).
git reflog
для нахождения старой фиксации, которую Вы исправили (называют его old
, и мы назовем новую фиксацию Вами созданный путем исправления new
). old
и new
, записывая дерево new
, как git checkout new && git merge -s ours old
. git merge master
Затем люди, которые были достаточно неудачны основывать их работу над фиксацией Вы стертый путем исправления и принуждения нажатия, будут видеть, что получающееся слияние будет видеть, что Вы одобряете new
более чем [1 112]. Их более поздние слияния не будут видеть конфликты между [1 113] и new
, который следовал из Вашего исправления, таким образом, они не должны страдать.
Я предполагаю, что вы не установили правильный режим обработки исключений с помощью Application.SetUnhandledExceptionMode ()
- просто установите его на UnhandledExceptionMode.ThrowException
.
. ] ОБНОВЛЕНИЕ
Я только что написал небольшое тестовое приложение и не нашел ничего неожиданного. Не могли бы вы воспроизвести свою ошибку с помощью этого тестового кода?
using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
namespace ConsoleApplication
{
public static class Program
{
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;
Application.ThreadException += Application_ThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.Run(new TestForm());
throw new Exception("Main");
}
static void Application_ThreadException(Object sender, ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.Message, "Application.ThreadException");
}
static void AppDomain_UnhandledException(Object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show(((Exception)e.ExceptionObject).Message, "AppDomain.UnhandledException");
}
}
public class TestForm : Form
{
public TestForm()
{
this.Text = "Test Application";
this.ClientSize = new Size(200, 60);
this.MinimumSize = this.Size;
this.MaximumSize = this.Size;
this.StartPosition = FormStartPosition.CenterScreen;
Button btnThrowException = new Button();
btnThrowException.Text = "Throw";
btnThrowException.Location = new Point(0, 0);
btnThrowException.Size = new Size(200, 30);
btnThrowException.Click += (s, e) => { throw new Exception("Throw"); };
Button btnThrowExceptionOnOtherThread = new Button();
btnThrowExceptionOnOtherThread.Text = "Throw on other thread";
btnThrowExceptionOnOtherThread.Location = new Point(0, 30);
btnThrowExceptionOnOtherThread.Size = new Size(200, 30);
btnThrowExceptionOnOtherThread.Click += (s, e) => new Thread(() => { throw new Exception("Other thread"); }).Start();
this.Controls.Add(btnThrowException);
this.Controls.Add(btnThrowExceptionOnOtherThread);
}
}
}
Может быть, исключение выбрасывается в отдельном потоке вашего приложения. Мы видели проблему, когда приложение просто «останавливается» (что означает: в одну секунду оно там, а вторую - уходит), когда в потоке возникает необработанное исключение. В этом случае не запускался даже обработчик необработанных исключений.