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 -f
geprobeerd, 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-index
toe. 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:
-
Bevestig alles wat u niet wilt overschrijven en gebruik de bovenstaande methode voor de rest.
-
Gebruik
git checkout path/to/file/to/revert
voor de wijzigingen die je wilt overschrijven. Zorg ervoor dat het bestand niet gestaged is viagit 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:
git stash save
git merge origin/master
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
:
git checkout master
git fetch origin
git reset --hard origin/master
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 --autostash
doet 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 --autostash
lokale 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-index
werkte 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
/--rebase
toevoegen aan het pull
commando 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 commit
uit 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 stash
is 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 --patch
en 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 status
opdracht was niet te zien wijzigingen
Antwoord 25
Ik was een bestand in mijn repo negeren en toen ik dat deed git pull upstream master
kreeg 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 status
en 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;
- Ten eerste, ik deed ongedaan te plegen op mijn oplossing.
- 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 delete
de 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.