Hoe negeer ik een fout op ‘git pull’ dat mijn lokale wijzigingen zouden worden overschreven door samenvoegen?

Hoe negeer ik de volgende foutmelding bij Git pull?

Uw lokale wijzigingen in de volgende bestanden worden overschreven door samenvoegen

Wat als ik wilze overschrijven?

Ik heb dingen als git pull -fgeprobeerd, maar niets werkt.

Voor alle duidelijkheid: ik wil alleen specifieke wijzigingen overschrijven, niet alles.


Antwoord 1, autoriteit 100%

Als je alle lokale wijzigingen – inclusief bestanden die niet getraceerd zijn door git – uit je werkkopie wilt verwijderen, stop ze dan gewoon:

git stash push --include-untracked

Als je ze niet meer nodig hebt, kun je die voorraad nu laten vallen:

git stash drop

Als je wijzigingen die je al hebt gestaged – bijv. met git add– voeg dan de optie --keep-indextoe. Houd er echter rekening mee dat dit het samenvoegen nog steeds zal voorkomen als die gefaseerde wijzigingen botsen met die van stroomopwaarts.


Als u alleen specifieke delen van uw lokale wijzigingen wilt overschrijven, zijn er twee mogelijkheden:

  1. Bevestig alles wat u niet wilt overschrijven en gebruik de bovenstaande methode voor de rest.

  2. Gebruik git checkout path/to/file/to/revertvoor de wijzigingen die je wilt overschrijven. Zorg ervoor dat het bestand niet gestaged is via git reset HEAD path/to/file/to/revert.


Antwoord 2, autoriteit 71%

Ok, met behulp van de andere twee antwoorden heb ik een directe oplossing bedacht:

git checkout HEAD^ file/to/overwrite
git pull

Antwoord 3, autoriteit 60%

Dit werkt voor mij om alle lokale wijzigingen te negeren en vereist geen identiteit:

git reset --hard
git pull

Antwoord 4, autoriteit 14%

Hier is een oplossing die gefaseerde wijzigingen weggooit:

git reset file/to/overwrite
git checkout file/to/overwrite

Antwoord 5, autoriteit 14%

U kunt uw wijzigingen vastleggen voordat u de samenvoeging uitvoert, of u kunt ze opbergen:

  1. git stash save
  2. git merge origin/master
  3. git stash pop

Antwoord 6, autoriteit 13%

Er zijn hier zoveel antwoorden dat ik er een hekel aan heb om er nog een toe te voegen, maar al het bovenstaande is onhandiger dan nodig is. Ik moet dit de hele tijd doen omdat Git in de war lijkt te raken en zegt dat ik bestanden heb gewijzigd die niet zijn gewijzigd (kan niet terugdraaien omdat ze niet zijn veranderd, maar ik kan niet trekken omdat ze zogenaamd zijn veranderd) Eenvoudigste en snelste die ik tot nu toe heb gevonden is:

git stash
git stash drop
git pull

OPMERKING: lokalewijzigingen gaan verloren


Antwoord 7, autoriteit 10%

Als u uw lokale wijzigingen in één bestand wilt negeren, kunt u het volgende doen:

git checkout -- <file>

Dan zou je het [bestand] kunnen overschrijven met de nieuwste versie, gewoon door:

git pull

Antwoord 8, autoriteit 4%

Als uw repository enkele bestanden bevat die zijn verwijderd uit master:

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch

Antwoord 9, autoriteit 4%

git pull --rebase --autostash
 -r, --rebase[=false|true|merges|preserve|interactive]
      When true, rebase the current branch on top of the 
      upstream branch after fetching. If there is a 
      remote-tracking branch corresponding to the upstream
 --autostash, --no-autostash
      Before starting rebase, stash local modifications away if
      needed, and apply the stash entry when done

Ik weet niet waarom dit nog niet wordt beantwoord, maar de oplossing, zoals u kunt zien is eenvoudig. Alle antwoorden suggereren hier hetzelfde: om uw lokale wijzigingen te verwijderen / op te slaan en stroomopwaarts te kunnen toepassen, vervolgens (als u save) Pas uw lokale wijzigingen bovenaan toe.

Wat git pull --rebase --autostashdoet stapsgewijs:

1. your local changes saved by `--autostash`
2. your local commits saved by `--rebase`
3. commits from upstream applied to your branch
4. your local commits are restored on top of upstream
5. your local changes are restored to working directory

Mijn zaak (waarschijnlijk ook van jou):

Ik heb lokale wijzigingen (wijzigingen in werkdirectory):

Wanneer ik probeer op afstand te trekken, krijg ik fout:

Met deze wijzigingen kruisen zich niet met lokale wijzigingen:

Dus wanneer ik pull --rebase --autostashlokale wijzigingen opgeslagen en toegepast zonder enig probleem automatisch

Mijn lokale wijzigingen zijn nu iets lager:


Antwoord 10, autoriteit 3%

Soms werken deze allemaal niet. Vervelend, vanwege het LF-ding dat ik denk, wat zal werken is het verwijderenvan de bestanden, en vervolgenstrekken. Niet dat ik deze oplossing aanbeveel, maar als het bestand niet bestaat, zal git je niet nutteloos informeren dat je wijzigingen (die misschien niet eens wijzigingen zijn) zullen worden overschreven, en je door laten gaan.

Gebruik op eigen risico.


Antwoord 11, autoriteit 2%

git stash save --keep-indexwerkte niet voor mij.

het onderstaande commando werkte zoals verwacht.

git reset --hard
git pull

Het overschrijft alle lokale wijzigingen als je ze niet nodig hebt.


Antwoord 12, autoriteit 2%

In de recente Git kun je -r/--rebasetoevoegen aan het pullcommando om je huidige branch bovenop de stroomopwaartse tak na het ophalen. De waarschuwing zou moeten verdwijnen, maar het risico bestaat dat u een aantal conflicten krijgt die u moet oplossen.


Als alternatief kunt u verschillende vertakkingen geforceerd afrekenen en dan weer teruggaan naar master, bijvoorbeeld:

git checkout origin/master -f
git checkout master -f

Trek er dan weer aan zoals gewoonlijk:

git pull origin master

Het gebruik van deze methode kan je tijd besparen bij het opslaan (git stash) en mogelijke machtigingsproblemen, het resetten van bestanden (git reset HEAD --hard), het verwijderen van bestanden (git clean -fd), etc. Ook het bovenstaande is makkelijker te onthouden.


Antwoord 13

Dit probleem is omdat je lokaal wijzigingen hebt aangebracht in bestand(en) en hetzelfde bestand(en) bestaat met wijzigingen in de Git-repository, dus voor het pull/push moet je lokale wijzigingen opbergen:

Om lokale wijzigingen van een enkel bestand te overschrijven:

git reset file/to/overwrite
git checkout file/to/overwrite

Om alle lokale wijzigingen te overschrijven (wijzigingen in alle bestanden):

git stash
git pull
git stash pop

Dit probleem kan ook komen doordat je in een branch zit die niet is samengevoegd met de master branch.


Antwoord 14

Hier is mijn strategie om het probleem op te lossen.

Probleemverklaring

We moeten wijzigingen aanbrengen in meer dan 10 bestanden. We hebben PULL (git pull origin master)geprobeerd, maar Git riep:

fout: uw lokale wijzigingen in de volgende bestanden worden overschreven
door samen te voegen: bevestig uw wijzigingen of bewaar ze voordat u kunt
samenvoegen.

We hebben geprobeerd commituit te voeren en vervolgens pull, maar dat lukte ook niet.

Oplossing

We waren eigenlijk in de vuilefase, omdat de bestanden zich in de “Staging Area” a.k.a “Index Area” bevonden en sommige in de “Head Area” a.k.a “lokale Git directory”. En we wilden de wijzigingen van de server halen.

Kijk op deze link voor informatie over verschillende stadia van Git op een duidelijke manier: GIT Stages

We hebben de volgende stappen gevolgd

  • git stash(dit heeft onze werkdirectory schoon gemaakt. Uw wijzigingen worden door Git op de stapel opgeslagen).
  • git pull origin master(haal de wijzigingen van de server)
  • git stash apply(Alle wijzigingen van stack toegepast)
  • git commit -m 'message'(De wijzigingen doorgevoerd)
  • git push origin master(De wijzigingen naar de server gepusht)
  • git stash drop(Laat de stapel vallen)

Laten we begrijpen wanneer en waarom u opslag nodig heeft

Als u zich in de vuilestaat bevindt, betekent dit dat u wijzigingen aanbrengt in uw bestanden en dan bent u, om welke reden dan ook, gedwongen om te trekkenof schakelnaar een andere branch voor zeer dringend werk, dus op dit punt kun je niet meer pullen of switchen totdat je je wijziging hebt doorgevoerd. De opdracht stashis hier als een helpende hand.

Uit het boek ProGIT, 2e editie:

Vaak, als je aan een deel van je project hebt gewerkt, gaat het mis
een rommelige staat en je wilt even van branch wisselen om aan te werken
iets anders. Het probleem is dat je geen commit wilt doen van
half werk, zodat u later op dit punt kunt terugkomen. De
antwoord op dit probleem is het git stash-commando. Stashing neemt de
vuile staat van uw werkmap – dat wil zeggen, uw gewijzigde bijgehouden
bestanden en gefaseerde wijzigingen – en slaat het op een stapel onvoltooide
wijzigingen die u op elk moment opnieuw kunt toepassen.


Antwoord 15

git reset --hard && git clean -df

Let op: hiermee worden alle niet-getrackte bestanden gereset en verwijderd.


Antwoord 16

U kunt dit gebruiken om een bestand te overschrijven

git checkout file_to_overwrite

Antwoord 17

De beste manier om dit probleem op te lossen is:

git checkout -- <path/file_name>

Daarna kunt u het bestand overschrijven door:

git pull origin master

Antwoord 18

Dit werkte voor mij om wijzigingen op de Live Remote Server te verwijderen en uit de bronbesturing GitHub te trekken:

git reset --hard
git pull origin master

Antwoord 19

Probeer dit

git fetch --all 
git reset --hard origin/master
git pull origin master

Het werkt voor mij om Pull

te forceren


Antwoord 20

Als u specifieke wijzigingen wilt overschrijven, hebt u een manier nodig om het te vertellen welke u wilt vergeten.

U kunt proberen selectief de wijzigingen die u wilt laten opgeven met git stash --patchen vervolgens die stash laten vallen met git stash drop. U kunt dan de afstandswijzigingen intrekken en deze normaal samenvoegen.


Antwoord 21

Als u de productiewijzigingen op de server wilt behouden, voeg dan gewoon samen in een nieuw configuratie-item. De verwerkingsmethode is als volgt:

git stash
git pull
git stash pop

Misschien voer je niet alle operaties uit. Je kunt weten wat je vervolgens kunt doen.


Antwoord 22

De eenvoudigste oplossing is:

git reset --hard && git pull

Antwoord 23

FOUT “Uw lokale wijzigingen in de volgende bestanden zouden worden overschreven door samenvoeging” komt omdat u een aantal wijzigingen in de lokale repo hebt die nog niet zijn aangeprefd, dus voordat u uit de Remote Repo trekt, plegen de wijzigingen in de lokale repo.

Laten we zeggen dat je externe repo een tak xyz heeft
En u wilt dat Remote Repo XYZ-tak die moet worden samengevoegd in (gekopieerd naar) lokale repo XYZ-filiaal,

{
git checkout xyz                  //check out to the respective branch in local repo
git commit -m "commiting message" //commit changes if any, in local repo branch xyz
git pull                          //it pulls remote xyz branch into local xyz branch
}

Antwoord 24

Ik had een speciaal geval van dit: Ik had een bestand met –assume-onveranderd op. Het was moeilijk te vinden, zoals de git statusopdracht was niet te zien wijzigingen


Antwoord 25

Ik was een bestand in mijn repo negeren en toen ik dat deed git pull upstream masterkreeg ik de volgende foutmelding:

error: Uw lokale wijzigingen aan de volgende bestanden zouden worden overschreven door merge:
myfile.js
Gelieve, bega je wijzigingen of Stash ze voordat u kunt samenvoegen.
Afbreken

Om het deed ik de volgende

op te lossen

git update-index --no-assume-unchanged myfile.js

Ik deed vervolgens op git statusen kreeg dit bericht

Aan tak meester Uw branch is achter ‘origin / master’ van 4 commits,
en kan snel vooruit. (Use “git pull” naar uw lokale updaten
branch)

Wijzigingen niet opgevoerd voor commit: (gebruik “Git Toevoegen …” om bij te werken
Wat wordt er vastgelegd) (gebruik “Git Checkout – …” Gooi weg
Wijzigingen in werkdirectory)

bewerkt: myfile.js

geen wijzigingen toegevoegd aan commit (use “git add” en / of “git commit -a”)

Toen deed ik git checkout myfile.js, gevolgd door git pull upstream master. Dit keer is de git pull operatie is geslaagd.


Antwoord 26

die ik tegenkwam dit bij het trekken van de master.

De manier waarop ik behandeld het, met behulp van Visual Studio;

  1. Ten eerste, ik deed ongedaan te plegen op mijn oplossing.
  2. Toen deed ik het Git pull proces.

Ik hoop dat dit helpt!


Antwoord 27

Ik heb geprobeerd en het succes, voordat trekken, laat al bestand dat u niet hebben begaan plegen, dan ontvangt u geen die berichten van AS.


Antwoord 28

Ik ben nieuw in git en niet zeker of mijn oplossing is een goed idee.

Ik heb ALLE antwoorden getest en geen enkele werkte voor mij!

Maar ik heb een andere oplossing gevonden:

1. Backup both of local and repository versions of the file.
2. Delete the file from repository.
3. git add .
4. git commit
5. git push

Hopelijk helpt dit.


Antwoord 29

Mijn oplossing was deletede bestanden van buiten de IDE die zullen worden overschreven, en pull.

(u kunt altijd een back-up maken van niet-getrackte gegevens en deze handmatig samenvoegen)


Antwoord 30

Als deze fout wordt veroorzaakt door regeleindes,

git add
git checkout mybranch

zal werken. Ik weet niet precies waarom het werkt.

Other episodes