Необходими входове:
- Прочетете, следвайте и разберете моята статия за Git . Това ще помогне да се гарантира, че всичко е настроено и готово за работа.
- Инсталирайте IntelliJ IDEA.
- Отделете един час лично време, за да постигнете пълно майсторство.
Клонирайте проекта локално
Тук има два варианта:- Ако вече имате акаунт в GitHub и искате да натиснете нещо по-късно, по-добре е да разклоните проекта и да клонирате собственото си копие.
- Клонирайте моето хранorще и правете всичко локално, без възможността да избутате всичко на сървъра. Все пак това е моето хранorще :)
-
Копирайте address на проекта:
-
Отворете IntelliJ IDEA и изберете „Вземете от контрола на версиите“:
-
Копирайте и поставете address на проекта:
-
Ще бъдете подканени да създадете проект IntelliJ IDEA. Приемете офертата:
-
Тъй като няма система за изграждане и това е извън обхвата на тази статия, ние избираме Създаване на проект от съществуващи източници :
-
След това ще видите този красив екран: След като разбрахме клонирането, можете да се огледате наоколо.
Първи поглед към 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 . Изберете + Нов клон .
Оставете отметката в квадратчето 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.
- Обединеният резултат. Засега е това, което съществуваше преди промените.
- Промените от главния клон.
GO TO FULL VERSION