Kaip galiu leisti „git“ pareiškimą „Įtraukti mano pakeitimus arba paslėpti juos prieš jungiant“?

Kai kuriuos atnaujinimus padariau savo vietinėje mašinoje, perkeliau juos į nuotolinę saugyklą, o dabar bandau ištraukti pakeitimus į serverį, ir gaunu pranešimą;

klaida: vietiniai pakeitimai šiuose failuose bus perrašyti sujungimu:

WP-turinys / W3TC konfigūracija /master.php

Prašome pateikti pakeitimus arba paslėpti juos prieš juos sujungdami.

Taigi, aš bėgo,

 git checkout -- wp-content/w3tc-config/master.php 

ir bandė dar kartą, ir aš gavau tą patį pranešimą. Manau, kad w3tc kažką pakeitė konfigūracijos faile serveryje. Man nerūpi, ar vietinė kopija ar nuotolinė kopija eina į serverį (manau, kad nuotolinė kopija yra geriausia), tik noriu, kad galėčiau sujungti likusius mano pakeitimus (papildinius).

Bet kokios idėjos?

570
01 апр. Jo Sprague balandžio 1 d 2013-04-01 17:11 '13, 17:11, 2013-04-01 17:11
@ 11 atsakymų

Jūs negalite sujungti su vietiniais pakeitimais. „Git“ apsaugo jus nuo galimų svarbių pokyčių.

Turite tris parinktis:

  • Pasinaudokite pakeitimais naudodami

     git commit -m "My message" 
  • Išjunkite jį.

    Stashing veikia kaip kamino, kuriame galite spustelėti pakeitimus, ir juos įdėjote atvirkštine tvarka.

    Norėdami užprogramuoti, įveskite

     git stash 

    Sujunkite ir ištraukite talpyklą:

     git stash pop 
  • Atšaukti vietinius pakeitimus

    naudojant git reset --hard
    arba git checkout -t -f remote/branch

    Arba: anuliuoti konkrečius failus vietiniais pakeitimais

    naudojant „ git checkout filename

1019
01 апр. atsakymas pateikiamas 01 d. 2013-04-01 17:34 '13, 17:34, 2013-04-01 17:34
 git stash git pull <remote name> <remote branch name> (or) switch branch git stash apply --index 

Pirmoji komanda laikinai išsaugo pakeitimus, kad juos atsiųstų ir ištrintų iš darbo katalogo.

Antroji komanda persijungia šakas.

Trečioji komanda atkuria pakeitimus, kuriuos išsaugojote į --index (parinktis - „ --index yra naudinga, kad įsitikintumėte, jog failai vis dar yra pristatomi).

54
04 июня '15 в 9:58 2015-06-04 09:58 atsakymą pateikė „ Loganathan “ birželio 14 d. 15 val. 9:58 2015-06-04 09:58

Galite išbandyti vieną iš šių būdų:

perkelti

Jei norite atlikti paprastus pakeitimus, pabandykite jį iš naujo įkelti iš viršaus, pavyzdžiui, patraukdami pakeitimus.

 git pull origin master -r 

Taigi po ekstrahavimo ji taikys jūsų dabartinį filialą viršutinio filialo viršuje.

Tai yra lygiavertė checkout master rebase origin/master ir rebase origin/master komandoms.

Tai yra potencialiai pavojingas veikimo būdas. Jis perrašo istoriją, kuri nėra geras, kai jau paskelbėte šią istoriją. Nenaudokite šio parametro, jei atidžiai neperskaitėte git-rebase(1) .


nuotraukos

Jei nerūpi vietiniais pakeitimais, galite pereiti į kitą laikiną (su pastangomis) šaką ir, pvz., Perjungti jį atgal.

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

atstatyti

Jei nereikia vietinių pakeitimų, pabandykite iš naujo nustatyti, pvz., HEAD (pradinė būsena)

 git reset HEAD --hard 

Jei pirmiau minėta pagalba nepadėjo, tai gali būti taisyklės „git“ normalizavimo faile ( .gitattributes ), todėl geriausia daryti tai, ką jis sako. Arba jūsų failų sistema nepalaiko leidimų, taigi jums reikia išjungti filemode git konfigūracijoje.

Susiję: Kaip gauti git traukti perrašyti vietinius failus?

20
24 июля '16 в 14:55 2016-07-24 14:55 atsakymas pateikiamas kenorbui liepos 24 d., 16 val. 14:55 2016-07-24 14:55

Taigi, situacija, kurioje buvau, buvo tokia:

Klaida: vietiniai pakeitimai šiuose failuose bus perrašyti naudojant susijungimą: WP-content / W3TC-configuration / master.php Prašome padaryti savo pakeitimus arba įrašyti juos prieš sujungdami.

išskyrus prieš tai, jis buvo ištrintas: todėl iš tikrųjų tai yra:

Nuotolinis: klaida: vietiniai šių failų pakeitimai bus perrašomi sujungiant: kai kurie /file.ext Prašome padaryti pakeitimus arba įrašyti juos prieš sujungdami.

Tai, kas vyko, buvo (manau, ne 100% teigiama), kad pradinis git pranešimo kablys pradėjo dirbti ir pakabinti dėl eismo serverio saugykloje pokyčių, kurių teoriškai neturėjo būti paveikta.

Taigi, ką aš baigiau, atsekti per kabliuką po to, kai gavau ir surado, turėjau eiti į nuotolinį saugyklą serveryje ir įvyko pakeitimai (kurie nebuvo mano vietinėje saugykloje, kuri, tiesą sakant, sako, kad tai atitinka, ne pokyčių, nieko nedaryti, atnaujinti ir tt). Taigi, kai vietiniame serveryje nebuvo jokių pakeitimų, aš git checkout -- some/file.ext serveryje git checkout -- some/file.ext , tada vietinės ir nuotolinės saugyklos iš tikrųjų atitiko, ir aš galėjau toliau dirbti ir diegti. Ne visai tikras, kaip ši situacija įvyko, nors keliolika kūrėjų ir IT pakeitimų gali turėti kažką bendro su juo.

10
18 нояб. Atsakymą pateikė Mike lapkričio 18 d. 2013-11-18 01:02 '13 - 1:02 2013-11-18 01:02

Išbandykite

 git stash save "" 

ir bandykite dar kartą traukti

6
25 янв. atsakymas pateikiamas p. Nobody, sausio 25 d 2018-01-25 11:20 '18, 11:20 2018-01-25 11:20

Prieš traukdami paprašykite fiksavimo

  • git stash
  • git pull origin << filialo pavadinimas >>

Jei reikia:

  • taikyti git stash
2
01 авг. atsakymą pateikė Rahul Mankar 01 rugpjūtis. 2018-08-01 07:26 '18, 7:26

DĖMESIO: Tai pašalins nepažymėtus failus, todėl tai nėra geriausias atsakymas į šį klausimą.

Mano atveju aš nenorėjau išsaugoti failų, todėl jis dirbo man:

Git 2.11 ir naujesnė:

 git clean -d -fx . 

Senas git:

 git clean -d -fx "" 

Nuoroda: http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

  • -x reiškia, kad ignoruojami failai taip pat ištrinami, taip pat failai, nežinomi git.

  • -d reiškia, kad be pašalintų failų ištrinami neištrinti katalogai.

  • -f reikalaujama, kad jis veiktų.

1
24 сент. Atsakymą pateikė Dark Matter 24 Sep. 2018-09-24 08:54 '18, 08:54 2018-09-24 08:54

Mano atveju aš padariau atsarginę kopiją ir ištrinau failą, dėl kurio Git skundėsi, ir jį ištaisė, po to galėjau pagaliau patikrinti kitą filialą.

Tada aš pakeičiau failą, nukopijuoju jo turinį ir tęsiau taip, tarsi nieko nebūtų atsitikę.

0
26 марта '18 в 9:29 2018-03-26 09:29 atsakymą CodyBugstein pateikė kovo 26 d. 18 val. 9:29 2018-03-26 09:29

Tai tikriausiai sukelia CRLF problemos.

Žiūrėkite: Kodėl git turėtų naudoti core.autocrlf = true?

Naudokite šią funkciją atnaujinimui:

 git pull origin master git checkout origin/master -f 
0
10 дек. Keith Turkowski atsakymas, gruodžio 10 d. 2018-12-10 06:45 '18, 06:45 am 2018-12-10 06:45

Išbandžiau pirmąjį atsakymą: git stash su dauguma taškų, bet klaidos pranešimas vis dar pasirodė, o tada radau šį straipsnį, kad įvykdytų pakeitimus, o ne „Atmestą įsipareigojimą“.

ir klaidos pranešimas visiškai išnyko:

1: git add.

2: git commit -m "this is an additional commit"

3: „ git checkout the-other-file-name

tada jis dirbo. Tikiuosi, kad šis atsakymas padės. :)

0
14 дек. atsakymas pateikiamas 14 d. 2018-12-14 05:01 '18 at 5:01 am 2018-12-14 05:01

Jei esate tikri, kad ateityje nereikia vietinių pakeitimų, galite atlikti šiuos veiksmus:

 git reset --hard git pull 
-2
14 дек. Atsakymą ExRajeev pateikė gruodžio 14 d. 2017-12-14 20:52 '17, 08:52 pm 2017-12-14 20:52

Peržiūrėkite kitus klausimus „ žyma arba užduoti klausimą