mise à jour de brew: les fichiers d'arborescence de travail non suivis suivants seraient remplacés par la fusion:

369

J'ai essayé de courir brew updateet je reçois une erreur sur mes modifications locales seraient perdues si je fusionnais. J'ai essayé de commettre mes changements locaux (je ne me souviens pas en avoir fait, mais ça faisait longtemps), et cela a empiré les choses.

Voici la sortie:

MBP:Library User$ sudo brew update
error: The following untracked working tree files would be overwritten by merge:
    Library/Aliases/fastcgi
    Library/Aliases/htop
    Library/Aliases/nodejs
    Library/Aliases/ocio
    Library/Aliases/oiio
    Library/Aliases/pgrep
    Library/Aliases/pkill
    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-man
    Library/Contributions/cmds/brew-mirror-check.rb
    Library/Contributions/cmds/brew-missing.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.commit.html.erb
    Library/Contributions/cmds/brew-test-bot.css
    Library/Contributions/cmds/brew-test-bot.index.html.erb
    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/install_homebrew.rb
    Library/Formula/abcl.rb
    Library/Formula/abyss.rb
    Library/Formula/akka.rb
    Library/Formula/apollo.rb
    Library/Formula/appledoc.rb
    Library/Formula/arangodb.rb
    Library/Formula/autoconf.rb
    Library/Formula/automake.rb
    Library/Formula/avidemux.rb
    Library/Formula/bind.rb
    Library/Formula/bsdconv.rb
    Library/Formula/bsdmake.rb
    Library/Formula/camellia.rb
    Library/Formula/cbmbasic.rb
    Library/Formula/cdo.rb
    Library/Formula/checkstyle.rb
    Library/Formula/cifer.rb
    Library/Formula/clhep.rb
    Library/Formula/collada-dom.rb
    Library/Formula/crash.rb
    Library/Formula/crossroads.rb
    Library/Formula/css-crush.rb
    Library/Formula/curlftpfs.rb
    Library/Formula/dart.rb
    Library/Formula/dasm.rb
    Library/Formula/dfc.rb
    Library/Formula/di.rb
    Library/Formula/dsniff.rb
    Library/Formula/dupx.rb
    Library/Formula/dwatch.rb
    Library/Formula/eprover.rb
    Library/Formula/ext2fuse.rb
    Library/Formula/ezlupdate.rb
    Library/Formula/f3.rb
    Library/Formula/fastx_toolkit.rb
    Library/Formula/fceux.rb
    Library/Formula/findbugs.rb
    Library/Formula/freerdp.rb
    Library/Formula/funcoeszz.rb
    Library/Formula/fwknop.rb
    Library/Formula/gabedit.rb
    Library/Formula/gbdfed.rb
    Library/Formula/gconf.rb
    Library/Formula/git-encrypt.rb
    Library/Formula/glm.rb
    Library/Formula/gmap-gsnap.rb
    Library/Formula/gnu-arch.rb
    Library/Formula/gnunet.rb
    Library/Formula/gobby.rb
    Library/Formula/gptfdisk.rb
    Library/Formula/griffon.rb
    Library/Formula/grok.rb
    Library/Formula/gtk-chtheme.rb
    Library/Formula/gtkglextmm.rb
    Library/Formula/gtmess.rb
    Library/Formula/hg-flow.rb
    Library/Formula/hqx.rb
    Library/Formula/htop-osx.rb
    Library/Formula/htpdate.rb
    Library/Formula/imap-uw.rb
    Library/Formula/iozone.rb
    Library/Formula/ipbt.rb
    Library/Formula/ipe.rb
    Library/Formula/ispc.rb
    Library/Formula/ispell.rb
    Library/Formula/jigdo.rb
    Library/Formula/jing.rb
    Library/Formula/jless.rb
    Library/Formula/jpeginfo.rb
    Library/Formula/konoha.rb
    Library/Formula/legit.rb
    Library/Formula/libcouchbase.rb
    Library/Formula/libcuefile.rb
    Library/Formula/libextractor.rb
    Library/Formula/libglademm.rb
    Library/Formula/libgtextutils.rb
    Library/Formula/libinfinity.rb
    Library/Formula/libkate.rb
    Library/Formula/libqalculate.rb
    Library/Formula/libqglviewer.rb
    Library/Formula/libreplaygain.rb
    Library/Formula/libtool.rb
    Library/Formula/libvbucket.rb
    Library/Formula/libvo-aacenc.rb
    Library/Formula/libxmi.rb
    Library/Formula/lifelines.rb
    Library/Formula/makeicns.rb
    Library/Formula/mathgl.rb
    Library/Formula/meld.rb
    Library/Formula/mesalib-glw.rb
    Library/Formula/minisat.rb
    Library/Formula/minuit2.rb
    Library/Formula/mobile-shell.rb
    Library/Formula/movgrab.rb
    Library/Formula/mp3cat.rb
    Library/Formula/mpich2.rb
    Library/Formula/mrfast.rb
    Library/Formula/musepack.rb
    Library/Formula/ndiff.rb
    Library/Formula/net6.rb
    Library/Formula/nrpe.rb
    Library/Formula/nuttcp.rb
    Library/Formula/oath-toolkit.
Updating aa07533..3f070ef
Aborting
Error: Failed while executing git pull  origin refs/heads/master:refs/remotes/origin/master
Tyler DeWitt
la source

Réponses:

738

N'oubliez pas d'aller chercher l'origine !!!

$ cd /usr/local
$ git fetch origin
$git reset --hard origin/master

Explication, pour les personnes intéressées:

Ce qui se passe, c'est que vous essayez de mettre à jour le brassage, mais le brassage lui-même n'est pas à jour (probable), il y a un changement d'autorisations via une mise à jour du système d'exploitation (également probable), ou le brassage est légèrement corrompu (peu probable). Puisque le brassage lui-même est un dépôt git, vous devez mettre à jour ou réinitialiser le brassage à la version de la branche principale. brew [par défaut] se trouve dans le /usr/localdossier, donc vous

  1. Allez dans ce dossier [première commande] qui devrait également mettre à jour les autorisations (sinon voir ci-dessous)
  2. Récupérer l'origine [deuxième commande] ce qui signifie mettre à jour votre version LOCALE de la branche distante de brassage
  3. Réinitialisation matérielle [3e commande] basée sur la branche maître REMOTE (qui utilise également vos autorisations actuelles).

Vous pouvez également chownla première commande si vous êtes dans un profil non sudo ou admin
$ sudo chown -R `whoami` /usr/local
$ cd /usr/local
$git reset --hard origin/master

Pour comprendre git reset, consultez cet article .

chris Frisina
la source
3
Je devais le faire git fetch originavant que la réinitialisation ne fonctionne. Merci. C'est drôle comme cette réponse a été ajoutée au cours de la dernière journée, chanceux!
ghoppe
2
/usr/local git fetch origin fatal: 'origin' does not appear to be a git repository fatal: The remote end hung up unexpectedly
Rich Bradshaw
2
Jetez un oeil à ce github.com/mxcl/homebrew/wiki/Common-Issues L'erreur est décrite et comment la corriger aussi.
Stéphane Paquet
11
Cela a fonctionné, mais j'ai dû faire la dernière étape avecsudo
altumano
3
cela m'arrive encore régulièrement, en fait j'ai dû répéter ces étapes 3 fois au cours des derniers mois. Assez ennuyeux, il est pratique que SO ait une fonctionnalité préférée (qui dit que googler l'erreur fait généralement apparaître ce message comme premier résultat)
totallyNotLizards
107

J'ai eu un problème similaire il y a quelques semaines en essayant de mettre à jour une ancienne installation homebrew. Ce faisant:

git reset --hard origin/master

en /usr/localfixe pour moi.

Il semble que d'autres personnes aient également eu ce problème. Avez-vous examiné les solutions de contournement proposées ici ?

Joe Holloway
la source
A fonctionné comme un champion. Merci aussi pour le lien!
Tyler DeWitt
Remarque pour les autres: essayez d'exécuter 'git fetch origin' comme suggéré dans l'autre réponse - cela ne corrigeait correctement ce problème pour moi (il n'y avait pas de problème évident sans 'git fetch origin' autre que brew ne voyant aucune mise à jour;) ).
Gilead
J'ai rencontré cette erreur d'infusion ce matin. Une petite recherche sur Google m'a amené ici. Cette réponse a totalement résolu mon problème. Merci!
memoht
2
vous devrez peut-être d'abord cd usr/localet git remote add origin https://github.com/mxcl/homebrew.gitvoir aussi stackoverflow.com/questions/6024671/…
s2t2
11

J'ajoute mon expérience personnelle, car elle semble un peu plus sûre que celle proposée en 2012:

  1. Courez brew doctor.
  2. Si vous obtenez l'avertissement suivant:

    Warning: The /usr/local directory is not writable.
    

    courir:

    sudo chown -R `whoami` /usr/local
    

    pour résoudre les problèmes d'autorisations (comme suggéré également par Chris Frisina). Exécutez éventuellement à brew doctornouveau pour vous assurer que l'avertissement a disparu.

  3. Maintenant, vous devriez avoir un

    Warning: You have uncommitted modifications to Homebrew
    

    qui peut être résolu par

    cd /usr/local/Library && git stash && git clean -d -f
    

    comme suggéré par Dr.Brew lui-même. La commande cache les modifications non validées afin que vous puissiez revenir en arrière et les récupérer si nécessaire. Cela git reset --hard origin/masterme semblait plus sûr que moi.

  4. Si vous le souhaitez, consultez le guide de dépannage officiel si les étapes suggérées ici et par d'autres utilisateurs SO ne résolvent pas votre problème.

furines
la source
cd / usr / local / Library && git stash && git clean -d -f puis la mise à jour de brew l'a corrigé pour moi
at0mzk
0

Réponse similaire, mais si vous avez des fichiers qui ne sont plus suivis, vous avez besoin d'une étape supplémentaire, donc à partir de l' /usr/localexécution

git fetch origin
git clean -f
git reset --hard origin/master
Haris Krajina
la source
0

Cette approche peut être plus simple que certaines. Ça implique:

  • correction d'un problème git afin que vous puissiez à nouveau déléguer la gestion des modifications.
  • aucun déplacement manuel de fichiers ou de répertoires.
  • aucun ajustement manuel des autorisations de fichier ou de répertoire.

Étapes (avec des notes pour ceux qui veulent des explications):

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 

Vue d'ensemble:
D'après ce que je peux dire, la cause réelle de ce problème est un changement dans l'URL du dépôt. C'est maintenant brewet c'était brew.git. (URL complète et à jour: https://github.com/Homebrew/brew )

Remarque 1: cette première commande vous emmène de n'importe où dans la structure de vos fichiers vers le bon répertoire. La structure du répertoire est différente pour moi de ce que les autres montrent ci-dessus (Mac OS 10.11.16), mais avec cette commande, ces différences ne devraient pas avoir d'importance.

Remarque 2: cette deuxième commande ajoute l'URL distante correcte à un nouvel alias; Je l'ai fait juste au cas où cette approche n'atteindrait pas ce que je voulais et j'avais besoin de l'adresse précédente à nouveau. Depuis que la nouvelle télécommande a fonctionné, j'inviterai quelqu'un d'autre à commenter simplement en changeant l'URL aliasée par origine. Je mettrai volontiers à jour la réponse pour refléter ce qui a fonctionné pour vous.

Note 3: Cette quatrième commande a exactement le résultat souhaité: elle rapporte un grand nombre de mises à jour, y compris le rapport particulièrement agréable de "==> HOMEBREW_REPOSITORY migré vers / usr / local / Homebrew!" (mettre l'accent sur le leur).

Kay V
la source