git, svn, mercurial

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,896
Git:
Am facut git clone la ceva de pe github. Mi-am salvat propriile modificari intr-un branch nou, local. Master-ul de pe github are acum update-uri. Cum fac sa incorporez update-urile alea in branch-ul meu?

Multumesc.
 

jarod

Super Moderator
Sugar daddy
Joined
Nov 27, 2003
Messages
1,577
Cred că tre să faci un git pull pentru a aduce master-ul la zi și apoi git merge ca să merge-uiești branch-ul tău în master (și să speri că nu apar conflicte :smile:).
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,896
OK, am facut pull deja. Dar nu prea vreau sa amestec branch-ul meu cu master-ul. Ma uitam la git rebase. Nu-i mai bun asta?

In orice caz, am conflicte. Imi spune care-s fisierele, dar nu stiu cum ar trebui sa analizez diferentele. E vorba de un fisier changelog pe care eu nu-mi amintesc sa-l fi modificat.
Am incercat git diff <fisier> dar nu m-am lamurit. Nu scrie care varianta este cea locala si care-i cea din master, presupunand ca git diff dupa un rebase neterminat chiar asta arata, nu total alteceva.
 

jarod

Super Moderator
Sugar daddy
Joined
Nov 27, 2003
Messages
1,577
Nu prea am folosit git, dar din cum înțeleg io că funcționează, un workflow comun ar fi ceva de genul: faci clone la repo, faci checkout într-un branch local, faci modificările în branch-ul tău local, iar când ai terminat faci merge înapoi în master-ul tău local. Apoi, dacă vrei poți să faci push înapoi către sursă.

Dacă în timp ce tu faci modificări în branch-ul tău, master-ul remote se schimbă, cred că e recomandat să îți sincronizezi master-ul local cu cel remote (via pull sau fetch?) înainte să faci merge.

Poate ar trebui să explici mai clar ce vrei să obții exact.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,896
Vreau sa am modificarile mele aplicate constant peste ultima versiune de pe github.
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,246
Faci rebase, dar nu înseamnă că n-o să ai probleme (conflicte). Dar dacă ai conflicte cu fișiere pe care tu zici că nu le-ai modificat, vezi istoricul tău vs istoricul lor. Poate ai bușit setări de autocrlf și ai modificat toate fișierele.

Ia un tool vizual, că e mai simplu de văzut ce-i acolo decât cu linia de comandă - vezi tree-ul vizual, vezi tot logul, vezi ce fișiere ai modificat etc.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,896
Am facut un rebase. Doua fisiere modificate. Am facut checkout la fisierele din master, apoi git add la cele doua si git rebase --continue. Apoi m-am pierdut. Imi zice ca sunt cu 4 commit-uri inaintea master-ului !?

Care tool vizual e ala? (PS: am un gentoo *foarte* personalizat)
 

Styr

Follower of the old ways
Sugar daddy
Joined
Oct 14, 2003
Messages
1,549
'git log' ar trebui să te lămurească mai bine decât noi care îs alea 4 commits.
 

Thor

Membru Senior
Sugar daddy
Joined
Dec 6, 2004
Messages
1,976
Încearcă `gitk` sau `tig` pentru tool-uri cu interfaţă (grafică sau TUI).
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,896
Fac un rebase. Branch-ul origin/master peste branch-ul meu local marius95.
Am conflicte. Unul dintre ele este un fisier modificat in marius95 de nenumarate ori, acum modificat si in master. Cand fac rebase se opreste la primul commit din marius95, adica ceva f. f. vechi. Banuiesc ca vrea sa aplice toate modificarile din marius95 secvential. Dar sunt o gramada!
Cum fac sa nu trec prin toate commit-urile pe fisierul respectiv?
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,246
Vezi squash, care îți lipește toate modificările într-una singură (preferabil într-un alt branch).
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,896
Am decoperit ca merge si git rebase --skip acolo unde pot sari peste intreg commit-ul.
 
Top Bottom