Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена в нуль (т. е. она не ссылалась на экземпляр фактического объекта).
Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для null перед тем, как использовать.
if (myvar != null)
{
// Go ahead and use myvar
myvar.property = ...
}
else
{
// Whoops! myvar is null and cannot be used without first
// assigning it to an instance reference
// Attempting to use myvar here will result in NullReferenceException
}
Инструмент, который вы хотите, - git filter-branch
. Его использование описано здесь здесь , но в основном:
$ git filter-branch --tree-filter 'rm -f my_file' HEAD
удалит «my_file» из каждый commit.
Notice что это переписывает каждую фиксацию, поэтому, если вы входите в удаленный репозиторий, вам необходимо (a) принудительно обновить, и (б) все остальные, кто вытащил вас, теперь будут иметь дубликаты (поскольку вы переписали историю), как описано на странице git rebase
man .
Для этого нужно git filter-branch
, но будьте осторожны, что ваша история репо изменится, и хеши фиксации будут отличаться после перезаписи истории.
Если вы также хотите освободить место, я рекомендую что вы используете git forget-blob
, потому что git filter-branch
самостоятельно не заставит git забыть ваш файл, поскольку на него все еще можно ссылаться пультами, reflog, тегами и т. д.
git forget-blob main.c.swp
Вы можете получить дополнительную информацию здесь
--prune-empty
, чтобы любые пустые коммиты, сгенерированные в результате, также были удалены. – fnkr 28 August 2014 в 08:21git push --force
? @mipadi – alper 27 July 2018 в 14:14