Редактировать файл и изменять версии git [duplicate]

Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена ​​в нуль (т. е. она не ссылалась на экземпляр фактического объекта).

Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для 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
}
62
задан David X 11 August 2010 в 14:21
поделиться

2 ответа

Инструмент, который вы хотите, - git filter-branch. Его использование описано здесь здесь , но в основном:

$ git filter-branch --tree-filter 'rm -f my_file' HEAD

удалит «my_file» из каждый commit.

Notice что это переписывает каждую фиксацию, поэтому, если вы входите в удаленный репозиторий, вам необходимо (a) принудительно обновить, и (б) все остальные, кто вытащил вас, теперь будут иметь дубликаты (поскольку вы переписали историю), как описано на странице git rebase man .

117
ответ дан mipadi 25 August 2018 в 11:53
поделиться
  • 1
    Я рекомендую добавить --prune-empty, чтобы любые пустые коммиты, сгенерированные в результате, также были удалены. – fnkr 28 August 2014 в 08:21
  • 2
    Как это работает в репозитории со многими файлами с одинаковым именем в разных каталогах? Удаляет ли все файлы с тем же именем? – CodeMonkey 21 November 2016 в 11:01
  • 3
    @CodeMonkey: в этом случае вы должны использовать более длинный уникальный путь. – mipadi 21 November 2016 в 20:27
  • 4
    позже я должен git push --force? @mipadi – alper 27 July 2018 в 14:14

Для этого нужно git filter-branch, но будьте осторожны, что ваша история репо изменится, и хеши фиксации будут отличаться после перезаписи истории.

Если вы также хотите освободить место, я рекомендую что вы используете git forget-blob, потому что git filter-branch самостоятельно не заставит git забыть ваш файл, поскольку на него все еще можно ссылаться пультами, reflog, тегами и т. д.

git forget-blob main.c.swp

Вы можете получить дополнительную информацию здесь

6
ответ дан nachoparker 25 August 2018 в 11:53
поделиться
Другие вопросы по тегам:

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