Днешната статия е логично продължение на моята статия за Git . В статията за Git описах How се работи с Git в командния ред. Днес ще ви покажа How да направите всичко това в IntelliJ IDEA. В началото на моето пътуване като разработчик използвах командния ред и мислех, че нямам нужда от GUI за това. В края на краищата всичко беше ясно, Howто си беше... Но това беше точно до момента, в който започнах да използвам Git в IntelliJ IDEA... От самото начало искам да кажа, че описвам личния си опит. Има няколко начина за решаване на даден проблем в IntelliJ IDEA. Ако знаете по-добър начин от това, което ще опиша в статията, напишете го в коментарите и ще го обсъдим.
Необходими входове:
- Прочетете, следвайте и разберете моята статия за Git . Това ще помогне да се гарантира, че всичко е настроено и готово за работа.
- Инсталирайте IntelliJ IDEA.
- Отделете един час лично време, за да постигнете пълно майсторство.
Клонирайте проекта локално
Тук има два варианта:- Ако вече имате акаунт в GitHub и искате да натиснете нещо по-късно, по-добре е да разклоните проекта и да клонирате собственото си копие.
- Клонирайте моето хранorще и правете всичко локално, без възможността да избутате всичко на сървъра. Все пак това е моето хранorще :)
-
Копирайте address на проекта:
![Съвпадение, напequalsо в небето: Git и IntelliJ IDEA - 2]()
-
Отворете IntelliJ IDEA и изберете „Вземете от контрола на версиите“:
![Съвпадение, напequalsо в небето: Git и IntelliJ IDEA - 3]()
-
Копирайте и поставете address на проекта:
![Съвпадение, напequalsо в небето: Git и IntelliJ IDEA - 4]()
-
Ще бъдете подканени да създадете проект IntelliJ IDEA. Приемете офертата:
![Съвпадение, напequalsо в небето: Git и IntelliJ IDEA - 5]()
-
Тъй като няма система за изграждане и това е извън обхвата на тази статия, ние избираме Създаване на проект от съществуващи източници :
![Съвпадение, напequalsо в небето: Git и IntelliJ IDEA - 6]()
-
След това ще видите този красив екран:
След като разбрахме клонирането, можете да се огледате наоколо.
Първи поглед към IntelliJ IDEA като Git UI
Погледнете по-отблизо клонирания проект: вече можете да получите много информация за системата за контрол на версиите. Първо, имаме панела за контрол на версиите в долния ляв ъгъл. Тук можете да намерите всички локални промени и да получите списък с ангажименти (аналогично на "git log"). Нека да преминем към обсъждане на Log . Има известна визуализация, която ни помага да разберем How точно е протекло развитието. Например, можете да видите, че е създаден нов клон с добавена заглавка към txt commit, който след това е обединен в главния клон. Ако щракнете върху ангажимент, можете да видите в десния ъгъл цялата информация за ангажимента: всички негови промени и метаданни.
Освен това можете да видите действителните промени. Виждаме също, че там е разрешен конфликт. IDEA също представя това много добре. Ако щракнете двукратно върху file, който е бил променен по време на този комит, ще видим How е разрешен конфликтът:
Отбелязваме, че отляво и отдясно имаме двете версии на един и същи файл, които трябваше да бъдат обединени в един. И в средата имаме крайния обединен резултат. Когато даден проект има много клонове, ангажименти и потребители, трябва да търсите отделно по клон, потребител и дата:
Последното нещо, което искам да обясня, преди да започнем, е How да разберем в кой клон се намираме. Ще ви дам minutesа, за да го разбера... Намери ли го? Предавам се? :D В долния десен ъгъл има бутон с надпис Git: master. Всичко, което следва "Git:", е текущият клон. Ако щракнете върху бутона, можете да направите много полезни неща: да превключите към друг клон, да създадете нов, да преименувате съществуващ и т.н.
Работа с хранorще
Полезни клавишни комбинации
За бъдеща работа трябва да запомните няколко много полезни клавишни комбинации:- CTRL+T — Вземете последните промени от отдалеченото хранorще (git pull).
- CTRL+K — Създайте ангажимент / вижте всички текущи промени. Това включва Howто непроследени, така и модифицирани файлове (вижте моята статия за git, която обяснява това) (git commit).
- CTRL+SHIFT+K — Това е командата за натискане на промени в отдалеченото хранorще. Всички ангажименти, създадени локално и все още не в отдалеченото хранorще, ще бъдат насочени (git push).
- ALT+CTRL+Z — Възстановяване на промените в конкретен файл до състоянието на последния комит, създаден в локалното хранorще. Ако изберете целия проект в горния ляв ъгъл, можете да отмените промените във всички файлове.
Howво искаме
За да свършим работата, трябва да овладеем основен сценарий, който се използва навсякъде. Целта е да внедрите нова функционалност в отделен клон и след това да я преместите в отдалечено хранorще (тогава трябва да създадете и заявка за изтегляне към главния клон, но това е извън обхвата на тази статия). Какво е необходимо за това?-
Вземете всички текущи промени в основния клон (например "master").
-
От този основен клон създайте отделен клон за вашата работа.
-
Внедрете новата функционалност.
-
Отидете до основния клон и проверете дали е имало нови промени, докато работим. Ако не, значи всичко е наред. Но ако има промени, тогава правим следното: отиваме в работния клон и пребазираме промените от основния клон към нашия. Ако всичко върви добре, тогава страхотно. Но е напълно възможно да има конфликти. Както се случва, те просто могат да бъдат решени предварително, без да губите време в отдалеченото хранorще.
Чудите ли се защо трябва да направите това? Това е добро възпитание и предотвратява възникването на конфликти след натискане на вашия клон към локалното хранorще (има, разбира се, възможност конфликтите да възникнат, но тя става много по-малка ) .
- Изпратете вашите промени в отдалеченото хранorще.
Получаване на промени от отдалечения сървър?
Добавих описание към README с нов ангажимент и искам да получа тези промени. Ако са напequalsи промени Howто в локалното хранorще, така и в отдалеченото, тогава сме поканени да изберем между сливане и повторно базиране. Избираме да се слеем. Въведете CTRL+T :
Вече можете да видите How се е променил README, т.е. промените от отдалеченото хранorще са бor изтеглени, а в долния десен ъгъл можете да видите всички подробности за промените, дошли от сървъра.
Създайте нов клон на базата на master
Тук всичко е просто.-
Отидете в долния десен ъгъл и щракнете върху Git: master . Изберете + Нов клон .
![Съвпадение, напequalsо в небето: Git и IntelliJ IDEA - 15]()
Оставете отметката в квадратчето Checkout branch и въведете името на новия клон. За мен ще бъде readme-improver .
След това Git: master ще се промени на Git: readme-improver .
Нека симулираме паралелна работа
За да се появят конфликти, някой трябва да ги създаде :D Ще редактирам README с нов комит през браузъра, като по този начин симулирам паралелна работа. Сякаш някой е направил промени в същия файл, докато аз работя върху него. Резултатът ще бъде конфликт. Ще премахна думата "fully" от ред 10.Внедрете нашата функционалност
Нашата задача е да променим README и да добавим описание към новата статия. Тоест работата в Git минава през IntelliJ IDEA. Добавете това:
Промените са напequalsи. Сега можем да създадем ангажимент. Натиснете CTRL+K , което ни дава:
Преди да създадем ангажимент, трябва да разгледаме внимателно Howво предлага този прозорец. Добавих червени стрелки, за да ви покажа къде да търсите. Тук има много интересни неща. В секцията Commit Message пишем текст, свързан с ангажимента. След това, за да го създадем, трябва да щракнете върху Commit. Все още не съм открил How да направя това с бърз клавиш. Ако някой разбере How, моля да ми пише - много ще ме зарадва. Пишем, че README е променен и създаваме ангажимента. В долния ляв ъгъл се появява предупреждение с името на ангажимента:
Проверете дали основният клон се е променил
Изпълнихме задачата си. Работи. Писахме тестове. Всичко е наред. Но преди да преминем към сървъра, все пак трябва да проверим дали междувременно е имало промени в главния клон. Как може да стане това? Много лесно: някой получава задача след вас и този някой я изпълнява по-бързо, отколкото вие изпълнявате задачата си. Така че трябва да отидем до главния клон. За да направим това, трябва да направим това, което е показано в долния десен ъгъл на екранната снимка по-долу:
В основния клон натиснете CTRL+T , за да получите последните промени от отдалечения сървър. Гледайки Howви са промените, можете лесно да видите Howво се е случило:
Думата "fully" беше премахната. Може би някой от маркетинга е решил, че не трябва да се пише така и е дал задача на разработчиците да го актуализират. Вече имаме локално копие на най-новата version на главния клон. Върнете се към readme-improver . Сега трябва да пребазираме промените от основния клон към нашия. Ние правим това:
Ако сте направor всичко правилно и сте следвали заедно с мен, резултатът трябва да покаже конфликт във file README:
Тук също имаме много информация, която трябва да разберем и попием. Тук е показан списък с файлове (в нашия случай един файл), които имат конфликти. Можем да избираме от три опции:
- приемете вашето — приемете само промени от readme-improver.
- приемат техните — приемат само промени от главния.
- сливане — изберете сами Howво искате да запазите и Howво да изхвърлите.
Тук можем да видим, че има три части:
- Това са промените от readme-improver.
- Обединеният резултат. Засега е това, което съществуваше преди промените.
- Промените от главния клон.
Ето! Разрешихме първия си конфликт чрез IntelliJ IDEA :D
Пуснете промените към отдалечения сървър
Следващата стъпка е да изпратите промените на отдалечения сървър и да създадете заявка за изтегляне. За да направите това, просто натиснете CTRL+SHIFT+K . Тогава получаваме:
Отляво ще има списък с ангажименти, които не са бor изпратени към отдалеченото хранorще. Вдясно ще бъдат всички променени файлове. И това е! Натиснете Push и ще изпитате щастие :) Ако натискането е успешно, ще видите известие като това в долния десен ъгъл:
Бонус част
Първоначално не исках да добавя създаването на заявка за изтегляне към тази статия, но не е напълно пълна без нея. И така, нека отидем до хранorще на GitHub (разбира се, ваше :)) и ще видим, че GitHub вече знае Howво искаме:
Щракнете върху Compare & pull request . След това щракнете върху Създаване на заявка за изтегляне . Тъй като разрешихме конфликтите предварително, сега, когато създаваме заявка за изтегляне, можем веднага да я обединим:
И това е всичко, което исках да кажа този път. Разбира се, аз отворих вратата само малко за вас и ви показах малка част. За останалото ще научите, когато имате нужда. Имам навика да ви каня да ме следвате в GitHub, където публикувам свои проекти, включващи различни технологии, които използвам в работата си. Наскоро постигнах лично постижение: един от моите проекти получи звезди от повече от сто разработчици. Има невероятно чувство на радост, когато знаеш, че това, което си направил, се използва от някой друг. И да го използвате за добро.





След като разбрахме клонирането, можете да се огледате наоколо.
GO TO FULL VERSION