Удалите все удаленные файлы из “измененного, но не обновленные” в Мерзавце

Ответ Криса Москини хорош, когда вы знаете имя метода во время компиляции. Ответ Antamir работает, если мы получим имя метода во время выполнения, но довольно перебор.

Я использую другой способ, для которого я получил вдохновение с использованием отражателя из функции .NET Expression.Call, которая выбирает правильный общий метод из строки.

public static MethodInfo GetGenericMethod(Type declaringType, string methodName, Type[] typeArgs, params Type[] argTypes) {
    foreach (var m in from m in declaringType.GetMethods()
                        where m.Name == methodName
                            && typeArgs.Length == m.GetGenericArguments().Length
                            && argTypes.Length == m.GetParameters().Length
                        select m.MakeGenericMethod(typeArgs)) {
        if (m.GetParameters().Select((p, i) => p.ParameterType == argTypes[i]).All(x => x == true))
            return m;
    }

    return null;
}

Использование:

var m = ReflectionUtils.GetGenericMethod(typeof(Queryable), "Where", new[] { typeof(Person) }, typeof(IQueryable<Person>), typeof(Expression<Func<Person, bool>>));

Если вам нужно только определение общего метода или просто не знаю тип T в то время, вы можете использовать некоторые фиктивные типы, а затем разделите информацию родословной:

var m = ReflectionUtils.GetGenericMethod(typeof(Queryable), "Where", new[] { typeof(object) }, typeof(IQueryable<object>), typeof(Expression<Func<object, bool>>));
m = m.GetGenericMethodDefinition();
22
задан Trevor Burnham 7 July 2010 в 15:28
поделиться

3 ответа

Как указывает rampion, вы все еще можете использовать git rm для удаления файлов, которые уже были удалены в вашей рабочей копии (например, просто git rm dir / file.js ] в вашем случае.) Если у вас есть много этих файлов, перечисленных как «удалено:» в разделе «Изменено, но не обновлено», я бы сначала проверил, что git ls-files --deleted создает список эти файлы, и, если да, удалите их с помощью:

git ls-files --deleted -z | xargs -0 git rm
37
ответ дан 29 November 2019 в 03:33
поделиться

Вы все еще можете git rm после факта, но если хотите, вы можете восстановить все ваши измененные файлы (включая удаления) до последней ревизии с помощью git reset --hard

1
ответ дан rampion 29 November 2019 в 03:33
поделиться

Итак, вы хотите подтвердить удаление этих файлов? Затем используйте

git add -u
git commit
35
ответ дан 29 November 2019 в 03:33
поделиться
Другие вопросы по тегам:

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