Folositi Git in linie de comanda?

Se cere din ce in ce mai mult Git in linie de comanda, cateva din comenzi uzuale:

git clone branch_url
git commit
git push

Pentru update branch de lucru cu master sau develop:

git pull origin develop

Cand fac un merge ne-reusit folosesc reset head la un commit:

git reset --hard SOME-COMMIT
git push --force

Intreb fiindca Linkedin are un test pentru Git in linie de comanda si l-am picat la limita sa il trec, m-a pus pe ganduri sa invat mai bine Git in linie de comanda, cred ca iti poate da o intelegere mai profunda in lucrul cu branch-uri.

Retake in 18d

1 Like

Eu mai folosesc in linie de comanda. Uneori comenzile mi se par mai explicite decat interfata pusa la dispozitie de ide. Confictele imi place sa le rezolv din ide


https://www.iamntz.com/4643/frontend-developer/git-cli-sau-gui/

Folosesc Git numai din linie de comanda dar cu un numar relativ mic de comenzi.

4 Likes

https://dev.to/unseenwizzard/learn-git-concepts-not-commands-4gjc

Am salvat acest articol :slight_smile:

E bine să ai ceva noțiuni de CLI, dar în viața de zi cu zi ai foarte rar nevoie de mai mult decât oferă GUI. Funcționalități ce nu le poți face în vreun GUI (sau sunt foarte ascunse/neintuitive):

  • reflog - în git este mai greu decât pare să ștergi definitiv lucruri. Iar dacă ștergi (e.g. reset --hard), poți recupera destul de ușor;
  • ignorarea unui fișier care este deja în repo.

Evident, dacă interacționezi și cu servere remote (fără GUI), ar fi util să poți face un checkout, reset șamd :smiley:

git push --force cine foloseste asta… e clar

La fel si eu. Am invatat de la început numai linia de comandă și nici nu stiu daca am vreun GUI instalat.

Am folosit în trecut totuși ocazional software-ul de la Atlassian.

1 Like

Acesta se foloseste la reset head dupa merge ne-reusit daca ai alta modalitate poti sa ne o spui.

Am incercat mai multe solutii si a fost singura care a functionat.

in viata de zi cu zi… foarte rar ai nevoie de gui :slight_smile:

4 Likes

De gustibus, fără îndoială. Dar mie mi se pare mai comod în GUI oricare dintre următoarele operațiuni:

  • să văd ce fișiere au fost modificate;
  • dacă toate modificările ar trebui sau nu să apară în acel commit;
  • să aleg doar o parte dintre modificările dintr-un fișier pentru acel commit (chunks).

N-am nici o problemă cu CLI, dar toate aceste operațiuni sunt mai usor de realizat în GUI :slight_smile:

2 Likes

evident.
pana la urma scopul e duci taskul la final (updateul in repository).
mai depinde si de fluxul de lucru si de tehnologia folosita.
dar pentru cineva care lucreaza cu linux de multi ani… cli e de foarte multe ori varianta preferata.

Si eu folosesc Tortoise Git si IDE integration dar clientul mi-a cerut sa fac anumite operatii din CLI.

Ideea e ca trebuie sa iti tii branch update de asta facem git pull origin develop.

Git flowul tau e posibil sa fie gresit. Ia cauta pe Google git push --force , ce meme apare? De ce?

Da ideea e ca daca iti tii branch-urile update probabilitatea de broken merge e mica, teoretic nici nu ar trebui sa ai broken merge, si GUI ajuta aici, dar cand ai branch foarte in urma e greu sa urmaresti toate modificarile.

Cum altfel te descurci cu rebase-uri și Feature branch-uri remote?

In alta ordine de idei, protip pentru developeri mai la început de drum / comozi / dinspre windows: bagati CLI cat mai mult! Git desigur, cum zice și OP. Dar și tool-urile de build, linterele, testarea, interacțiunea cu sistemele etc. Le demistifica și va da un boost de înțelegere a aplicațiilor masiv! Și o ziua de azi eu dau yarn compile sau gradle build de mana din CLI, chiar daca IntelliJ știe să facă toate astea ptr mine.

2 Likes

Deci - git flow:

  1. git checkout base_branch
  2. git pull origin base_branch
  3. git checkout -b task_branch
  4. git commit -m "task changes..." <file1...>
  5. git push origin task_branch
  6. Faci un PR vs base_branch eventual din interfata, ca sa vezi conflictele
  7. Ai conflicte, atunci le rezolvi pe task_branch
    7.0 git merge base_branch
    7.1. git add <file1...>
    7.2. git commit -am "fixed merge conflicts"
    7.3 git push origin task_branch

All fixed, no --force

1 Like

Folosim git numai in linie de comanda! Nu vad de ce ai folosi altceva decat command line. Si eventual gitlab/github pt hosting, in functie de proiecte.

Pentru ca e mai simplu sa vezi modificarile sau diff-urile? :slight_smile:
Poate daca faci mereu doar git commmit/pull/push atunci e simplu din terminal, dar daca vrei sa cauti un commit de acum cateva luni si vrei sa faci un cherry pick doar la anumite linii din cod, cat te chinui in linia de comanda?

1 Like

Cel mai bine, totul editat in cmd line (vim, nano, ee in functie de varianta de *nix), apoi git pt schimbari, iar un pipeline in gitlab iti garanteaza successul commit-ului sau nu :slight_smile: (push in prod or not)