Ошибка при попытке обновить менеджер пакетов brew

Я попытался обновить пиво:

sudo brew update

Но я получил эту ошибку:

ошибка: ваши локальные изменения в следующих файлах будут перезаписаны слиянием:

Список большого количества файлов

Ошибка: сбой при выполнении git pull http://github.com/mxcl/homebrew.git master

Любая идея, что происходит не так?


person Chiron    schedule 03.08.2011    source источник
comment
Homebrew рекомендует не использовать sudo, поэтому вы сможете запустить brew update без него.   -  person Clay    schedule 29.09.2011
comment
Некоторые пользователи OS X El Capitan столкнутся с этой проблемой по другой причине. См. мой ответ ниже.   -  person Joe    schedule 11.11.2015
comment
не используйте sudo для домашнего приготовления   -  person pixel 67    schedule 22.12.2016


Ответы (6)


Всего несколько дней назад была ошибка в Homebrew. Чтобы исправить ошибку, вы можете запустить git reset --hard FETCH_HEAD внутри вашей установки Homebrew. Поскольку это не исправит файлы, которые уже считаются измененными, вы также можете запустить git checkout Library, чтобы заменить вашу проверку последними файлами. (Это стирает все изменения, поэтому примите соответствующие меры со всеми сделанными вами изменениями.)

person Turadg    schedule 06.08.2011
comment
Я запускаю git reset --hard FETCH_HEAD в /usr/local, но получаю: фатальный: неоднозначный аргумент 'FETCH_HEAD': и ревизия, и имя файла - person Chiron; 07.08.2011
comment
Причина этого в том, что я когда-то запускал brew с помощью sudo. Это создало несколько файлов с неправильными разрешениями (принадлежащими root). После того, как я отсортировал файлы, а затем запустил git reset, все было в порядке. Спасибо! - person Yoav Shapira; 08.02.2012
comment
У меня такая же "фатальная", но я не знаю какие файлы ковырять, как это обнаружить? - person rafa; 06.11.2013
comment
@rafa sudo chown -R $(whoami) /usr/local - person pixel 67; 21.03.2014

Принятый ответ правильный, но неполный. Если вы получаете сообщение об ошибке

ошибка: следующие неотслеживаемые файлы рабочего дерева будут перезаписаны при слиянии:

Затем перейдите в свой терминал и выполните эти команды

cd /usr/local

потом

git reset --hard FETCH_HEAD

потом

git checkout Library

Это должно привести все в порядок. Затем запустите

brew update
person JGallardo    schedule 18.10.2014

Позвольте мне добавить: cd /usr/local/git, а затем запустить git reset --hard FETCH_HEAD

person pixel 67    schedule 27.03.2013

зайдите в свой терминал и выполните эти команды

cd /usr/local

sudo git reset --hard FETCH_HEAD

sudo git checkout Library
person hguzman    schedule 26.12.2014

Для тех из вас, кто использует OS X El Capitan, проблема может заключаться в защите целостности системы.

Если /usr/local уже существует, запустите в Терминале следующее:

sudo chown -R $(whoami):admin /usr/local

Если /usr/local не существует:

Сначала попробуйте создать /usr/local обычным способом:

sudo mkdir /usr/local && sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local

Если вы видите проблемы с разрешениями, попробуйте:

  1. Перезагрузитесь в режим восстановления (удерживайте Cmd + R при загрузке) и войдите в терминал.
  2. В этом терминале: csrutil disable
  3. Перезагрузитесь обратно в OS X
  4. Откройте приложение «Терминал» и выполните строку чуть выше.
  5. Перезагрузитесь обратно в режим восстановления и снова войдите в Терминал.
  6. В этом терминале выполните: csrutil enable
  7. Перезагрузитесь обратно в OS X, и вы сможете записать в /usr/local и установить Homebrew.
person Joe    schedule 10.11.2015

Без какой-либо причины (или, по крайней мере, я не понимаю никого) репозиторий в /usr/local (который является установкой brew!) потерял свой удаленный репозиторий. Так что ни git reset, ни git pull, ни brew update уж точно не подойдут.

Откуда ты знаешь, что это произошло? Проверьте /usr/local/.git/config, есть ли строки, подобные следующим:

[remote "origin"]
url = http://github.com/mxcl/homebrew.git
fetch = +refs/heads/*:refs/remotes/origin/*

Если нет, сделайте следующее:

cd /usr/local
git remote add origin http://github.com/mxcl/homebrew.git
git pull origin master
person Achim Sperling    schedule 16.11.2012
comment
Это случилось и со мной! Спасибо @Ахим - person stringy05; 17.07.2013