Пълен урок за това как да използвате GitHub

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

Git е преди всичко система за контрол на версиите и основен продукт във всеки проект за разработка на софтуер. Обикновено служи за 2 основни цели: архивиране на код и версия на кода. Можете да работите върху вашия код стъпка по стъпка, като запазвате напредъка на всяка стъпка по пътя, в случай че имате нужда от връщане към резервно копие!

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

Ето защо подготвих този урок, за да ви науча как правилно да използвате git, за да можем всички да преминем към кодирането!

Инсталиране и настройка

Инсталиране

Първо нещо, първо трябва да инсталираме git, за да го използваме! Можем да го направим бързо и лесно с помощта на apt:

sudo apt инсталирате git-all

Основна настройка

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

git config --global user.name "Потребителско име"
git config --global user.email "имейл"

Цветове

Прецизен трик, който някои хора често пропускат, е, че можете да активирате допълнително оцветяване, за да можете да четете, така че да можете да четете изхода на командите по-лесно!

git config --global color.ui вярно

Основен контрол на версиите

Инициализиране на git

Сега можем да започнем да модифицираме нашия проект. Продължете напред и отидете в директорията, за която искате да настроите контрол на версиите в терминала, като използвате стандартната команда „cd“. Сега можете да инициализирате git хранилище така:

git init

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

Добавяне и ангажиране

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

git add 
git commit -m 'първи ангажимент'

Дистанционно архивиране

Страхотен! Вече започнахте да модифицирате вашия проект GitHub на местно ниво. Ако искате да запазите и архивирате проекта си дистанционно, ще трябва да създадете отдалечено хранилище в GitHub (безплатно е!). Затова първо се насочете към github.com и създайте хранилище. След това използвайте връзката на хранилището, за да го добавите като произход на вашия локален git проект, т.е. къде ще се съхранява този код.

### Общ пример
git дистанционно добавяне на произход \
https://github.com/user/repo.git
### Пример с мое хранилище
git дистанционно добавяне на произход \
https://github.com/GeorgeSeif/Semantic-Segmentation-Suite.git

Тогава можете да продължите напред и да избутате кода си на GitHub… виола! Съхранили сте резервния си код!

git push master master

Работа с вашите файлове

Проверка на състоянието

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

$ git статус
# На майстор на клона
нищо за ангажиране (работна директория чиста)

Ако добавите нов файл към проекта си и файлът не е съществувал преди, когато стартирате състояние на $ git, трябва да видите вашия незаписан файл като този:

$ git статус
# На майстор на клона
# Непроследени файлове:
# (използвайте "git add  ...", за да включите в това, което ще бъде извършено)
#
#   ПРОЧЕТИ МЕ
нищо не е добавено за извършване, освен налични непроследени файлове (използвайте "git add" за проследяване)

Това прави $ git статус наистина полезен за бърза проверка на това, което вече сте създали резервно копие и какво имате само локално.

Разширено добавяне на файлове

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

### Добавяне на файлове един по един
git добавяне на име на файл

### Добавяне на всички файлове в текущата директория
git add -A

### Добавяне на всички промени в файловете в текущата директория
git add.

### Избор на промените, които да добавите (това ще стане чрез всичките ви ### промени и можете да „Y“ или „N“ промените)
git add -p

Разширени ангажименти

Преди това видяхме, че можем да заложим файл на Git, използвайки $ git commit -m "съобщение на ангажимент". Това е всичко добре и нежно за кратки съобщения за ангажиране, но ако искате да направите нещо по-сложно, ще ви трябва малко повече:

### Ангажиране на поетапни файлове
### Това обикновено се използва за по-кратки съобщения за запис
git commit -m 'съобщение за ангажиране'

### Добавяне на файл и ангажиране в един кадър
git počin името на файла -m 'съобщение за ангажиране'

### Добавяне на файл и ангажиране на поетапен файл
git commit -am 'вмъкване на съобщение за ангажиране'

### Промяна на най-новото ви съобщение за ангажиране
git commit --мене „ново съобщение за ангажиране“

# Комбинирайте поредица от ангажименти заедно в една
### Можете да използвате това, за да организирате историята на обърканите ангажименти
git rebase -i
### Това ще ви даде интерфейс на вашия основен редактор:
# Команди:
# p, pick = използвайте ангажимент
# r, reword = използвайте ангажимент, но редактирайте съобщението за извършване
# e, редактиране = използвайте ангажимент, но спрете за изменение
# s, сквош = използвайте фиксиране, но се впишете в предишен ангажимент
# f, fixup = като "скуош", но изхвърлете лог съобщението на този ангажимент
# x, exec = команда за изпълнение (останалата част от реда) с помощта на shell

Разклоняване и сливане

Главният клон на вашето GitHub хранилище винаги трябва да съдържа работещ и стабилен код. Можете обаче да искате да архивирате и някакъв код, над който работите в момента, но не е напълно стабилен. Може би добавяте нова функция, експериментирате и нарушавате кода много, но все пак искате да поддържате резерва, за да запазите напредъка си!

Разклоняването ви позволява да работите върху отделно копие на вашия код, без да засягате главния клон. Когато създавате за първи път клон, се създава пълен клон на вашия основен клон под ново име. След това можете да променяте кода в този нов клон независимо, включително да записвате файлове и такива. След като новата ви функция е напълно интегрирана и кодът е стабилен, го обединявате в основния клон!

разклонен

Ето всички неща, които трябва да създадете и да работите в клон:

### Създайте местен клон, върху който да работите
git checkout -b име на клона

### Превключване между 2 клона
git checkout branch_1
git checkout branch_2
### Преместване на новия ви местен клон към отдалечено като резервно копие
git push -u произход клон_2

### Изтриване на локален клон - това няма да ви позволи да изтриете клон ###, който все още не е обединен
git клон -d клон_2

### Изтриване на локален клон - този ЩЕ изтрие клон, дори ако той ### все още не е обединен!
git клон -D клон_2

### Преглед на всички текущи клонове на хранилището, включително и ### локални и отдалечени клонове. Страхотно е да видите дали вече имате клон ### за определена добавка към функции, особено за по-големи проекти ###
git клон -a

### Преглед на всички клонове, които са обединени във вашия текущ ### клон, включително локални и отдалечени. Страхотно е да видите откъде идва всички ### кода ви!
git клон -a - потопен

### Преглед на всички клонове, които не са били обединени във вашия текущ ### клон, включително локални и отдалечени
git клон -a - не-обединен

### Преглед на всички местни клонове
git клон

### Преглед на всички отдалечени клонове
git клон -r

# Rebase основен клон в местен клон
$ git rebase origin / master

# Избутване на локален клон след преиздаване на главния в местния клон
$ git push origin + име на клон

Сливане

Страхотен! Сега научихте как да създадете клон и да работите с този код! След като приключите с добавянето на новата функция към вашия клон, ще искате да я обедините отново в основния клон, така че вашият господар да има всички най-нови функции на кода.

Ето как да го направите:

### Първо се уверете, че гледате главния клон
git checkout master

### Сега обединете клона си към master
git сливане клон_2

Това е! може да се наложи да коригирате всякакви конфликти на код между вашия клон и главен, но Git ще ви покаже как да направите всичко това, след като въведете тази команда за сливане.

Поправяне на грешки и проследяване

Грешки се случват…. и те се случват често с кодирането! Важното е, че успяваме да ги поправим.

Не се страхувайте тук! Git има всичко необходимо, в случай че направите грешка с кода, който натискате, презаписвате нещо или просто искате да направите корекция на нещо, което сте натиснали.

### Преминете към версията на кода на най-новия ангажимент
git reset HEAD
git reset HEAD - име на файл # за конкретен файл
### Превключете към версията на кода преди последния ангажимент
git нулиране HEAD ^ - име на файл
git нулиране HEAD ^ - име на файл # за конкретен файл
### Превключване назад 3 или 5 команди
git reset HEAD ~ 3 - име на файл
git reset HEAD ~ 3 - име на файл # за конкретен файл
git reset HEAD ~ 5 - име на файл
git reset HEAD ~ 5 - име на файл # за конкретен файл
### Превключете обратно към конкретен ангажимент
### Където '0766c053' е идентификаторът на ангажимент
git reset 0766c053 - име на файл
git reset 0766c053 - име на файл # за конкретен файл
### Предишните команди бяха така наречените „меки“ нули. Вашият ### код се нулира, но git все пак ще запази копие на другия код ### под ръка, в случай че имате нужда. От друга страна, --hard flag ### казва на Git да презапише всички промени в работната директория.
git reset --hard 0766c053

Полезни съвети и трикове за Git

Всички сме готови с азотните печени неща! Ето още няколко съвета и трикове на Git, които може да намерите полезни за подобряване на работния процес!

търсене

### Търси части от низове в директория
git grep 'нещо'

### Търси части от низове в директория и -n отпечатва ### номера на редовете, където git е намерил съвпадения
git grep -n 'нещо'

### Търси части от низ с някакъв контекст (някои редове
### преди и някои след 'нещо', което търсим)
git grep -C <брой редове> 'нещо'

### Търси части от низ и също показва линии ПРЕДИ
git grep -B <брой редове> 'нещо'

### Търси части от низ и също показва линии СЛЕД него
git grep -A <брой редове> 'нещо'

Виждайки кой пише какво

### Показване на историята на промените на файл с името на автора
git обвинява 'име на файл'

### Показване на историята на промените на файл с името на автора ### и идентификатора на git commit
git обвинява 'име на файл' -l

Влизане

### Показване на списък на всички ангажименти в хранилище. Тази команда показва ### всичко за ангажимент, като идентификатор на ангажимент, автор, дата и ### съобщение за извършване.
git log

### Списък на ангажименти, показващи само съобщения за извършване и промени
git log -p

### Списък на ангажименти с конкретния низ, който търсите
git log -S "нещо"

### Списък на ангажименти по автор
git log --author 'Име на автора'

### Показване на обобщение на списъка с ангажименти в хранилище. Този ### показва по-кратка версия на идентификатора на ангажимент и съобщението за извършване.
git log - oneline

### Показване на списък от ангажименти в хранилище от вчера
git log --since = вчера

### Показва дневника по автор и търси конкретен термин в съобщението за извършване на ###
git log --grep "термин" --author "име"

Препоръчително четене

Опитвате се да проникнете в работа по програмиране или търсите да надстроите текущата си? Пропукването на интервюто за кодиране има най-добрите примери за често срещан въпрос за интервю за кодиране и техните решения за компании като Google, Microsoft и Amazon!

И само с главата нагоре, поддържам този блог с партньорски връзки на Amazon към страхотни книги, защото споделянето на страхотни книги помага на всички! Като Amazon Associate печеля от квалифицирани покупки.