Hvordan fikse Git Error & quot; Dine lokale endringer i følgende filer vil bli overskrevet av fusjon & rsquo;
Feilmeldingen " Dine lokale endringer i følgende filer vil bli overskrevet av flette " oppstår i Git versjonskontrollmekanisme. Denne feilen oppstår hvis du har endret en fil som også har endringer i det eksterne depotet.
Denne feilmeldingen unngås HVIS det ikke er noen uforpliktende filer som også har endringer i det eksterne lagringsområdet. Når du opplever denne meldingen, er det best å konsultere dine andre teammedlemmer og be om deres mening. Enten du vil slå sammen dine lokale endringer eller holde versjonen til stede i depotet, er det best å holde alle ombord.
Hva er arkiver? Hva er push and pull i Git?
Et depot er en slags lagring for kode som kontinuerlig modifiseres og oppnås av teammedlemmer gjennom GitHub-versjonskontrollmekanismen. En ' Pull' betyr at du trekker den siste versjonen av depotet til din lokale lagring / IDE (Integrated Development Environment) som Pycharm etc.
Etter et trekk gjør du endringer i koden eller legger til flere funksjoner. Når du er ferdig, skyver du koden på depotet slik at endringene lagres og tillegg gjøres. Koden blir også tilgjengelig for andre mennesker.
Hvis du ikke har Github versjonskontroll, er det anbefalt at du går gjennom alt det grunnleggende først. I denne artikkelen antar vi at du allerede har grunnleggende kunnskaper og kjenner til alle detaljene.
Hvordan fikser jeg 'Dine lokale endringer i følgende filer vil bli overskrevet av fusjon'?
Løsningen på denne feilmeldingen avhenger av hva du vil gjøre. Du kan forkaste lokale endringer og trekke de i arkivet, eller du kan lagre de lokale endringene i en stash og hente versjonen fra depotet. Alt avhenger av dine preferanser.
Derfor anbefaler vi at du rådfører deg med teammedlemmene dine og sørger for at alle er på samme side før du går videre. Hvis du begår feil eller skyver feil versjon, kan det påvirke hele teamet.
Metode 1: Tvinge et trekk for å overskrive lokale endringer
Hvis du ikke bryr deg om endringene som er gjort lokalt og vil hente koden fra depotet, kan du tvinge et trekk. Dette vil overskrive alle lokale endringer som er gjort på datamaskinen din, og en kopi av versjonen i depotet vises.
Utfør følgende kommandoer i IDE:
git reset - hard git pull
Dette vil umiddelbart ødelegge alle dine lokale endringer, så sørg for at du vet hva du gjør og ikke trenger dine lokale endringer.
Metode 2: Holde begge endringene (lokale og fra repo)
Hvis du vil beholde begge endringene (endringene som er gjort lokalt og endringene som finnes i depotet), kan du legge til og foreta endringene. Når du trekker, vil det åpenbart være en sammenslåingskonflikt. Her kan du bruke verktøyene i IDE (for eksempel Difftool og mergetool) for å sammenligne de to kodene og bestemme hvilke endringer du skal beholde og hvilke du skal fjerne. Dette er midtveien; ingen endringer vil gå tapt før du fjerner dem manuelt.
git legg til $ the_file_under_error git commit git pull
Når du får en sammenslåingskonflikt, trykk de verktøyene for konfliktløsing og sjekk linje for linje.
Metode 3: Å beholde begge endringene MEN ikke forplikte seg
Denne situasjonen skjer fra tid til annen der utviklere ikke er klare til å forplikte seg fordi det er noe delvis ødelagt kode som du feilsøker. Her kan vi skjule endringene trygt, hente versjonen fra depotet og deretter fjerne koden din.
git stash save --keep-index
eller
git stash
git pull git stash pop
Hvis det er noen konflikter etter at du har stashet, bør du løse dem på vanlig måte. Du kan også bruke kommandoen:
git stash gjelder
i stedet for pop hvis du ikke er klar til å miste den stashede koden på grunn av konflikter.
Hvis sammenslåing ikke virker som et levedyktig alternativ for deg, bør du vurdere å gjøre en rebase. Rebasing er prosessen med å flytte eller kombinere en sekvens av forpliktelser til en ny basisforpliktelse. Ved rebasing, endre koden til:
git stash git pull --rebase origin master git stash pop
Metode 4: Gjør endringer i 'spesifikke' deler av koden din
Hvis du vil gjøre endringer i bestemte deler av koden og ikke ønsker å erstatte alt, kan du forplikte alt du ikke vil overskrive og deretter følge metode 3. Du kan bruke følgende kommando for endringene du vil overskrive fra versjonen som finnes i depotet:
git checkout path / to / file / to / revert
eller
git checkout HEAD ^ path / to / file / to / revert
Du må også sørge for at filen ikke blir iscenesatt via:
git reset HEAD path / to / file / to / revert
Fortsett deretter med pull-kommandoen:
git pull
Dette vil da forsøke å hente versjonen fra depotet.