CodeGym /Blog Java /Aleatoriu /Un meci făcut în rai: Git și IntelliJ IDEA
John Squirrels
Nivel
San Francisco

Un meci făcut în rai: Git și IntelliJ IDEA

Publicat în grup
Respectând tradiția stabilită, vă salut în calitate de viitori ingineri software seniori. Un meci făcut în rai: Git și IntelliJ IDEA - 1Articolul de astăzi este extensia logică a articolului meu despre Git . În articolul despre Git, am descris cum să lucrezi cu Git pe linia de comandă. Astăzi vă voi arăta cum să faceți totul în IntelliJ IDEA. La începutul călătoriei mele ca dezvoltator, am folosit linia de comandă și am crezut că nu am nevoie de o interfață grafică pentru asta. La urma urmei, totul era clar așa cum era... Dar asta a fost chiar până în momentul în care am început să folosesc Git în IntelliJ IDEA... De la început, vreau să spun că îmi descriu experiența personală. Există mai multe moduri de a rezolva orice problemă dată în IntelliJ IDEA. Dacă știți o modalitate mai bună decât ceea ce voi descrie în articol, scrieți-o în comentarii și o vom discuta.

Intrări necesare:

  1. Citiți, urmăriți și înțelegeți articolul meu despre Git . Acest lucru vă va ajuta să vă asigurați că totul este configurat și gata de funcționare.
  2. Instalați IntelliJ IDEA.
  3. Alocați o oră de timp personal pentru a obține o stăpânire completă.
Să lucrăm cu proiectul demonstrativ pe care l-am folosit pentru articolul despre Git. ACTUALIZAȚI:La momentul publicării, noua interfață de utilizare GitHub va fi disponibilă, iar unele pictograme nu vor fi acolo unde sunt afișate în articol. Nu vă alarmați: trebuie doar fie să nu treceți la noua interfață de utilizare, fie să le căutați.

Clonează proiectul la nivel local

Există două opțiuni aici:
  1. Dacă aveți deja un cont GitHub și doriți să împingeți ceva mai târziu, este mai bine să forkați proiectul și să vă clonați propria copie.
  2. Clonează-mi depozitul și fac totul la nivel local, fără a avea capacitatea de a împinge totul pe server. La urma urmei, acesta este depozitul meu :)
Pentru a clona un proiect din GitHub, trebuie să copiați linkul proiectului și să îl transmiteți către IntelliJ IDEA:
  1. Copiați adresa proiectului:

    Un meci făcut în rai: Git și IntelliJ IDEA - 2
  2. Deschideți IntelliJ IDEA și selectați „Obțineți de la Controlul versiunii”:

    Un meci făcut în rai: Git și IntelliJ IDEA - 3
  3. Copiați și lipiți adresa proiectului:

    Un meci făcut în rai: Git și IntelliJ IDEA - 4
  4. Vi se va solicita să creați un proiect IntelliJ IDEA. Accepta oferta:

    Un meci făcut în rai: Git și IntelliJ IDEA - 5
  5. Deoarece nu există un sistem de construcție și asta depășește domeniul de aplicare al acestui articol, selectăm Creare proiect din surse existente :

    Un meci făcut în rai: Git și IntelliJ IDEA - 6
  6. În continuare veți vedea acest ecran frumos: Un meci făcut în rai: Git și IntelliJ IDEA - 7Acum că ne-am dat seama de clonare, puteți arunca o privire în jur.

Prima vedere la IntelliJ IDEA ca interfață de utilizare Git

Aruncați o privire mai atentă la proiectul clonat: puteți obține deja o mulțime de informații despre sistemul de control al versiunilor. În primul rând, avem panoul Control versiuni în colțul din stânga jos. Aici puteți găsi toate modificările locale și puteți obține o listă de commit-uri (analog cu „git log”). Să trecem la o discuție despre Log . Există o anumită vizualizare care ne ajută să înțelegem exact cum a decurs dezvoltarea. De exemplu, puteți vedea că o nouă ramură a fost creată cu un antet adăugat la txt commit, care a fost apoi îmbinat în ramura principală. Dacă dați clic pe un commit, puteți vedea în colțul din dreapta toate informațiile despre commit: toate modificările și metadatele acestuia.Un meci făcut în rai: Git și IntelliJ IDEA - 8Mai mult, puteți vedea modificările reale. Vedem și că acolo s-a rezolvat un conflict. IDEA prezintă și acest lucru foarte bine. Dacă faceți dublu clic pe fișierul care a fost modificat în timpul acestei comiteri, vom vedea cum a fost rezolvat conflictul: Un meci făcut în rai: Git și IntelliJ IDEA - 9Remarcăm că în stânga și în dreapta avem cele două versiuni ale aceluiași fișier care trebuiau îmbinate într-una singură. Și la mijloc, avem rezultatul final combinat. Când un proiect are multe ramuri, comite-uri și utilizatori, trebuie să căutați separat după ramură, utilizator și dată: Un meci făcut în rai: Git și IntelliJ IDEA - 10ultimul lucru pe care vreau să-l explic înainte de a începe este cum să înțelegem în ce ramură ne aflăm. Vă voi oferi un minut să-l dai seama... L-ai găsit? Renunța? :D În colțul din dreapta jos, există un buton etichetat Git: master. Orice urmează „Git:” este ramura curentă. Dacă faceți clic pe butonul, puteți face o mulțime de lucruri utile: treceți la o altă ramură, creați una nouă, redenumiți una existentă și așa mai departe.Un meci făcut în rai: Git și IntelliJ IDEA - 11

Lucrul cu un depozit

Taste rapide utile

Pentru lucrări viitoare, trebuie să vă amintiți câteva taste rapide foarte utile:
  1. CTRL+T — Obțineți cele mai recente modificări din depozitul de la distanță (git pull).
  2. CTRL+K — Creați un commit / vedeți toate modificările curente. Aceasta include atât fișierele neurmărite, cât și cele modificate (vezi articolul meu despre git, care explică acest lucru) (git commit).
  3. CTRL+SHIFT+K — Aceasta este comanda pentru introducerea modificărilor în depozitul de la distanță. Toate commit-urile create local și care nu sunt încă în depozitul de la distanță vor fi împins (git push).
  4. ALT+CTRL+Z — Rollback modificările dintr-un anumit fișier la starea ultimei comitere create în depozitul local. Dacă selectați întregul proiect în colțul din stânga sus, puteți anula modificările din toate fișierele.
Un meci făcut în rai: Git și IntelliJ IDEA - 12

Ce vrem noi?

Pentru a termina munca, trebuie să stăpânim un scenariu de bază care este folosit peste tot. Obiectivul este de a implementa o nouă funcționalitate într-o ramură separată și apoi de a o împinge într-un depozit de la distanță (atunci trebuie să creați și o cerere de extragere în ramura principală, dar asta depășește scopul acestui articol). Ce este necesar pentru a face asta?
  1. Obțineți toate modificările curente în ramura principală (de exemplu, „master”).

  2. Din această ramură principală, creați o ramură separată pentru munca dvs.

  3. Implementați noua funcționalitate.

  4. Mergeți la filiala principală și verificați dacă au existat modificări noi în timp ce lucram. Dacă nu, atunci totul este în regulă. Dar dacă au existat modificări, atunci facem următoarele: mergeți la ramura de lucru și rebazați modificările de la ramura principală la a noastră. Dacă totul merge bine, atunci grozav. Dar este cu totul posibil să apară conflicte. După cum se întâmplă, pot fi rezolvate în avans, fără a pierde timp în depozitul de la distanță.

    Te întrebi de ce ar trebui să faci asta? Sunt bune maniere și previne apariția conflictelor după ce vă împingeți ramura către depozitul local (există, desigur, posibilitatea ca conflictele să apară în continuare, dar devine mult mai mică ).

  5. Introduceți modificările în depozitul de la distanță.
Ceea ce urmează depinde de sarcinile tale și de imaginația ta.

Obțineți modificări de la serverul de la distanță?

Am adăugat o descriere la README cu un nou commit și vreau să obțin aceste modificări. Dacă s-au făcut modificări atât în ​​depozitul local, cât și în cel la distanță, atunci suntem invitați să alegem între o îmbinare și o rebase. Alegem să unim. Introduceți CTRL+T : Un meci făcut în rai: Git și IntelliJ IDEA - 13Acum puteți vedea cum s-a schimbat README, adică au fost introduse modificările din depozitul de la distanță, iar în colțul din dreapta jos puteți vedea toate detaliile modificărilor care au venit de la server.Un meci făcut în rai: Git și IntelliJ IDEA - 14

Creați o nouă ramură bazată pe master

Totul este simplu aici.
  1. Mergeți în colțul din dreapta jos și faceți clic pe Git: master . Selectați + Filială nouă .

    Un meci făcut în rai: Git și IntelliJ IDEA - 15
  2. Lăsați caseta de selectare Checkout branch selectată și introduceți numele noii filiale. Pentru mine, va fi readme-improver .

    Un meci făcut în rai: Git și IntelliJ IDEA - 16

    Git: master se va schimba apoi în Git: readme-improver .

Să simulăm lucrul paralel

Pentru a apărea conflicte, cineva trebuie să le creeze :D Voi edita README-ul cu un nou commit prin browser, simulând astfel munca paralelă. Este ca și cum cineva a făcut modificări în același fișier în timp ce lucram la el. Rezultatul va fi un conflict. Voi elimina cuvântul „fully” din rândul 10.

Implementați funcționalitatea noastră

Sarcina noastră este să schimbăm README și să adăugăm o descriere noului articol. Adică, munca în Git trece prin IntelliJ IDEA. Adăugați acest lucru: Un meci făcut în rai: Git și IntelliJ IDEA - 17modificările sunt finalizate. Acum putem crea un commit. Apăsați CTRL+K , ceea ce ne oferă: Un meci făcut în rai: Git și IntelliJ IDEA - 18Înainte de a crea un commit, trebuie să aruncăm o privire atentă la ceea ce oferă această fereastră. Am adăugat săgeți roșii pentru a vă arăta unde să căutați. Sunt o mulțime de lucruri interesante aici. În secțiunea Commit Message , scriem text asociat cu commit-ul. Apoi, pentru a-l crea, trebuie să facem clic pe Commit. Încă nu am aflat cum să fac asta cu o tastă rapidă. Dacă cineva află cum, vă rog să-mi scrieți - asta m-ar face foarte fericit. Scriem că README s-a schimbat și creăm commit-ul. În colțul din stânga jos apare o alertă cu numele comiterii:Un meci făcut în rai: Git și IntelliJ IDEA - 19

Verificați dacă ramura principală s-a schimbat

Ne-am îndeplinit sarcina. Funcționează. Am scris teste. Totul e bine. Dar înainte de a apăsa pe server, trebuie să verificăm dacă au existat modificări în ramura principală între timp. Cum s-ar putea întâmpla asta? Destul de ușor: cineva primește o sarcină după tine și acel cineva o termină mai repede decât îți termini tu sarcina. Deci trebuie să mergem la filiala principală. Pentru a face acest lucru, trebuie să facem ceea ce este afișat în colțul din dreapta jos în captura de ecran de mai jos: Un meci făcut în rai: Git și IntelliJ IDEA - 20În ramura principală, apăsați CTRL+T pentru a obține cele mai recente modificări de la serverul de la distanță. Privind care sunt modificările, puteți vedea cu ușurință ce s-a întâmplat:Un meci făcut în rai: Git și IntelliJ IDEA - 21Cuvântul „fully” a fost eliminat. Poate cineva de la marketing a decis că nu trebuie scris așa și a dat dezvoltatorilor sarcina de a-l actualiza. Acum avem o copie locală a celei mai recente versiuni a ramului principal. Reveniți la readme-improver . Acum trebuie să rebazăm modificările de la ramura principală la a noastră. Facem asta: Un meci făcut în rai: Git și IntelliJ IDEA - 22Dacă ați făcut totul corect și ați urmat împreună cu mine, rezultatul ar trebui să arate un conflict în fișierul README: Un meci făcut în rai: Git și IntelliJ IDEA - 23Aici avem și o mulțime de informații de înțeles și de absorbit. Afișată aici este o listă de fișiere (în cazul nostru, un fișier) care au conflicte. Putem alege dintre trei variante:
  1. accept-l pe al tău — acceptă numai modificările din readme-improver.
  2. acceptă-le pe ale lor — acceptă doar schimbările de la stăpân.
  3. îmbinare — alege-te ce vrei să păstrezi și ce să renunți.
Nu este clar ce s-a schimbat. Dacă există modificări sunt ramura principală, ele trebuie să fie necesare acolo, așa că nu putem să ne acceptăm pur și simplu modificările. În consecință, selectăm îmbinare : Un meci făcut în rai: Git și IntelliJ IDEA - 24Aici putem vedea că există trei părți:
  1. Acestea sunt modificările de la readme-improver.
  2. Rezultatul îmbinat. Deocamdată, este ceea ce exista înainte de schimbări.
  3. Schimbările din ramura master.
Trebuie să producem un rezultat îmbinat care să mulțumească pe toată lumea. Analizând ceea ce a fost schimbat ÎNAINTE de modificările noastre, ne dăm seama că pur și simplu au eliminat cuvântul „fully”. Bine nici o problema! Asta înseamnă că îl vom elimina și din rezultatul îmbinat și apoi vom adăuga modificările noastre. Odată ce corectăm rezultatul îmbinat, putem face clic pe Aplicare . Apoi va apărea o notificare, care ne spune că rebazarea a avut succes: Un meci făcut în rai: Git și IntelliJ IDEA - 25Acolo! Am rezolvat primul nostru conflict prin IntelliJ IDEA :D

Împingeți modificările către serverul de la distanță

Următorul pas este să împingeți modificările către serverul de la distanță și să creați o cerere de extragere. Pentru a face acest lucru, apăsați pur și simplu CTRL+SHIFT+K . Apoi obținem: Un meci făcut în rai: Git și IntelliJ IDEA - 26În stânga, va exista o listă de comitări care nu au fost împinse în depozitul de la distanță. În dreapta vor fi toate fișierele care s-au schimbat. Si asta e! Apăsați Push și veți experimenta fericirea :) Dacă push-ul are succes, veți vedea o notificare ca aceasta în colțul din dreapta jos:Un meci făcut în rai: Git și IntelliJ IDEA - 27

Partea bonus

La început, nu am vrut să adaug crearea unei cereri de extragere la acest articol, dar nu este complet complet fără ea. Deci, să mergem la un depozit GitHub (unul care este al tău, desigur :)) și vedem că GitHub știe deja ce vrem: Faceți Un meci făcut în rai: Git și IntelliJ IDEA - 28clic pe Compare & pull request . Apoi faceți clic pe Creare cerere de extragere . Deoarece am rezolvat conflictele în avans, acum, când creăm o cerere de extragere, o putem îmbina imediat: Un meci făcut în rai: Git și IntelliJ IDEA - 29Și asta este tot ce am vrut să spun de data aceasta. Desigur, ți-am deschis doar puțin ușa și ți-am arătat o mică parte. Veți învăța despre restul așa cum aveți nevoie. Am obiceiul să te invit să mă urmărești pe GitHub, unde îmi postez proiectele care implică diverse tehnologii pe care le folosesc la serviciu. Am realizat recent o realizare personală: unul dintre proiectele mele a primit stele de la peste o sută de dezvoltatori. Există un sentiment incredibil de bucurie când știi că ceea ce ai făcut este folosit de altcineva. Și să-l folosești pentru bine.

Link-uri utile

  1. CodeGym: Noțiuni introductive cu Git: un ghid cuprinzător pentru începători
  2. GitHub: Proiect demonstrativ pentru practică
  3. JetBrains: Configurați un depozit Git
  4. GitHub: Contul meu
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION