Es'esmu izveidojis attālu ne-bare "galvenais" repo un klonēt to uz manu datoru. Es veicu dažas vietējās izmaiņas, atjaunināju savu vietējo repozitoriju un izmaiņas nosūtīju atpakaļ uz savu attālo repozitoriju. Līdz tam viss bija kārtībā.
Tagad man vajadzēja kaut ko mainīt attālinātajā repozitorijā. Tad es kaut ko mainīju savā lokālajā repozitorijā. Es sapratu, ka izmaiņas attālinātajā repozitārijā nebija vajadzīgas. Tāpēc es mēģināju git push
no savas vietējās repo uz attālināto repo, bet man parādījās šāda kļūda:
Lai novērstu vēstures zaudēšanu, atjauninājumi, kas nav ātrāki par atjauninājumiem, tika noraidīts Apvienot attālinātās izmaiņas pirms atkārtotas izstumšanas. Skatīt 'Piezīme par ātru pārsūtīšanu' sadaļu
git push --help
, lai uzzinātu sīkāku informāciju.
Es domāju, ka, iespējams.
git push --force
piespiestu manu lokālo kopiju virzīt izmaiņas uz attālo un padarīt to vienādu. Tas patiešām piespiež atjaunināt, bet, kad es atgriežos pie attālinātās kopijas un veicu nodošanu, es pamanu, ka failos ir novecojušas izmaiņas (tās, kas iepriekš bija galvenajā attālinātajā kopijā).
Kā jau minēju komentāros pie vienas no atbildēm:
[Es] mēģināju piespiest, bet, atgriežoties galvenajā serverī, lai saglabātu izmaiņas, es saņemu novecojušus inscenējumus. Tādējādi, kad es nododu kopijas, repozitoriji nav vienādi. Un, kad mēģinu vēlreiz izmantot git push, saņemu to pašu kļūdu.
Kā es varu atrisināt šo problēmu?
Vienkārši dariet:
git push origin <your_branch_name> --force
vai, ja jums ir īpašs repo:
git push https://git.... --force
Tas izdzēsīs jūsu iepriekšējo(-ās) nodevumu(-as) un virzīs jūsu pašreizējo.
Iespējams, tas nav pareizi, bet, ja kāds, uztriecoties uz šo lapu, domāja, ka viņi varētu vēlēties vienkāršu risinājumu...
Ņemiet vērā arī to, ka -f
ir saīsinājums no --force
, tātad
git push origin <your_branch_name> -f
arī darbosies.
Pirmkārt, es neveicu nekādas izmaiņas tieši "main" repo. Ja jūs patiešām vēlaties, lai jums būtu "galvenais" repo, tad jums vajadzētu tikai push uz to, nekad nemainīt to tieši.
Attiecībā uz kļūdu, ko saņemat, vai esat mēģinājis git pull
no sava vietējā repozitorija un pēc tam git push
uz galveno repozitoriju? Tas, ko jūs pašlaik darāt (ja es to labi sapratu), ir piespiedu push un pēc tam zaudējat savas izmaiņas galvenajā repozitārijā ("main"). Vispirms jums vajadzētu apvienot izmaiņas lokāli.
Es tiešām ieteiktu:
push tikai uz galveno repo
pārliecināties, ka galvenais repo ir bare repo, lai nekad nerastos problēma, ka galvenā repo darba koks nav sinhronizēts ar tā .git
bāzi. Skatiet "Kā pārvietot vietējo git repozitoriju uz citu datoru?"
Ja jums ir jāveic izmaiņas galvenajā (tukšajā) repozitorijā, klonējiet to (galvenajā serverī), veiciet izmaiņas un virziet atpakaļ uz to.
Citiem vārdiem sakot, saglabājiet tukšo repozitāriju, kas ir pieejams gan no galvenā servera, gan no vietējā datora, lai būtu viens augšupejošais repozitārijs, no kura/uz kuru var vilkt/vilkt.