El tudok képzelni olyan szituációt, ahol egyszerűbb valamit kézzel visszamásolni, pl több branch, amik egymásból ágaznak, az egyik össze-squasholva vissza lett merge-ölve a main-be, a másikat pedig rebase-elni akarod a main-re, de közben minden is át lett írva.
NEM. Alapesetről beszélünk.
egy alap eset, amit tökéletesen kezel.
Meg egy nagy lótúrót, dehogy kezeli.
Reprodukálás:
1. csinálj egy github repót, egyetlen main branch-el
2. klónozd le lokálba
3. módosíts, commit-olj
4. az egyszerűség kedvéért a webes editorral módosítsd a README-t
5. és most próbálj meg push-olni
Hiába állítod az ellenkezőjét, nem fog menni, a git NEM képes kezelni ezt a legegyszerűbb esetet sem, pedig nincs több branch, nincs egymásból ágazás, nincs history squash, nincs se semmi, faék egyszerű minden.
Helyette egy ilyen hibaüzenetet fog kiokádni:
! [rejected] main -> main (non-fast-forward) error: failed to push some refs to 'https://github.com/valami.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Vagy ezt: https://media.geeksforgeeks.org/wp-content/uploads/20240711092459/ad222…
A legszebb az egészben, hogy a hibaüzenetben javasolt "git pull" is csak akkor működik, ha különböző fájlok módosultak, egyébként rebase / merge kell(ene). Sok-sok éves tapasztalatból mondom, hogy ilyenkor hatékonyabb újra leklónozni, átrakni a módosításokat, onnan commit+push, régi töröl. Rengeteg időt spórolsz meg, sokkal gyorsabban megy, mint bármiféle git paranccsal szarakodni.
Próbáld csak ki! Pár egyszerű lépésben ellenőrizheted, hogy tényleg így működik-e a git!