Eroare de fuziune Git „nu este posibilă pentru că aveți fișiere neamestecate” (Programare, Git, Git Merge)

Kiarash a intrebat.

Am uitat să git pull codul meu înainte de a-l edita; când am comis noul cod și am încercat să îl împing, am primit eroarea „push is not possible”.

În acel moment am făcut un git pull care a făcut ca unele fișiere cu conflict să fie evidențiate. Am eliminat conflictele, dar nu știu ce să fac de aici încolo.

Am încercat să git commit din nou, dar îmi spune „commit is not possible because you have unmerged files”:

error: Committing is not possible because you have unmerged files.

Comentarii

  • S-ar putea să doriți să vă schimbați fluxul de lucru git astfel încât să nu ajungeți niciodată în această situație în primul rând. Nu am timp să elaborez acum, dar ceea ce am în minte include fie git merge -X theirs, fie git pull -X theirs. – Probabil că nu ambele, dar nu sunt sigur. –  > Por Henke.
7 răspunsuri
jonnystoten

Dacă ați rezolvat conflictele, trebuie să adăugați fișierele la scenă cu git add [filename], apoi faceți commit ca de obicei.

Comentarii

  • Ce se întâmplă dacă acestea sunt fișierele la care nu am lucrat? Ar trebui atunci să le adaug în continuare? Care este cel mai bun mod de a face față? –  > Por R11G.
  • A trebuit să fac acest lucru pentru un fișier care a fost șters într-o ramură pe care o fuzionam în ramura curentă. Git a marcat-o ca fiind un conflict, așa că a trebuit să șterg fișierul la nivel local, apoi git add the_file pentru a confirma fuziunea. –  > Por Brendon Muir.
  • cum să găsesc lista de conflicte? –  > Por polina-c.
  • 15

  • git status vă va arăta fișierele care au conflicte –  > Por jonnystoten.
  • @jonnystoten mulțumesc pentru comentariu! Am folosit git status și am găsit un fișier care spunea both deleted. WebStorm UI nu a arătat problema, a spus doar că nu a putut comite o fuziune. Rezolvat! –  > Por Yuri Predborski.
Prabhakar Undurthi

Trebuie să faceți două lucruri.În primul rând, adăugați modificările cu

git add .
git stash  

git checkout <some branch>

Aceasta ar trebui să vă rezolve problema, așa cum mi-a rezolvat-o și mie.

Comentarii

  • Nu este necesar doar git add . ar fi suficient –  > Por Rais Iqbal.
  • De asemenea, aceasta este o lovitură grea dacă nu doriți să git add toate fișierele tale de lucru –  > Por courtsimas.
  • Nu rulați „git add .” decât dacă sunteți gata să adăugați toate fișierele locale la repo-ul GitHub. –  > Por Joshua Bone.
muman

Puteți utiliza git stash pentru a salva depozitul curent înainte de a face confirmarea pe care doriți să o faceți (după ce ați fuzionat modificările din repo-ul din amonte cu git stash pop). A trebuit să fac asta ieri când am avut aceeași problemă.

Priyanka Arora

Această eroare apare atunci când rezolvați conflictele, dar fișierul încă trebuie adăugat în zona de etapă. git add . ar rezolva-o. Apoi, încercați să comiteți și să fuzionați.

macabeus

Începând cu git 2.23 (august 2019), aveți acum o scurtătură pentru a face acest lucru: git restore --staged [filepath].cu această comandă, ați putea ignora un fișier în conflict fără a fi nevoie să adăugați și să eliminați acel fișier.

Exemplu:

> git status

  ...
  Unmerged paths:
    (use "git add <file>..." to mark resolution)
      both modified:   file.ex

> git restore --staged file.ex

> git status

  ...
  Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git restore <file>..." to discard changes in working directory)
      modified:   file.ex

Yann VR

Am avut o problemă similară, care s-a redus la eliminarea fișierelor din „unmerged paths”

Aceste fișiere trebuiau să fie eliminate folosind git rm

appdesigns

Deci, din eroarea de mai sus. Tot ceea ce trebuie să faceți pentru a rezolva această problemă este să vă inversați codul. (git revert HEAD) apoi git pull și apoi refaceți modificările, apoi git pull din nou și a fost capabil de a confirma sau de a fuziona fără erori.