Brew-Update fehlgeschlagen: Nicht verfolgte Arbeitsbaumdateien werden durch Zusammenführen überschrieben

207

Beim Versuch, Homebrew mit zu aktualisieren, wurde brew updateder folgende Fehler angezeigt

error: The following untracked working tree files would be overwrittenby merge:     
 Library/Formula/argp-standalone.rb
 Library/Formula/cocot.rb 
Please move or remove them before you can merge. 
Aborting 
Updating e088818..5909e2c 
Error: Failed while executing git pull  origin refs/heads/master:refs/remotes/origin/master

Ich habe einen Blog-Beitrag von jemandem gefunden, der ein ähnliches Problem hatte, nachdem er Mountain Lion installiert hatte (was ich auch diese Woche getan habe). Er erklärt, wie er die in der Fehlermeldung genannten Dateien entfernt hat

I removed these files:
$ cd $(brew --prefix)
$ rm cocot.rb
However, removing these files didn't help with the brew update. Instead I had to manually update brew through git:
$ cd $(brew --prefix)
$ git fetch origin
$ git reset --hard origin/master
$ brew update
Already up-to-date.

Unter der Annahme, dass diese Anweisungen korrekt sind (was ich vielleicht nicht annehmen sollte), habe ich versucht, diese Anweisungen zu befolgen und zu tun

    $ cd $(brew --prefix)
    $ rm cocot.rb

Es hieß jedoch "Datei existiert nicht", als ich versuchte, cocot.rb zu rm

Eine Sache, bei der ich mir nicht sicher bin, ist: cd $(brew --prefix)Sind das genau die Wörter, die ich tippe, oder muss ich das Präfix durch etwas ersetzen? Die CD war erfolgreich, daher gehe ich davon aus, dass sie korrekt war. Sie hat mich in / usr / local verschoben, aber es gab keine Datei zum Entfernen. Inhalt von / usr / local sind

Cellar              clamXav             git             mysql               var Library             doc             heroku              mysql-5.5.15-osx10.6-x86_64 README.md           etc             include             rvm bin             foreman             lib             share

Weißt du auf jeden Fall, wie ich das 'Gebräu-Update' reparieren kann?

Update: Nachdem chown -R <your_username> $(brew --prefix)/.gitich die Dateien gemäß den Anweisungen von favoretti entfernt und versucht habe , wurde der folgende Fehler ausgeführtbrew update

error: The following untracked working tree files would be overwritten by merge:
    Library/Aliases/gperftools
    Library/Aliases/hashdeep
    Library/Aliases/htop
    Library/Aliases/nodejs
    Library/Aliases/ocio
    Library/Aliases/oiio
    Library/Aliases/pgrep
    Library/Aliases/pkill
    Library/Aliases/qt4
    Library/Aliases/twolame
    Library/Aliases/wxwidgets
    Library/Contributions/cmds/brew-aspell-dictionaries
    Library/Contributions/cmds/brew-beer.rb
    Library/Contributions/cmds/brew-dirty.rb
    Library/Contributions/cmds/brew-graph
    Library/Contributions/cmds/brew-grep
    Library/Contributions/cmds/brew-leaves.rb
    Library/Contributions/cmds/brew-linkapps.rb
    Library/Contributions/cmds/brew-ls-taps.rb
    Library/Contributions/cmds/brew-man
    Library/Contributions/cmds/brew-md5-to-sha1
    Library/Contributions/cmds/brew-mirror-check.rb
    Library/Contributions/cmds/brew-pull.rb
    Library/Contributions/cmds/brew-readall.rb
    Library/Contributions/cmds/brew-server
    Library/Contributions/cmds/brew-services.rb
    Library/Contributions/cmds/brew-switch.rb
    Library/Contributions/cmds/brew-test-bot.rb
    Library/Contributions/cmds/brew-tests.rb
    Library/Contributions/cmds/brew-unpack.rb
    Library/Contributions/cmds/brew-which.rb
    Library/Contributions/cmds/git
    Library/Contributions/cmds/svn
    Library/ENV/4.3/apr-1-config
    Library/ENV/4.3/bsdmake
    Library/ENV/4.3/c++
    Library/ENV/4.3/c89
    Library/ENV/4.3/c99
    Library/ENV/4.3/cc
    Library/ENV/4.3/clang
    Library/ENV/4.3/clang++
    Library/ENV/4.3/cpp
    Library/ENV/4.3/g++
    Library/ENV/4.3/gcc
    Library/ENV/4.3/git
    Library/ENV/4.3/i686-apple-darwin11-llvm-g++-4.2
    Library/ENV/4.3/i686-apple-darwin11-llvm-gcc-4.2
    Library/ENV/4.3/ld
    Library/ENV/4.3/llvm-g++
    Library/ENV/4.3/llvm-g++-4.2
    Library/ENV/4.3/llvm-gcc
    Library/ENV/4.3/llvm-gcc-4.2
    Library/ENV/4.3/make
    Library/ENV/4.3/mig
    Library/ENV/4.3/sed
    Library/ENV/4.3/svn
    Library/ENV/4.3/xcrun
    Library/ENV/libsuperenv.rb
    Library/ENV/pkgconfig/leopard/libcrypto.pc
    Library/ENV/pkgconfig/leopard/libcurl.pc
    Library/ENV/pkgconfig/mountain_lion/libcurl.pc
    Library/ENV/pkgconfig/mountain_lion/libexslt.pc
    Library/ENV/pkgconfig/mountain_lion/libxml-2.0.pc
    Library/ENV/pkgconfig/mountain_lion/libxslt.pc
    Library/Formula/abcl.rb
    Library/Formula/abcmidi.rb
    Library/Formula/aiccu.rb
    Library/Formula/akka.rb
    Library/Formula/alac.rb
    Library/Formula/alure.rb
    Library/Formula/appledoc.rb
    Library/Formula/arangodb.rb
    Library/Formula/argp-standalone.rb
    Library/Formula/argtable.rb
    Library/Formula/autopano-sift-c.rb
    Library/Formula/avian.rb
    Library/Formula/avidemux.rb
    Library/Formula/avro-cpp.rb
    Library/Formula/aws-cloudsearch.rb
    Library/Formula/aws-sns-cli.rb
    Library/Formula/backupninja.rb
    Library/Formula/bact.rb
    Library/Formula/bam.rb
    Library/Formula/basex.rb
    Library/Formula/berkeley-db4.rb
    Library/Formula/bind.rb
    Library/Formula/blazeblogger.rb
    Library/Formula/bochs.rb
    Library/Formula/boost149.rb
    Library/Formula/bsdconv.rb
    Library/Formula/bsdmake.rb
    Library/Formula/buildapp.rb
    Library/Formula/bup.rb
    Library/Formula/byacc.rb
    Library/Formula/cadubi.rb
    Library/Formula/camellia.rb
    Library/Formula/casperjs.rb
    Library/Formula/ccextractor.rb
    Library/Formula/cconv.rb
    Library/Formula/cdo.rb
    Library/Formula/cdpr.rb
    Library/Formula/cgvg.rb
    Library/Formula/checkstyle.rb
    Library/Formula/chordii.rb
    Library/Formula/chruby.rb
    Library/Formula/cifer.rb
    Library/Formula/clhep.rb
    Library/Formula/cntlm.rb
    Library/Formula/cocot.rb
    Library/Formula/cogl.rb
    Library/Formula/collada-dom.rb
    Library/Formula/crash.rb
    Library/Formula/crossroads.rb
    Library/Formula/crosstool-ng.rb
    Library/Formula/css-crush.rb
    Library/Formula/csync.rb
    Library/Formula/ctemplate.rb
    Library/Formula/curlftpfs.rb
    Library/Formula/cutter.rb
    Library/Formula/cvsutils.rb
    Library/Formula/darkstat.rb
    Library/Formula/darner.rb
    Library/Formula/dart.rb
    Library/Formula/dasm.rb
    Library/Formula/debianutils.rb
    Library/Formula/dfc.rb
    Library/Formula/dgtal.rb
    Library/Formula/dhcping.rb
    Library/Formula/di.rb
    Library/Formula/dmtx-utils.rb
    Library/Formula/drip.rb
    Library/Formula/dsniff.rb
    Library/Fo
Aborting
Updating e088818..c1fbc29
Error: Failed while executing git pull  origin refs/heads/master:refs/remotes/origin/master
BrainLikeADullPencil
quelle
github.com/Homebrew/homebrew-core - überprüfen Sie die offizielle README.md von Homebrew Core. Es sollte nicht erforderlich sein, die Berechtigungen anzupassen, wie einige der älteren Antworten empfehlen. Überprüfen Sie auch, ob Sie auf die aktuelle offizielle Quell-URL verweisen. Weitere Informationen in dieser Antwort: stackoverflow.com/questions/14113427/…
Kay V

Antworten:

279
cd $(brew --prefix)
git reset --hard HEAD
brew update
Strand McCutchen
quelle
Hatte ein ähnliches Problem wie die ursprüngliche Frage, jedoch mit unterschiedlichen widersprüchlichen Dateien. Das Zurücksetzen reichte aus, um das Problem zu aktualisieren und zu beheben.
David
17
Vielleicht möchten Sie auch tun, git add .gefolgt von git stash: P
mkk
Funktioniert bei mir. Geben Sie buchstäblich diese CD $ (Brauen - Präfix)
Saran
13
Wenn nach dem Wechsel in das Brühverzeichnis mit cd $(brew --prefix)und dem Zurücksetzen der Git-Stufe mit git reset --hard HEADIhrem git statusnicht das Arbeitsverzeichnis sauber zurückgegeben wird, müssen Sie möglicherweise auch den Status durch Ausführen bereinigen git clean -df.
Strand McCutchen
82
Anstelle von git reset --hard HEAD(was für mich nicht funktionieren würde) tat ich git fetch --allundgit reset --hard origin/master
Kevin.
360

Sie müssen Folgendes tun:

cd $(brew --prefix)
rm Library/Formula/argp-standalone.rb
rm Library/Formula/cocot.rb

Und dann mach das

git fetch origin
git reset --hard origin/master
brew update

Grundsätzlich, um ein bisschen mehr zu erklären:

cd $(brew --prefix)

weist cdan, das Verzeichnis in das zu ändernde Verzeichnis zu ändern brew --prefix. Wenn Sie versuchen, einen brew --prefixBefehl auszuführen , sollten Sie Folgendes sehen:

brew --prefix
/usr/local

Der Befehl wäre also in diesem Fall ein Äquivalent von cd /usr/local. Neuere brewVersionen haben Formeln unter dem Installationspräfix und Library/Formula/daher müssen Sie dort nach veralteten / geänderten Dateien suchen.

Beachten Sie, dass, wenn Sie diese Formeln aus einem bestimmten Grund selbst geändert haben (z. B. beim Fixieren einer Version), diese Aktion sie auf die Standardformeln zurücksetzt und möglicherweise unerwünschte Effekte hervorruft.

@ TedPennings bemerkte in Kommentaren, dass dies für ihn funktionierte, aber seine Sequenz war:

  1. chown alles zu my_username:admin, dhsudo chown -R ted:admin $(brew --prefix)
  2. Führen Sie die beiden obigen Git-Befehle aus, git fetch originundgit reset --hard origin/master
favoretti
quelle
1
Als ich git reset --hard origin / master gemacht habe, schien es nur teilweise zu funktionieren. Dies ist die Ausgabe. Fehler: Verknüpfung des alten '.gitignore' nicht möglich (Berechtigung verweigert) Fehler: Datei CONTRIBUTING.md kann nicht erstellt werden (Berechtigung verweigert) Auschecken von Dateien: 100% (2493/2493), erledigt. Schwerwiegend: Die Indexdatei konnte nicht auf die Revision 'origin / master' zurückgesetzt werden.
BrainLikeADullPencil
3
Dies bedeutet, dass Ihre Berechtigungen verschraubt sind. Ein Weg wäre zu laufen sudo git reset --hard, ein anderer und ein besserer Weg wäre, Berechtigungen zu reparieren und zu tunchown -R <your_username> $(brew --prefix)/.git
favoretti
So sehen die Berechtigungen für mein drwxrwxr-x 16 root admin 646 Dec 27 20:30 /usr/local/
Braupräfix
19
Diese Lösung hat Dinge für mich behoben, aber ich musste alles auf meinen Benutzernamen ändern: admin, dh, sudo chown -R ted:admin $(brew --prefix)und dann die beiden obigen Git-Befehle ausführen, git fetch originundgit reset --hard origin/master
Ted Pennings
2
@ TedPennings: Cool! Ich werde Ihre Befehle als möglichen zusätzlichen Schritt zur Antwort hinzufügen.
favoretti
46

Dies wird durch einen alten Fehler im updateCode verursacht, der längst behoben wurde. Die Art des Fehlers erfordert jedoch Folgendes:

cd $(brew --repository)
git reset --hard FETCH_HEAD

Wenn Sie sich brew doctorimmer noch über nicht festgeschriebene Änderungen beschweren, führen Sie auch diesen Befehl aus:

cd $(brew --repository)    
git clean -fd
Eric Wu
quelle
3
Diese Lösung hat bei mir funktioniert, wenn die akzeptierte Antwort nicht funktioniert hat.
JBCP
31
$ cd $(brew --prefix)
$ git clean -fd
$ git reset --hard
$ sudo chown -R `whoami` `brew --prefix`
$ brew update

Hinweis: Die Schritte 2 und 3 haben bei mir funktioniert, da ich Schritt 5 vor 4 ausgeführt habe, bevor ich den Fehler erhalten habe. Das Brew-Update vor dem Ändern des Besitzers des Ordners verursachte das gesamte Problem.

Ron D.
quelle
Das hat bei mir funktioniert. Ich möchte hinzufügen, dass dies durch andere Programme verursacht werden kann, die Inhalte /usr/localmit anderen Berechtigungen installieren . Für mich war es MacPGP, das sich mit Root-Rechten installiert hat.
Overbryd
1
Dies hat das Problem für mich behoben, nachdem ein Upgrade auf Mac OS X 10.11 mit /usr/localden Berechtigungen in Konflikt geraten war . Vielen Dank!
CletusW
Beachten Sie, dass Sie möglicherweise keine Berechtigungen ändern und Verzeichnisse nicht manuell verschieben müssen. Siehe zum Beispiel stackoverflow.com/a/40599893/5440638 .
Kay V
6

Ich hatte ein ähnliches Problem, bei dem meine Brew-Paketbibliothek als Root-Benutzer heruntergeladen wurde und ich dann das Brew-Update nicht ausführen konnte, da sich git darüber beschwerte, dass die Datei nicht zusammengeführt werden konnte.

Die Lösung bestand darin: -

sudo chown -R <user> /usr/local/Library
Domäne
quelle
5

Das Zurücksetzen des Brührepositorys sollte der effizienteste Weg sein, wenn es Ihnen nichts ausmacht, mögliche Änderungen an Formeln zu verwerfen, die Sie möglicherweise angewendet haben:

$ cd `brew --prefix`
$ git fetch origin
$ git reset --hard origin/master
$ brew cleanup --force
$ brew update
pstaender
quelle
4

Ich konnte dies auf meinem Computer beheben, indem ich die Schreibberechtigung für die Administratorgruppe (und das Setgid-Bit) für folgende Pfade hinzufügte:

sudo chmod -R g+ws /usr/local /Library/Caches/Homebrew

Das s legt die Gruppen-ID bei der Ausführung fest, damit die Schreibberechtigungen nicht verloren gehen, wenn ein anderer Administrator Homebrew das nächste Mal aktualisiert oder aktualisiert.

Diese Antwort ist etwas unvollständig, da bei meinem Versuch brew cleanup --forceein Berechtigungsproblem auftritt, wenn Homebrew versucht, Inhalte in / usr / local / Cellar / zu entfernen. (Leider kann ich das momentan nicht weiter untersuchen.)

jimmont
quelle
2
Es gibt ein beliebtes Skript zum Korrigieren von Homebrew-Berechtigungen, das anscheinend recht gut funktioniert. Ich musste es nicht selbst benutzen; Ich habe die Änderungen manuell vorgenommen :) Aber dies kann anderen helfen: gist.github.com/rpavlik/768518
Steve Benner
1

Eine andere Möglichkeit ist, nur zu verwenden git stash .

Der Befehl Brew Update führt eine aus git pull. Wenn also geänderte Dateien (oder sogar Dateiattribute, die mir beim rekursiven Ändern der Berechtigungen im Verzeichnis passiert sind) vorhanden sind, müssen Sie die Konflikte irgendwie beheben. Verwenden git stashist eine Möglichkeit; Änderungen werden übernommen und beiseite gelegt, sodass Sie effektiv zur zuletzt aktualisierten Repo-Version zurückkehren können. Der Homebrew-Speicherort ist standardmäßig /usr/localund wird als Git-Repository installiert. Sie können nach einem .gitOrdner suchen , um sich selbst davon zu überzeugen. Ich schreibe ein Homebrew-Deinstallationsskript, das bald mit weiteren Informationen in meinem GitHub-Profil veröffentlicht wird.

Steve Benner
quelle
1
sudo chown -R USER /usr/local/bin

Hinweis - Verwenden Sie für USER den Befehl who, dh Ihren Benutzernamen

sudo brew doctor
imvp
quelle
oder um zu verallgemeinern: sudo chown -R $USER /usr/local/binwo das Hinzufügen der $Positionen die USER env-Variable ist, die den aktuellen USER-Namen enthält.
Cometsong
1

Dieser Ansatz ist möglicherweise einfacher als einige andere. Es involviert:

  • Behebung eines Git-Problems, damit Sie die Verwaltung von Änderungen erneut delegieren können.
  • Keine manuellen Verschiebungen von Dateien oder Verzeichnissen.
  • Keine manuellen Anpassungen der Datei- oder Verzeichnisberechtigungen.

Schritte (mit Hinweisen für diejenigen, die Erklärungen wünschen):

cd $(brew --repository)                              // see Note 1 below
git remote add brew https://github.com/Homebrew/brew // see Note 2 below
git pull brew master                                 // promising fast-forward report!
brew update                                          // see Note 3 below 

Übersicht:
Soweit ich das beurteilen kann, ist die eigentliche Ursache für dieses Problem eine Änderung der Repo-URL. Es ist jetzt brewund war brew.git. (Vollständige aktuelle URL: https://github.com/Homebrew/brew )

Hinweis 1: Mit diesem ersten Befehl gelangen Sie von einer beliebigen Stelle in Ihrer Dateistruktur in das richtige Verzeichnis. Die Verzeichnisstruktur unterscheidet sich für mich von den oben gezeigten (Mac OS 10.11.16), aber mit diesem Befehl sollten diese Unterschiede keine Rolle spielen.

Hinweis 2: Dieser zweite Befehl fügt einem neuen Alias ​​die richtige Remote-URL hinzu. Ich tat dies nur für den Fall, dass dieser Ansatz nicht das erreichte, was ich wollte, und ich die vorherige Adresse erneut benötigte. Da die neue Fernbedienung funktioniert hat, werde ich jemanden einladen, sich dazu zu äußern, einfach die URL nach Herkunft zu ändern. Ich werde die Antwort gerne aktualisieren, um zu reflektieren, was für Sie funktioniert hat.

Hinweis 3: Dieser vierte Befehl hat genau das gewünschte Ergebnis: Er meldet eine große Anzahl von Aktualisierungen, einschließlich des besonders schönen Berichts "==> Migrated HOMEBREW_REPOSITORY to / usr / local / Homebrew!" (Hervorhebung ihrer).

Kay V.
quelle
Dies funktioniert, wenn beim Ausführen 504 Fehler angezeigt werden brew update.
Omnilord
0

Dieser Beitrag hat mir nach dem Update auf El Capitan geholfen. In meinem Fall chownfunktionierte es nicht ("zsh: Befehl nicht gefunden: chown"), also fügte Schritt 1 diese Zeile meiner .zshrc hinzu:

export PATH="$PATH:/usr/sbin"

Ich hatte bereits einige der populäreren Antworten oben ausprobiert, daher bin ich mir ziemlich sicher, dass dies git statussauber war, als ich den kritischen Befehl aus dem Blog-Beitrag einfügte:

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

Clozach
quelle
0

Das sollte funktionieren.

1. cd `brew --prefix`
2. git fetch origin
3. git reset --hard origin/master
4. sudo brew update
Rahul Vivek
quelle
Fwiw, sudo wird bei der Verwendung von Homebrew dringend abgeraten. Beachten Sie die Abstimmungen bei anderen Antworten auf diese Frage sowie die Warnung, die Homebrew hilfreich bereitstellt, wenn Sie einen Befehl mit sudo eingeben. @ A5308Y bietet auch einen Link zu den FAQ darüber, warum Sudo schlecht ist. Die neueste Version dieser FAQ finden Sie unter github.com/Homebrew/brew/blob/master/docs/…. Haben Sie versucht, Ihre Schritte ohne Sudo zu befolgen?
Kay V