Igen, bzt, Te biztos jobban összemerge-ölsz mindent kézzel, mint a git, amit erre találtak ki. :))
Hagyjuk már ezt a hazugozást, nem ugyanúgy látjuk a dolgokat. Tizensok éve használom a git-et, nem fogod ezt most megmagyarázni, hogy a git sz*r. Köszi.
Szerk: a teljesség kedvéért a példád, mielőtt azt mondod, hogy nem próbáltam ki (de már sokszor kipróbáltam):
Default beállítások:
git config --global init.defaultBranch main
git config --global pull.rebase true
Hozz létre három repository-t:
mkdir a b c
cd a
git init
cd ..
cd b
git init
cd ..
cd c
git init --bare
cd ..
Add hozzá a az "a"-hoz, "b"-hez a "c"-t mint remote repo-t:
cd a
git remote add origin ../c
cd ..
cd b
git remote add origin ../c
cd ..
Commitoljunk az "a"-ba, és pusholjuk "fel":
cd a
echo "Ez egy readme fájl." > readme.txt
git add readme.txt
git commit -m "Add readme.txt"
git push --set-upstream origin main
cd ..
Leszedjük a b-ben:
cd b
git pull origin main
cd ..
Commitoljunk megint az "a"-ba, és pusholjuk:
cd a
echo "Ez egy readme fájl. #2" >> readme.txt
git add .
git commit -m "readme.txt 2"
git push
cd ..
Majd a "b"-be is:
cd b
echo "teszt" >> readme.txt
git add .
git commit -m "teszt b"
git push --set-upstream origin main
Itt jön a hibaüzenet, amin megakadtunk (ami teljesen jogos, és normális hogy jön):
git ! [rejected] main -> main (fetch first)
error: failed to push some refs to '../c'
hint: Updates were rejected because the remote contains work that you do not
És itt pedig a feloldása::
git pull origin main
Ezt kapod rá válaszul:
From ../c
* branch main -> FETCH_HEAD
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
error: could not apply c0151ab... teszt b
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
Ezen a ponton kell merge-ölnöd, és vedd észre, hogy kiírta a további teendőket:
vi readme.txt
git add readme.txt
git rebase --continue
és voilá, tudsz push-olni:
git push --set-upstream origin main
Jogos, hogy merge-ölni kellett?
Igen, mindenképp. Honnan tudta volna kitalálni a git, hogy Te azzal a három sorral mit akarsz, melyik a valid?
Ezt fájl kopizgatással, meg diff-fel nehezebb lett volna összehozni? Ezt a kis példát talán nem, de egy nagy projektben mindenképpen.