Ето всички команди на Git, които използвах миналата седмица, и какво правят.

Кредит за изображение: GitHub Octodex

Подобно на повечето начинаещи, аз започнах да търся StackOverflow за Git команди, след това да копирам поставяне на отговори, без да разбирам наистина какво са направили.

Кредит за изображение: XKCD

Спомням си, че си мислех: „Не би ли било хубаво, ако имаше списък с най-често срещаните Git команди заедно с обяснение защо са полезни?“

Е, тук съм години по-късно да съставя такъв списък и да изложа някои най-добри практики, които дори средно напредналите разработчици трябва да намерят полезни.

За да запазя нещата практически, основавам този списък на действителните Git команди, които използвах през последната седмица.

Почти всеки разработчик използва Git и най-вероятно GitHub. Но средният програмист вероятно използва само тези три команди в 99% от времето:

git add - всички
git commit -am "<съобщение>"
git push master master

Това е всичко добре и добре, когато работите в екип от един човек, хакатон или приложение за изхвърляне, но когато стабилността и поддръжката започват да стават приоритет, почистването на ангажиментите, придържането към стратегия за разклоняване и писането кохерентните съобщения за ангажиране стават важни.

Ще започна със списъка на често използваните команди, за да улесня начинаещите да разберат какво е възможно с Git, след което ще преминем към по-разширената функционалност и най-добри практики.

Редовно използвани команди

За да инициализирате Git в хранилище (repo), просто трябва да въведете следната команда. Ако не инициализирате Git, не можете да стартирате други Git команди в рамките на това репо.

git init

Ако използвате GitHub и натискате код към репото на GitHub, което се съхранява онлайн, използвате дистанционно репо. Името по подразбиране (известно също като псевдоним) за това отдалечено репо е начало. Ако сте копирали проект от Github, той вече има произход. Можете да видите този произход с командата git remote -v, която ще изброява URL адреса на отдалеченото репо.

Ако сте инициализирали собственото си Git repo и искате да го свържете с репо за GitHub, ще трябва да го създадете в GitHub, да копирате предоставения URL адрес и да използвате командата git remote add origin , с URL адреса, предоставен от GitHub замяна на „“. Оттам можете да добавяте, ангажирате и да натискате до отдалеченото си репо.

Последният се използва, когато трябва да промените отдалеченото хранилище. Нека да кажем, че сте копирали репо от някой друг и искате да промените отдалеченото хранилище от първоначалния собственик на вашия собствен акаунт в GitHub. Следвайте същия процес като git дистанционно добавяне на произход, освен използвайте set-url вместо да промените отдалеченото репо.

git дистанционно -v
git remote add origin 
git отдалечен set-url origin 

Най-разпространеният начин да копирате репо е да използвате git клонинг, последван от URL на repo.

Имайте предвид, че отдалеченото хранилище ще бъде свързано с акаунта, от който сте клонирали репо. Така че, ако сте клонирали репо, което принадлежи на някой друг, няма да можете да натиснете към GitHub, докато не промените произхода, като използвате командите по-горе.

git клон 

Бързо ще се окажете с помощта на клони. Ако не разбирате какви са клоновете, има и други уроци, които са много по-задълбочени и трябва да ги прочетете, преди да продължите (ето един).

Командният git клон изброява всички клонове на вашата локална машина. Ако искате да създадете нов клон, можете да използвате git клон , като представлява името на клона, като например „master“.

Командата git checkout преминава към съществуващ клон. Можете също да използвате командата git checkout -b , за да създадете нов клон и незабавно да преминете към него. Повечето хора използват това вместо отделни команди за разклонения и каси.

git клон
git клон <име>
git checkout <име>
git checkout -b <име>

Ако сте направили куп промени в даден клон, нека го наречем „развива се“ и искате да го слеете обратно във вашия главен клон, използвайте командата git merge . Ще искате да проверите основния клон, след това да стартирате git merge razvija, за да се слеят в Master клона.

git merge 

Ако работите с множество хора, ще се окажете в позиция, в която репото е актуализирано в GitHub, но нямате промените на местно ниво. В такъв случай можете да използвате git pull origin , за да изтеглите последните промени от този отдалечен клон.

git pull origin 

Ако искате да видите кои файлове са променени и какво се проследява, можете да използвате git статус. Ако искате да видите колко е променен всеки файл, можете да използвате git diff, за да видите броя на реда, променени във всеки файл.

git статус
git diff --stat

Разширени команди и най-добри практики

Скоро стигате до точка, в която искате вашите ангажименти да изглеждат приятни и да останете последователни. Може също така да се наложи да се срещнете с историята на вашите ангажименти, за да улесните вашите ангажименти или да върнете случайна променлива промяна.

Командата git log ви позволява да видите историята на ангажиментите. Ще искате да използвате това, за да видите историята на вашите ангажименти.

Вашите ангажименти ще дойдат със съобщения и хеш, което е произволна серия от цифри и букви. Примерният хеш може да изглежда така: c3d882aa1aa4e3d5f18b3890132670fbeac912f7

git log

Да речем, че сте избутали нещо, което е разбило приложението ви. Вместо да го поправите и да натиснете нещо ново, по-добре е просто да се върнете назад и да опитате отново.

Ако искате да се върнете назад във времето и да прегледате приложението си от предишен ангажимент, можете да направите това директно, като използвате хеша като име на клона. Това ще отдели приложението ви от текущата версия (защото вие редактирате исторически запис, а не от текущата версия).

git checkout c3d88eaa1aa4e4d5f

След това, ако направите промени от този исторически клон и искате да натиснете отново, ще трябва да направите натискане.

Внимание: натискането на сила е опасно и трябва да се извършва само ако абсолютно трябва. Той ще презапише историята на приложението ви и ще загубите всичко, което дойде след това.

git push -f origin master

Друг път не е практично да държите всичко в един ангажимент. Може би искате да запазите напредъка си, преди да опитате нещо потенциално рисковано, или може би сте направили грешка и искате да си пощадите неудобството от грешка в историята на вашата версия. За това имаме git rebase.

Нека да кажем, че имате 4 ангажимента в местната история (не са избутани към GitHub), в които сте се връщали напред-назад. Вашите ангажименти изглеждат помия и нерешителна. Можете да използвате rebase, за да комбинирате всички тези ангажименти в един, кратък ангажимент.

git rebase -i HEAD ~ 4

Горната команда ще отвори редактора по подразбиране на вашия компютър (който е Vim, освен ако не сте го задали на нещо друго), с няколко опции за това как можете да промените вашите ангажименти. Ще изглежда нещо като кода по-долу:

изберете 130deo9 най-старото съобщение за извършване
изберете 4209fei второ най-старо съобщение за извършване
изберете 4390gne трето най-старо съобщение за извършване
изберете най-новото съобщение за извършване на bmo0dne

За да ги комбинираме, трябва да променим опцията „pick“ на „fixup“ (както се казва в документацията по-долу в кода), за да смесим комитите и да изхвърлим съобщенията за извършване. Обърнете внимание, че в vim, трябва да натиснете „a“ или „i“, за да можете да редактирате текста и да запазите и излезете, трябва да напишете клавиша за бягство, последван от „shift + z + z“. Не ме питайте защо, просто е така.

изберете 130deo9 най-старото съобщение за извършване
fixup 4209fei второ най-старо съобщение за ангажиране
fixup 4390gne трето най-старо съобщение за ангажиране
fixup bmo0dne най-ново съобщение за извършване

Това ще обедини всички ваши ангажименти в ангажимента със съобщението „най-старо съобщение за ангажиране“.

Следващата стъпка е да преименувате съобщението си за ангажиране. Това е изцяло въпрос на мнение, но стига да следвате последователен модел, всичко, което правите, е наред. Препоръчвам да използвате указанията за ангажиране, изложени от Google за Angular.js.

За да промените съобщението за ангажиране, използвайте флага за изменение.

git commit --amend

Това също ще отвори vim и правилата за редактиране и запазване на текст са същите като по-горе. За да дадете пример за добро съобщение за ангажиране, ето едно следване на правилата от ръководството:

подвиг: добавете бутона за плащане на лента към страницата за плащания
- добавете бутон за проверка на лента
- пишете тестове за касата

Едно предимство за спазването на видовете, посочени в ръководството, е, че прави писането на дневници за промяна по-лесно. Можете също така да включите информация в долния колонтитул (отново посочен в ръководството), който препраща проблеми.

Забележка: трябва да избягвате преиздаването и разграбването на вашите ангажименти, ако си сътрудничите по даден проект, и да имате код, изпратен към GitHub. Ако започнете да променяте историята на версиите под носовете на хората, бихте могли да направите живота на всички по-труден с грешки, които са трудни за проследяване.

Има почти безкраен брой възможни команди с Git, но тези команди вероятно са единствените, които ще трябва да знаете за първите си няколко години програмиране.

Сам Коркос е водещият разработчик и съосновател на Sightline Maps, най-интуитивната платформа за топографски карти за 3D отпечатване, както и LearnPhoenix.io, междинно развит урок за създаване на мащабируеми приложения за производство с Phoenix и React.