ћерион Ќетворкс

14 минут

—истема контрол€ версий (Version Control System) Ц это инструмент, который используетс€ дл€ отслеживани€, внесени€ и управлени€ изменени€ми в программном коде. Ёто также можно назвать просто контролем версий.

—истемы контрол€ версий помогает разработчикам сохран€ть изменени€, внесенные в файл, на разных этапах, чтобы и они сами, и их коллеги могли их увидеть позже.

—уществует три типа систем контрол€ версий:

  • Ћокальные системы контрол€ версий
  • ÷ентрализованные системы контрол€ версий
  • –аспределенные системы контрол€ версий

„то такое локальна€ система контрол€ версий (LVCS)?

Ётот тип системы контрол€ версий очень распространен и прост в использовании. ќднако этот метод может выдавать ошибки и подвержен атакам, потому что файлы хран€тс€ в вашей локальной системе.

Ёто означает, что вы можете потер€ть системный файл или случайно забыть каталог, с которым вы работаете (и затем записать в другой каталог).


„то такое централизованна€ система контрол€ версий (CVCS)?

¬ этом типе контрол€ версий сервер работает как общее хранилище, в котором наход€тс€ все версии кода. CVCS помогает разработчикам работать совместно.

ќднако, несмотр€ на то, что такой метод позвол€ет разработчикам сотрудничать, если сервер отключитс€ на несколько секунд или будет поврежден, то есть шанс, что вы потер€ете все файлы. Ёто €вл€етс€ серьезной проблемой при работе с CVCS.

¬ CVCS только несколько разработчиков могут работать совместно над проектом.


„то такое распределенна€ система контрол€ версий (DVCS)?

¬ насто€щее врем€ это новый и наиболее часто используемый тип системы контрол€ версий.

¬ DVCS у каждого разработчика есть полна€ резервна€ копи€ всех данных на сервере. Ёто означает, что вс€кий раз, когда сервер не будет работать или будет неисправен, то вы все равно сможете работать над своим проектом, а также копировать или создавать резервные копии своих хранилищ на сервере, чтобы восстановить их.

ѕри работе с DVCS над одним проектом может работать много разработчиков. ќдной из попул€рнейших DVCS €вл€етс€ Git, о которой мы сейчас будем говорить подробнее.


„то такое Git?

Git Ц это бесплатна€ распределенна€ система контрол€ версий с открытым исходным кодом, которую можно использовать дл€ отслеживани€ изменений в ваших файлах. ¬ Git можно работать над всеми типами и размерами проектов.

— помощью Git вы можете добавл€ть изменени€ в свой код, а затем фиксировать их (или сохран€ть), когда это необходимо. Ёто означает, что у вас есть возможность вернутьс€ к ранее внесенным изменени€м. Git работает рука об руку с GitHub. ј что же такое GitHub?


„то такое GitHub?

GitHub Ц это веб-интерфейс, в котором можно хранить свои репозитории Git, а также эффективно отслеживать и управл€ть своими изменени€ми. — его помощью разные разработчики имеют доступ к коду одного проекта. ” вас есть возможность вносить свои собственные изменени€ в проект одновременно с другими разработчиками.

Ќапример, если вы вдруг допустили какую-то ошибку во врем€ внесени€ изменений, вы можете легко вернутьс€ к предыдущему этапу, где ошибки еще нет.


ƒл€ чего нужно использовать GitHub?

≈сть множество причин дл€ использовани€ GitHub. ƒавайте рассмотрим некоторые из них.

Ёффективное управление проектами

GitHub Ц это своего рода хранилище ваших репозиториев. GitHub позвол€ет разработчикам работать над одним проектом, наход€сь в разных местах.

— помощью GitHub вы можете легко отслеживать внесенные вами изменени€ и управл€ть ими, а также провер€ть ход вашей работы над проектом.

ѕростое сотрудничество

— GitHub разработчики со всего мира могут работать вместе на одним проектом без каких-либо проблем.

 оманды разработчиков могут оставатьс€ на одной странице во врем€ совместной работы над проектом и могут легко организовывать и эффективно управл€ть проектом.

ќткрытый исходный код

GitHub Ц это бесплатна€ система с открытым исходным кодом. Ёто означает, что разработчики могут легко получить доступ к различным типам кода/проектов, которые они могут использовать дл€ обучени€ и развити€ своих навыков.

”ниверсальность

Ёто свойство GitHub очень важно. GitHub Ц это веб-интерфейс не только дл€ разработчиков. ≈го также могут использовать дизайнеры, писатели и все, кто хочет отслеживать историю своих проектов.


 ак настроить Git?

„тобы использовать Git, его необходимо загрузить на свой компьютер. —делать это можно, зайд€ на официальный сайт.

 огда сайт откроетс€, прокрутите страницу вниз, и вы увидите кнопку загрузки. Ќажмите на нее.

 нопка загрузки на сайте Git

¬ыберите свою операционную систему: Windows, MacOS, Linux/Unix. ¬ моем случае € выбираю Windows, потому что € использую компьютер именно с этой операционной системой.

¬ыберите свою операционную систему

Ќажмите на первую ссылку в самом верху страницы, чтобы загрузить последнюю версию Git.

«агрузите последнюю версию Git, нажав на первую ссылку

 огда загрузка будет завершена, установите Git на свой компьютер. ƒл€ этого вам нужно будет перейти в папку, куда был загружен файл, и установить его.

ѕосле завершени€ установки, необходимо убедитьс€, что Git успешно установлен в вашей системе. ќткройте командную строку или Git bash (в зависимости от того, что вы решили использовать) и выполните команду:

git --version	
git --version

≈сли Git был успешно установлен на вашем компьютере, то он должен отобразить текущую версию Git под командой, которую вы только что выполнили. ≈сли отображаетс€, то мои поздравлени€!


 ак настроить Git?

“еперь, когда мы установили Git на компьютер, нам нужно его настроить. ћы делаем это дл€ того, чтобы каждый раз, когда мы работаем в команде над проектом, мы могли бы легко идентифицировать сделанные нами коммиты в репозитории.

„тобы настроить Git, нам нужно указать им€, адрес электронной почты и ветку с помощью команды git config --global. Ќапример:

git config --global

Ќа изображении выше мы использовали git config --global user.name дл€ настройки имени пользовател€. “о же самое относитс€ и к конфигурации git config --global user.email.

Git имеет ветку по умолчанию master, можно помен€ть называние, чтобы она называлась main, с помощью команды git config --global init.default branch main.

“еперь вы готовы начать использовать Git.

„тобы настроить учетную запись GitHub, зайдите на их официальный сайт. Ќажмите на кнопку регистрации в правом верхнем углу:

github

 огда откроетс€ форма регистрации, введите свой адрес электронной почты, создайте пароль, введите свое им€ пользовател€, а затем проверьте все, прежде чем нажимать кнопку создани€ учетной записи.

—оздайте учетную запись GitHub

ѕопул€рные команды Git

≈сть несколько основных команд Git, которые должен знать каждый разработчик:

  • git config
  • git init
  • git remote add origin
  • git add
  • git commit
  • git clone
  • git push
  • git rm
  • git branch
  • git diff
  • git log
  • git checkout
  • git merge

ƒавайте кратко рассмотрим каждую из них, чтобы вы понимали, как их использовать.


 ак использовать команду git config

Ёта команда используетс€ дл€ того, чтобы установить им€ пользовател€, адрес электронной почты и ветку пользовател€, чтобы определить, кто зафиксировал изменени€ при работе над проектом. Ёта команда используетс€, когда вы загрузили Git на свой компьютер и хотите настроить его дл€ своего использовани€.

Ќапример:

git config --global user.name У[username]Ф

git config --global user.email [email address]

 ак использовать команду git init

Ёта команда используетс€ дл€ того, чтобы запустить Git в своем проекте дл€ отслеживани€ изменений, внесенных в проект.

git init

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


 ак использовать команду git remote add origin

“еперь мы укажем нашей кодовой базе (папке, в которой находитс€ наш код), где хранить наш код в облаке. ћы введем git remote add origin [your-repo-url], который установит источник дл€ нашего репозитори€. “еперь мы можем заливать (пушить) код в наш источник (origin), чтобы сохранить его на наше облако в GitHub.


 ак использовать команду git add

Ёта команда добавл€ет ваш файл в промежуточную область (staging area). ѕромежуточна€ область Ц это та область, в которую добавл€ютс€ файлы, в которые мы вносим изменени€, и где они ждут следующего коммита.

„тобы добавить файл в промежуточную область, нужно воспользоватьс€ командой git add. ќна добавл€ет все файлы в папке в промежуточную область.

git add (file name) добавл€ет им€ конкретного файла, который вы хотите зафиксировать в промежуточной области.

Ёту команду нужно использовать тогда, когда вы внесли изменени€ в файл и хотите зафиксировать их в своем проекте.


 ак использовать команду git commit

Ёта команда фиксирует любой файл, который был добавлен с помощью команды git add, а также все файлы в промежуточной области.

git commit Цm Уfirst commitФ

Ёта команда навсегда сохран€ет файл в репозиторий Git. ≈е необходимо использовать каждый раз, когда вы добавл€ете файл в промежуточную область с помощью команды git add.

-m называетс€ Ђфлагомї и сигнализирует о том, что есть необ€зательные действи€, которые мы хотели бы выполнить с этим комитом. ‘лаг m означает, что впоследствии мы предоставим сообщение, которое €вл€етс€ в нашем случае - Ђfirst commitї.

 ак использовать команду git clone

Ёта команда используетс€ дл€ того, чтобы скопировать существующий репозиторий в другую область из одного места в другое.

git clone (repository name)

Ёта команда используетс€, когда вы хотите продублировать репозиторий Git из GitHub в локальное хранилище.


 ак использовать команду git push

Ёта команда используетс€ дл€ того, чтобы загрузить/отправить файлы из локального репозитори€/хранилища в другое хранилище, например, в удаленное, такое как GitHub.

git push (remote storage name)

Ёта команда используетс€ только тогда, когда вы довольны всеми изменени€ми и комитами, которые были сделаны в проекте, и, наконец, хотите отправить их в репозиторий Git на GitHub.


 ак использовать команду git rm

Ёта команда используетс€ дл€ того, чтобы удалить файл из рабочего репозитори€.

git rm (filename)

Ёта команда используетс€ только тогда, когда вам необходимо избавитьс€ от нежелательных изменений или файлов из репозитори€ Git.


 ак использовать команду git branch

Ёта команда используетс€ дл€ того, чтобы проверить текущую ветку, над который вы работаете, main или master.

git branch

Ёта команда поможет вам узнать им€ текущей ветки, над которой вы работаете.


 ак использовать команду git diff

Git покажет вам разницу между кодом, который у вас есть сейчас, и кодом, когда он был сохранен в последний раз.

Ќемного сложно пон€ть, что здесь происходит, но - Ч это удалени€, а + Ч вставки. ћы удалили текст Hello, this is a git example и добавили текст Now I have changed the first line. “ак Git отслеживает, что изменилось между верси€ми.

diff --git a/git.js b/git.js
index eb0f1d1..8dbf769 100644
--- a/git.js
+++ b/git.js
@@ -1,3 +1,3 @@
+console.log('Now I have changed the first line.')
-console.log('Hello, this is a git example!')
 console.log('And here is another!')
 console.log('And yet a third')	

 ак использовать команду git log

ћы можем просмотреть сделанные нами коммиты с помощью команды git log. Ёто может выгл€деть так:

commit 67627dd44e84a3106a18a19e94cf9f3723e59b3c (HEAD -> master)
Author: amberwilkie amber@amberwilkie.com
Date:   Wed Apr 22 16:55:39 2020 -0400

    Update first console log

commit 49fe4152f474a9674a83e2b014a08828209d2690
Author: amberwilkie amber@amberwilkie.com
Date:   Wed Apr 22 16:54:59 2020 -0400

    Initial commit

ћы видим наши сообщени€ комиты, врем€, в которое мы их совершили, и уникальный идентификатор дл€ нашго комита, который мы можем использовать дл€ ссылки на коммиты в будущем.


 ак использовать команду git checkout

≈сли мы хотим вернутьс€ и увидеть изменени€ в нашем коде из предыдущего коммита, мы сделаем это с помощью:

git checkout 49fe4152f474a9674a83e2b014a08828209d2690	

Git поместит наш код во временное состо€ние, чтобы мы могли посмотреть, как код выгл€дел на этом снимке во времени. “ут мы использовали идентификатор комитаю

„тобы вернутьс€ к нашей ветке, введите git checkout [branch_name].


 ак использовать команду git merge

git merge возьмет все коммиты, которые вы сделали в этой ветке, и вставит их в основную ветку, сохранив вашу работу.


¬етки

Git полагаетс€ на ветвление дл€ поддержки нашего кода. ¬ы можете считать главной веткой (обычно это master или main) ствол вашего дерева кода. ¬ы можете отпочковатьс€ от нее и внести некоторые изменени€, но конечна€ цель всегда состоит в том, чтобы вернуть их в ствол, в основную ветку.

¬ы можете использовать git checkout дл€ создани€ новой ветки, а не только дл€ проверки предыдущих версий вашего кода. ѕопробуйте использовать git checkout -b new-branch. ‘лаг -b используетс€, когда мы создаем новую ветку, и после флага мы пишем им€ нашей новой ветки. ћы можем сделать много коммитов в этой ветке, а затем вернуть их в master с помощью процесса, называемого сли€нием (merging), использу€ дл€ этого команду git merge.

Ќа диаграмме ниже точки обозначают коммиты. ƒве ветки были сделаны от мастера. ¬ разработке программного обеспечени€ мы часто называем эти Ђфункциональныеї (feature) ветки, в отличие от основной главной ветки. —ин€€ ветвь была объединена с мастером, а желта€ ветвь все еще находитс€ в разработке.

ќбратите внимание, что несмотр€ на то, что желта€ ветка была создана после синей ветки, в этой ветке будут видны только изменени€ из мастера. ≈сли мы создадим третью ветку когда-нибудь в будущем, изменени€ как из master, так и из синей ветки будут присутствовать в новой, третьей ветке.

¬етки

ѕросмотр кода в GitHub

“еперь ваш код находитс€ GitHub!

GitHub repo

¬ы можете щелкать по файлам и папкам вашего репозитори€, просматрива€ текущее состо€ние кода. ¬ы также можете просмотреть предыдущие версии кода. ¬ы увидите список коммитов, сделанных в репо, и если вы нажмете на них, вы сможете просмотреть файлы вашего проекта в том виде, в каком они существовали в этот период времени.


ѕулл-реквесты

≈сть много других возможностей GitHub, но сама€ важна€ в совместной работе с коллегами Ч это пулл реквесты (pull request). ѕулл реквест (очень часто сокращаетс€ до PR или ѕ–) Ч это способ управлени€ вход€щими изменени€ми в базе кода. ѕо сути это событие, когда один участник просит влить свои изменени€ в ветку.

„тобы сделать это, вы создадите новую ветку на своем локальном компьютере, создадите хот€ бы один комит в этой ветке, а затем сделайте git push origin head отправите эту ветку на GitHub. (¬ы можете указать им€ своей ветки вместо заголовка, но это полезно дл€ точного соответстви€ всех элементов).

“еперь, когда вы вернетесь на GitHub, вы увидите, что ваша ветка доступна дл€ создани€ PR.

ѕулл реквест

≈сли вы нажмете кнопку Compare & pull request, вы сможете изменить многие настройки дл€ своего PR. Ќаиболее важными, как правило, €вл€ютс€ заголовок и описание. ≈сли вы работаете в команде, вы можете пометить коллег, чтобы попросить их просмотреть ваш код, добавить в проекты и использовать многие другие функции.

—оздание PR

ќбратите внимание, что мы сравниваем ветки. «десь мы просим добавить изменени€ из этой ветки (pr-пример) в основную ветку. Ќо мы могли бы ориентироватьс€ на любую другую ветку в нашем репо. ј пока просто помните, что master Ч не единственна€ ветка, с которой вы можете сделать ѕ–.

 огда вы нажмете Create Pull Request, вы увидите этот экран:

Pull request

¬ы можете посмотреть все коммиты в этой ветке, а также можете слить свой пулреквест.

ѕомните, как мы могли объединить наш код локально при помощи merge, когда говорили о Git? ћы можем выполнить то же действие с нашим облачным кодом на GitHub. ≈сли вы нажмете зеленую кнопку Merge pull request, ваши изменени€ будут объединены в мастер.


«аключение

Ѕлагодар€ этому руководству, вы узнали, что такое системы контрол€ версий. “акже вы узнали, как установить и настроить Git на своем компьютере и настроить учетную запись GitHub. », наконец, мы рассмотрели некоторые попул€рные команды Git.


—кидки 50% в Merion Academy

¬ыбрать курс