Kako pravilno izvedem potiskanje Git?
Vzpostavil sem oddaljeno ne-bare "main" repo in ga kloniral na svoj računalnik. Naredil sem nekaj lokalnih sprememb, posodobil lokalno skladišče in spremembe prenesel nazaj v oddaljeno skladišče. Do takrat je bilo vse v redu.
Zdaj sem moral nekaj spremeniti v oddaljenem repu. Nato sem nekaj spremenil v svoji lokalni zbirki. Ugotovil sem, da sprememba v oddaljenem repu ni potrebna. Zato sem poskušal git push
iz lokalne repozitnice v oddaljeno repozitnico, vendar sem dobil napako, kot je:
Da bi preprečili izgubo zgodovine, so bile posodobitve brez hitrega posredovanja
zavrnjeno Združitev oddaljenih sprememb pred ponovnim potiskanjem. Oglejte si 'Opomba o hitrem napredovanju' v razdelku
git push --help
za podrobnosti.
Mislil sem, da je verjetno
git push --force
bi moja lokalna kopija prisilila, da spremembe prenese v oddaljeno kopijo in jo naredi enako. Preseneti posodobitev, toda ko se vrnem na oddaljeno repozitorij in opravim oddajo, opazim, da datoteke vsebujejo zastarele spremembe (tiste, ki jih je prej imel glavni oddaljeni repozitorij).
Kot sem omenil v komentarjih k enemu od odgovorov:
Ko se vrnem v glavni strežnik, da bi shranil spremembe, dobim zastarelo preslikavo. Tako, ko oddam skladišča, skladišča niso enaka. In ko poskušam ponovno uporabiti funkcijo git push, dobim enako napako.
Kako lahko odpravim to težavo?
Preprosto naredite:
ali če imate določen repozitorij:
To bo izbrisalo vaše prejšnje oddaje in potisnilo vašo trenutno.
Morda ni pravilno, a če kdo naleti na to stran, je mislil, da želi preprosto rešitev...
Kratka zastavica
Upoštevajte tudi, da je
-f
kratica za--force
, torejbo prav tako delovalo.
Prvič, ne bi delal nobenih sprememb neposredno v repu "main". Če res želite imeti "glavni" repro, potem ga morate le potiskati vanj, nikoli pa ga neposredno spreminjati.
V zvezi z napako, ki jo dobivate, ali ste poskusili z
git pull
iz lokalnega repozitorija in natogit push
v glavni repozitorij? To, kar trenutno počnete (če sem dobro razumel), je, da vsiljujete potiskanje in nato izgubite svoje spremembe v "glavnem" repu. Spremembe bi morali najprej združiti lokalno.Resnično priporočam:
potisnite samo v glavno skladišče
poskrbite, da je glavna repoteka gola repoteka, da ne bi nikoli imeli težav z delovnim drevesom glavne repoteke, ki ni sinhronizirano z njeno bazo
.git
. Glejte "Kako premakniti lokalno skladišče git v drug računalnik?"Če morate spremeniti glavno (golo) skladišče, ga klonirajte (v glavnem strežniku), opravite spremembe in ga potisnite nazaj
Z drugimi besedami, ohranite goli repozitorij, ki je dostopen tako z glavnega strežnika kot z lokalnega računalnika, da boste imeli en sam repozitorij, iz katerega/za katerega lahko vlečete/potegnete.