Kaip ignoruoti „git pull“ klaidą, susijusią su mano vietiniais pakeitimais, bus perrašytas sujungimas?

Kaip ignoruoti šį „Git pull“ klaidos pranešimą?

Vietiniai šių failų pakeitimai bus perrašyti sujungimu.

Ką daryti, jei noriu juos perrašyti?

Bandžiau tokius dalykus kaip git pull -f , bet nieko neveikia.

Kad būtų aišku, aš tiesiog noriu perrašyti konkrečius pakeitimus, o ne visus.

383
14 янв. set mae Jan 14 2013-01-14 15:14 '13, 15:14, 2013-01-14 15:14
@ 25 atsakymai

Gerai, su dviem kitais atsakymais, aš atėjau tiesioginį sprendimą:

 git checkout HEAD^ file/to/overwrite git pull 
237
14 янв. atsakymas duotas mae 14 jan. 2013-01-14 17:04 '13, 17:04, 2013-01-14 17:04

Jei norite pašalinti visus vietinius pakeitimus iš darbo kopijos, tiesiog išsaugokite juos:

 git stash save --keep-index 

Jei daugiau jų nereikia, dabar galite ištrinti šią talpyklą:

 git stash drop 
border=0

Jei norite perrašyti tik tam tikras vietinių pakeitimų dalis, yra dvi galimybės:

  • Įrašykite viską, ką nenorite perrašyti, ir naudokite aukščiau nurodytą metodą.
  • Naudokite „ git checkout path/to/file/to/revert , jei norite pakeisti pakeitimus. Įsitikinkite, kad failas netelpa per git reset HEAD path/to/file/to/revert .
312
14 янв. Daniel Hilgarth atsakymas dėl sausio 14 d 2013-01-14 15:17 '13, 15:17, 2013-01-14 15:17

Tai leidžia man panaikinti visus vietinius pakeitimus ir nereikia identifikatoriaus:

 git reset --hard git pull 
125
01 окт. atsakymas pateikiamas kravits88 01 okt. 2015-10-01 04:07 '15 - 4:07 2015-10-01 04:07

Čia pateikiamas išspręstų pakeitimų šalinimo sprendimas:

 git reset file/to/overwrite git checkout file/to/overwrite 
66
31 окт. Aftershock atsakymas spalio 31 d 2013-10-31 16:45 '13, 16:45, 2013-10-31 16:45

Galite sujungti savo pakeitimus prieš sujungdami arba pridėdami juos:

  1. git stash save
  2. git merge origin/master
  3. git stash pop
46
18 марта '14 в 15:14 2014-03-18 15:14 atsakymą pateikė Suneel Kumar kovo 18 d. 14 val. 14:14 2014-03-18 15:14

Mano sprendimas išspręsti šią problemą yra:

 git checkout -- <file> 

Tada galėčiau perrašyti failą naudojant:

 git pull 
30
04 авг. atsakymas pateikiamas pabloasc 04 rug . 2015-08-04 15:38 '15 15:38 2015-08-04 15:38

Jei saugykloje yra keletas failų, kurie yra ištrinti iš master :

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch
11
05 февр. atsakymas pateikiamas Nikhil KR 05 vasario mėn. 2014-02-05 09:24 '14 at 9:24 am 2014-02-05 09:24

Neseniai „Git“ galite pridėti -r / --rebase į pull komandą, kad iš naujo būtų --rebase esamas filialas virš šakos. Įspėjimas turėtų išnykti, tačiau yra pavojus, kad susidursite su tam tikrais konfliktais, kuriuos reikia išspręsti.


Arba galite išbandyti kitą filialą su jėga ir vėl grįžti į master , pavyzdžiui:

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

Tada ištraukite jį kaip įprasta:

 git pull origin master 

Naudodami šį metodą, galite sutaupyti laiko, git reset HEAD --hard ( git stash ) ir galimos problemos, perrašysite failus ( git reset HEAD --hard ), ištrinkite failus ( git clean -fd ) ir pan. Taip pat lengviau prisiminti.

8
16 марта '16 в 15:41 2016-03-16 15:41 atsakymas suteikiamas kenorbui kovo 16 d. 16, 15:41 2016-03-16 15:41

Ši problema kyla dėl to, kad pakeitėte vietoje / s failą, ir tas pats failas (-ai) yra su pakeitimais „Git“ saugykloje, todėl prieš traukdami / stumdami reikės vietinių pakeitimų:

Jei norite perrašyti vieno failo vietinius pakeitimus:

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

Jei norite perrašyti visus vietinius pakeitimus (visų failų pakeitimai):

 git stash git pull git stash pop 

Be to, ši problema gali kilti dėl to, kad esate filiale, kuris nėra sujungtas su pagrindiniu filialu.

7
14 янв. Atsakymas duotas BSB 14 jan. 2018-01-14 16:19 '18 at 4:19 PM 2018-01-14 16:19

Kartais nė vienas iš šių darbų neveikia. Klaidingai, dėl LF, manau, kad bus ištrinti failai ir tada traukti. Ne todėl, kad aš rekomenduoju šį sprendimą, bet jei failas neegzistuoja, „git“ nebus nenaudinga pranešti, kad jūsų pakeitimai (kurie gali būti netgi pakeisti) bus panaikinti ir leis tęsti.

Naudokite savo pačių rizika.

6
20 авг. Jeremy Holovacs atsakymas 2015-08-20 21:37 '15 , 9:37 pm 2015-08-20 21:37

Tai galite naudoti, jei norite perrašyti failą.

 git checkout file_to_overwrite 
4
27 июня '15 в 13:06 2015-06-27 13:06 atsakymą pateikė Deepika Patel birželio 15 d. 15 val. 2015-06-27 13:06

Jei norite perrašyti tam tikrus pakeitimus, turite kažkaip pasakyti, kuriuos tu nori pamiršti.

Galite pabandyti pasirinktinai nukopijuoti pakeitimus, kuriuos norite atmesti, naudodami git stash --patch ir iš naujo nustatykite šį antspaudą su git stash drop . Tada galite ištrinti ištrintus pakeitimus ir sujungti juos kaip įprasta.

3
14 янв. Atsakymą pateikė Will Vousden sausio 14 d. 2013-01-14 15:21 '13, 13:21 pm 2013-01-14 15:21

Geriausias būdas išspręsti šią problemą yra:

 git checkout -- <path/file_name> 

Po to galite perrašyti failą:

 git pull origin master 
3
12 апр. Atsakyti AHM Forhadul Islam balandžio 12 2017-04-12 12:19 '17 at 12:19 2017-04-12 12:19

Jis dirbo norėdamas panaikinti nuotolinio nuotolinio serverio pakeitimus ir ištraukti jį iš „GitHub“ valdymo šaltinio:

 git reset --hard git pull origin master 
2
20 апр. Gajen Sunthara atsakymas, pateiktas balandžio 20 d 2016-04-20 15:31 '16 at 15:31 pm 2016-04-20 15:31

Jei norite išsaugoti gamybos pakeitimus serveryje, tiesiog sujunkite į naują konfigūracijos elementą. Apdorojimo būdas yra toks:

 git stash git pull git stash pop 

Jūs negalite atlikti visų operacijų. Jūs galite žinoti, ką galite padaryti toliau.

2
19 апр. YanQing atsakymas 19 d 2017-04-19 14:49 '17 at 14:49 PM 2017-04-19 14:49

Turėjau ypatingą atvejį: turėjau failą su juo - jokių pakeitimų. Sunku rasti, nes git status komanda neparodė jokių pakeitimų.

2
23 июня '16 в 23:36 2016-06-23 23:36 atsakymas pateikiamas Arkadiy birželio 23 d., 16 val. 11:36 pm 2016-06-23 23:36

Aš bėgau į tai, kai pasiekiau iš šeimininko.

Apdorojimo būdas naudojant „Visual Studio“;

  1. Pirma, mano sprendime vykdiau komandą „Atšaukti“.
  2. Tada aš padariau git traukos procesą.

Tikiuosi, kad tai padės!

1
19 сент. Atsakymą pateikė AJ Macapaz apie 19 sep . 2017-09-19 22:53 '17, 10:53 pm 2017-09-19 22:53

git stash save --keep-index man neveikė.

toliau nurodyta komanda dirbo taip, kaip tikėtasi.

 git reset --hard git pull 

Jei jų nereikia, jis panaikina visus vietinius pakeitimus.

1
20 мая '18 в 10:03 2018-05-20 10:03 atsakymą pateikė Khemraj gegužės 20 d. 18 val. 10:03 2018-05-20 10:03

Čia yra mano problemos sprendimo strategija.

Problema

Turime pakeisti daugiau nei 10 failų. PULL (git pull origin master) , bet Hittas šaukė:

Klaida: vietiniai pakeitimai šiuose failuose bus perrašyti sujungimu: prašome padaryti pakeitimus arba įrašyti juos prieš sujungdami.

Mes bandėme commit ir tada pull , bet jie taip pat neveikė.

Sprendimas

Tiesą sakant, mes buvome nešvarioje scenoje, nes failai buvo „tarpinėje zonoje“, taip pat žinomi kaip „indekso sritis“, o kai kurie iš jų buvo „Head Area“, taip pat „vietinis Git“ katalogas. Ir mes norėjome atlikti pakeitimus iš serverio.

Išsamesnės informacijos apie įvairius „Git“ etapus ieškokite aiškioje formoje: GIT etapai

Atlikome šiuos veiksmus.

  • git stash (tai padarė mūsų darbo katalogą švarus. Jūsų pakeitimai yra saugomi „Git“ kaminai).
  • git pull origin master (ištraukite pakeitimus iš serverio)
  • git stash apply (taikyti visus pakeitimus iš kamino)
  • git commit -m 'message' („ git commit -m 'message' pakeitimas)
  • git push origin master („ git push origin master serverio pakeitimai)
  • git stash drop ( git stash drop steką)

Suprasime, kada ir kodėl jums reikia

Jei esate nešvarioje būsenoje, tai reiškia, kad atliekate pakeitimus savo failuose, o tada dėl kokių nors priežasčių turite skubiai dirbti arba perkelti į kitą skyrių, todėl šiuo metu negalite traukti arba perjungti į kitus tol, kol nepadarysite pakeitimų. stash komanda yra čia kaip pagalbinė ranka.

Iš knygos „ProGIT“, antrasis leidimas:

Dažnai, kai dirbote su savo projekto dalimi, viskas yra nešvarioje būsenoje, ir jūs norite šiek tiek pakeisti šakas, kad galėtumėte dirbti kažkam kitam. Problema ta, kad nenorite atlikti pusės darbo, kad vėliau galėtumėte grįžti į šią problemą. Atsakymas į šį klausimą yra git stash komanda. Stashing užtrunka nešvarią jūsų darbo katalogo būseną - tai yra jūsų pakeistos stebimos rinkmenos ir pakopiniai pakeitimai - ir saugo jį laukiančiuose laukiančiuose pakeitimuose, kuriuos galite bet kada atnaujinti.

1
16 апр. Atsakyti STK 16 balandžio. 2017-04-16 16:54 '17 at 16:54 pm 2017-04-16 16:54

Aš ignoravau savo repo failą, o kai padariau „ git pull upstream master , gavau šią klaidą:

Klaida: vietiniai pakeitimai šiuose failuose bus perrašyti naudojant susijungimą: myfile.js Prašome padaryti savo pakeitimus arba įrašyti juos prieš sujungdami. Nutraukimas

Norėdami išspręsti šią problemą, aš tai padariau

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

Tada padariau git status ir gavau šį pranešimą.

Vedlio skyriuje jūsų filialas atsilieka nuo „kilmės / šeimininko“ 4 įrašais ir gali būti greitai peradresuojamas. (naudokite „git pull“, kad atnaujintumėte vietinį filialą)

Pakeitimai nėra padaryti, jei norite: (naudokite „git add ...“, kad atnaujintumėte tai, kas bus padaryta) (naudokite „git checkout -...“, kad atmestumėte darbo katalogo pakeitimus)

modifikuotas: myfile.js

jokių pakeitimų nebuvo pridėta, kad įsipareigotumėte (naudokite „git add“ ir / arba „git įsipareigoti -a“)

Tada aš git checkout myfile.js , ir tada git pull upstream master . Šį kartą git traukimo operacija buvo sėkminga.

1
14 марта '17 в 17:43 2017-03-14 17:43 Atsakymą Dmitrijus pateikė kovo 17 d. 17 val. 17:43 2017-03-14 17:43

Jei šią klaidą sukelia eilutės pertraukos,

 git add git checkout mybranch 

veiks. Aš nesu tikras, kodėl jis veikia.

0
08 мая '17 в 17:38 2017-05-08 17:38 atsakymą pateikė vartotojo60561 08 Gegužės 17 d. 17:38 2017-05-08 17:38

Aš bandžiau, ir jis sėkmingai, prieš traukdamas, leido leisti įvykdyti visą failą, kurio nepadarėte, tada tuos pranešimus negausite iš AS.

0
21 мая '18 в 9:02 2018-05-21 09:02 atsakymas pateikiamas Ta Quang Tu gegužės 21 d., 18 val. 9:02 am 2018-05-21 09:02

git reset --hard git clean -df

Tai atkurs ir ištrins visus failus be pėdsakų.

0
13 июня '18 в 12:49 2018-06-13 12:49 Atsakymą pateikė Jamenas Ashrafas birželio 18 d. 18 val. 12:49 PM 2018-06-13 12:49

„Pycharm“ galite padaryti git -> grįžti ir tada traukti.

0
24 янв. Miuncheno atsakymas Jan 24 2018-01-24 00:53 '18 prie 0:53 2018-01-24 00:53

Šis pranešimas taip pat gali įvykti, jei naudojamas „ git-lfs ir failo rodyklė yra perrašyta tikruoju failu.

tada jūs naudojate:

 git stash git lfs migrate import git pull 

visiškas pasitraukimas iš mano bylos

 λ git stash Saved working directory and index state WIP on master: 5d4ad47 Merge branch 'feature/...' into 'master' Encountered 1 file(s) that should have been pointers, but weren't: public/apple-touch-icon.png λ git pull Updating 5a4ad44..b25f79d error: Your local changes to the following files would be overwritten by merge: public/apple-touch-icon.png Please commit your changes or stash them before you merge. Aborting λ git lfs migrate import migrate: Fetching remote refs: ..., done migrate: Sorting commits: ..., done migrate: Rewriting commits: 100% (0/0), done migrate: Updating refs: ..., done migrate: checkout: ..., done λ git pull Updating 5d4ad47..a25c79a Fast-forward public/apple-touch-icon.png | Bin 2092 -> 130 bytes public/favicon.ico | Bin 6518 -> 1150 bytes 2 files changed, 0 insertions(+), 0 deletions(-) 

žr. https://github.com/git-lfs/git-lfs/issues/2839

0
17 мая '18 в 0:30 2018-05-17 00:30 atsakymas pateikiamas c33s gegužės 17 d., 18 val. 0:30 2018-05-17 00:30

Kiti klausimai apie „ žymas užduoti arba užduoti klausimą