Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Как ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ GitLab | Losst

GitLab — это ΠΎΠ½Π»Π°ΠΉΠ½ сСрвис для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с git рСпозиториями, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ Open Source вСрсия, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π° своСм сСрвСрС. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ свой сСрвис ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ GitHub ΠΈ с этой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ справляСтся. Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ всС Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° GitHub, плюс бСсплатныС Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ частныС Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, созданиС ΠΊΠΎΠΌΠ°Π½Π΄, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° прямо Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ GitLab для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Как ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° информация ΠΏΠΎ Git, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ смотритС ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ git.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ GitLab

1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° GitLab ΠΎΡ‡Π΅Π½ΡŒ просто. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π³Π»Π°Π²Π½ΡƒΡŽ страницу GitLab Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части экрана Ρ„ΠΎΡ€ΠΌΡƒ Π²Ρ…ΠΎΠ΄Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Register. Π—Π΄Π΅ΡΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти вашС имя, Π»ΠΎΠ³ΠΈΠ½, адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, согласится с условиями использования ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ

Register:

ПослС этого Π²Π°ΠΌ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ сообщСниС со ссылкой для подтвСрТдСния Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ Π½Π΅ΠΉ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ваш Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π² Π½Ρ‘ΠΌ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ:

Β 

ПослС Π²Π²ΠΎΠ΄Π° Π»ΠΎΠ³ΠΈΠ½Π° ΠΈ пароля Π²Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚Π΅ Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ страницу профиля. БСйчас здСсь страница привСтствия, Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ Ρ‚ΡƒΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ список Π²Π°ΡˆΠΈΡ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²:

2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ рСпозитория

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GitLab ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡ΠΊΡƒ

+ ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ New Project:

Π—Π΄Π΅ΡΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти имя рСпозитория, Π΅Π³ΠΎ описаниС, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ доступа:

  • Private — доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΌ;
  • Internal — доступСн всСм зарСгистрированным ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ;
  • Public — доступСн Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всСм.

Π•Ρ‰Ρ‘ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠΌ README, Π½ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π»ΠΈΡ‚ΡŒ сюда Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ рСпозитория, Π΄Π΅Π»Π°Ρ‚ΡŒ этого Π½Π΅ слСдуСт:

ПослС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Create repo Π²Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚Π΅ Π½Π° страницу рСпозитория. Π—Π΄Π΅ΡΡŒ GitLab ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ дСйствий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ½ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ здСсь Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ сюда Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

4. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π½ΠΎΠ²Ρ‹ΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π΅Π³ΠΎ содСрТимоС Π½Π° GitLab. Для этого создайтС ΠΏΠ°ΠΏΠΊΡƒ рСпозитория, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, test-repo ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π² Π½Π΅ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git:

mkdir test-repo && cd test-repo

git init

Π—Π°Ρ‚Π΅ΠΌ Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ„Π°ΠΉΠ» test.txt:

vi test.txt

This is test losst repo

И зафиксируСм измСнСния:

git add test.txt
git commit -m "Inital commit"

Β 

Π”Π°Π»ΡŒΡˆΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ наш ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с GitLab ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

git remote add origin https://gitlab.com/losst/test-repo.git

Π—Π°Ρ‚Π΅ΠΌ отправляСм измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

git push origin master

Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ввСсти ваш Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π° GitHub. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ страницу рСпозитория Π½Π° GitHub, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Π°ΠΌ наш Ρ„Π°ΠΉΠ»:

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π΅ пуст, Ρ‚ΠΎ Ρƒ вас Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ сначала ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΡΠ»ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния с Π½ΠΈΠΌ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ всё Π½Π°Π·Π°Π΄.

Β 

5. SSH ΠΊΠ»ΡŽΡ‡ΠΈ

Π’ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… рСпозитория Π½Π° GitLab Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ввСсти Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π° сСрвСрС. Π§Ρ‚ΠΎΠ±Ρ‹ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SSH ΠΊΠ»ΡŽΡ‡ΠΈ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ»ΡŽΡ‡. Для этого ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

ssh-keygen

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, ΠΊΡƒΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡, Π° ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ пустым. Π‘ΡƒΠ΄ΡƒΡ‚ созданы Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° — ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .pub ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ. Π’Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈ скопируйтС Π΅Π³ΠΎ содСрТимоС Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°:

vi /home/sergiy/.ssh/id-gitlab

Π”Π°Π»Π΅Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ интСрфСйсу GitLab ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ ΠΈΠΊΠΎΠ½ΠΊΠ΅ профиля ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Settings:

Π—Π΄Π΅ΡΡŒ Π½Π° Π»Π΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ SSH Keys. Π’ этом ΠΎΠΊΠ½Π΅ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π΅ Key ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‚ΡƒΠ΄Π° скопированный ΠΊΠ»ΡŽΡ‡. Π”Π°Π»Π΅Π΅ сохранитС измСнСния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ваш ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½:

Π”Π°Π»Π΅Π΅ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π² ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Clone ΠΈ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π½Π΅ΠΉ. Нас интСрСсуСт адрСс Clone with SSH:

ВозвращаСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ, удаляСм адрСс https ΠΈ добавляСм ssh:

git remote remove origin
git remote add origin [email protected]:losst/test-repo.git

Настройка ssh GitLab Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС дСйствия Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎ SSH ΠΈ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ нСобходимости Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ.

6. Π’Π΅Ρ‚ΠΊΠΈ рСпозитория

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ использованиС gitlab для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρƒ рСпозитория Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π²Π΅Ρ‚ΠΊΠ° — это master. Но для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ. Π’ интСрфСйсС GitLab Π²Π΅Ρ‚ΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ слСва. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ:

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ² ΠΏΠΎ Π·Π½Π°Ρ‡ΠΊΡƒ плюс ΠΈ Π²Ρ‹Π±Ρ€Π°Π² New branch. Но это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли Π²Ρ‹ создадитС Π²Π΅Ρ‚ΠΊΡƒ Π² git ΠΈ Π·Π°Π»ΡŒΠ΅Ρ‚Π΅ измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΠ° появится Ρ‚Π°ΠΌ автоматичСски.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Settings -> Repository, Π° ΠΏΠΎΡ‚ΠΎΠΌ просто Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Default branch:

6. БлияниС Π²Π΅Ρ‚ΠΎΠΊ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Π² Π½ΠΈΡ… разрабатываСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ пСрСнСсти Π΅Ρ‘ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ запросы слияния (Merge request gitlab). Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²Π΅Ρ‚ΠΊΡƒ new-feature, Π° Π² Π½Π΅ΠΉ создадим Ρ„Π°ΠΉΠ» new-feature с тСкстом:

git checkout -b new-feature

vi new-feature.txt

New feature with change

git add new-feature.txt
git commit -m "add feature"
git push --set-upstream origin new-feature

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· интСрфСйс GitLab появится ΠΊΠ½ΠΎΠΏΠΊΠ° Create merge request. НаТмитС Π½Π° Π½Π΅Ρ‘:

Π—Π΄Π΅ΡΡŒ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ описаниС Merge Request, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ создаСтС, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ источник ΠΈ Π²Π΅Ρ‚ΠΊΡƒ Ρ†Π΅Π»ΡŒ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ созданном запросС:

Π”Π°Π»Π΅Π΅ запрос Π½Π° слияниС Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ

Open IDE ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»:

Π”Π°Π»Π΅Π΅ просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Merge, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΠΈ. Π€Π°ΠΉΠ»Ρ‹ Π²Π΅Ρ‚ΠΊΠΈ источника замСнят Ρ„Π°ΠΉΠ»Ρ‹ Π² Π²Π΅Ρ‚ΠΊΠ΅ ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊΠ°, поэтому Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

8. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π° с gitlab ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Для этого ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ Settings -> Members

. Π—Π΄Π΅ΡΡŒ Π² ΠΏΠΎΠ»Π΅ Select members to invite Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΈΠΊΠ½Π΅ΠΉΠΌΡ‹ ΠΈΠ»ΠΈ адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ, Π° Π² ΠΏΠΎΠ»Π΅ Choose a role permission Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΡ… ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ доступа:

Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Add to project.

9. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Gitlab Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Settings -> General -> Advanced ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Remove Project Π² самом Π½ΠΈΠ·Ρƒ страницы:

ПослС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ввСсти имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, послС Ρ‡Π΅Π³ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½:

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΊΡ€Π°Ρ‚ΠΊΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ GitLab для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π­Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС возмоТности GitLab, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ внимания, Ρ‚Π°ΠΌ Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·Ρ‹, сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, инструмСнты Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ тСстирования, ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ это полноцСнная Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° для GitHub Ссли Ρ‚ΠΎΡ‚ сСрвис большС Π²Π°ΠΌ Π½Π΅ нравится. А Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅, GitHub ΠΈΠ»ΠΈ GitLab? ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях!

losst.ru

Как ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Git для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Git — это ΠΎΡ‡Π΅Π½ΡŒ популярная систСма контроля вСрсий ΠΈ совмСстной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Git Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² исходном ΠΊΠΎΠ΄Π΅ своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ вСрсии Π² случаС критичСских ошибок, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΊΠΎΠ΄ΠΎΠΌ со всСми ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΡ‚ Π½ΠΈΡ… исправлСния.

Π­Ρ‚ΠΎ мощная систСма, которая позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ вашими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ языку ΠΈΠ»ΠΈ структурС Ρ„Π°ΠΉΠ»ΠΎΠ², поэтому Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² полная свобода дСйствий. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ git для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Рассмотрим всС ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, начиная ΠΎΡ‚ настройки, ΠΈ Π΄ΠΎ Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Команда git

Π£ΠΆΠ΅ ΠΏΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΅Π΅ основныС ΠΎΠΏΡ†ΠΈΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Бинтаксис git ΠΎΡ‡Π΅Π½ΡŒ прост:

$ git ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим ΠΎΠΏΡ†ΠΈΠΈ, ΠΎΠ½ΠΈ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ всСй ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹:

  • -C — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ рСпозитория вмСсто Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ;
  • -c ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€=Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ;
  • -p — ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ вСсь Π²Ρ‹Π²ΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ less;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git, ΠΈΡ… Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΈΡ… Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС основныС дСйствия:

  • add — Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΡƒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ git;
  • am — ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС ΠΏΠ°Ρ‚Ρ‡ΠΈ ΠΈΠ· email;
  • archive — ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²;
  • bisect — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск для поиска Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°;
  • branch — ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°;
  • bundle — ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ссылок Π² Π°Ρ€Ρ…ΠΈΠ²Π΅;
  • checkout — ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ;
  • cherry-pick — внСсти измСнСния Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹;
  • clean — ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°;
  • clone — ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория Π² ΠΏΠ°ΠΏΠΊΡƒ;
  • commit — ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ;
  • diff — ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ;
  • fetch — ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ;
  • init — ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ;
  • merge — ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ Π²Π΅Ρ‚Π²ΠΈ;
  • pull — ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ;
  • push — ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ;
  • tag — ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π³Π°ΠΌΠΈ;
  • worktree — ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ дСрСвями Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

АргумСнты зависят ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, поэтому Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ git?

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΈΠ΄Ρ‚ΠΈ дальшС ΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ использованиС git для управлСния своими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» ΡΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько слов ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ эта тСхнология, Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, основы Ρ€Π°Π±ΠΎΡ‚Ρ‹ git.

Π˜Ρ‚Π°ΠΊ, ΠΈΠ· всСго Π²Ρ‹ΡˆΠ΅ пСрСчислСнного, Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΡƒΠΆΠ΅ поняли, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий позволяСт Π²Π°ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния Π½Π° любом этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ.  Но это Π½Π΅ совсСм Ρ‚Π°ΠΊ. ИзмСнСния ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². По-русски — фиксация. Π’Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ измСнСния. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ снимки состояния.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, git позволяСт ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр. ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ готовая вСрсия, Π½ΠΎ ΠΈ всС снимки, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, любой Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. К ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ снимку Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π° с git Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ понятнСС.

Как ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Git?

Π”Π°Π»ΡŒΡˆΠ΅ я Π±ΡƒΠ΄Ρƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ установку ΠΈ Π±Π°Π·ΠΎΠ²ΡƒΡŽ настройку git. ΠšΡ€ΠΎΠΌΠ΅ установки, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΒ Π΄Π»Ρ доступа ΠΊ сСрвСру Git, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° GitHub. Если Π²Ρ‹ этого Π΅Ρ‰Π΅ Π½Π΅ сдСлали смотритС ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ установка Git Π² Ubuntu 16.04.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, структура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Git Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° ΠΈ слоТности вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Но для Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, состоящий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ содСрТит ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΠ½Π° называСтся master. Наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ test.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Когда настройка git Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ. Π’ самом Π½Π°Ρ‡Π°Π»Π΅ Π²Π°ΠΌ достаточно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ для Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ нСсколькими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, создайтС ΠΏΠ°ΠΏΠΊΡƒ git Π² вашСм домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π° ΡƒΠΆΠ΅ Ρ‚ΡƒΠ΄Π° помСститС ΠΏΠ°ΠΏΠΊΠΈ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²:

mkdir -p ~/git/testing ;Β cd ~/git/testing

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст Π½ΡƒΠΆΠ½ΡƒΡŽ структуру ΠΏΠ°ΠΏΠΎΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданный. Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

touch file

Β 

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π³ΠΎΡ‚ΠΎΠ², Π½ΠΎ систСма контроля вСрсий git Π΅Ρ‰Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎΠ± этом.

Настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² git

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ git Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ пустой Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² нашСй ΠΏΠ°ΠΏΠΊΠ΅:

git init

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ создан, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свои Ρ„Π°ΠΉΠ»Ρ‹ Π² Π½Π΅Π³ΠΎ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ явно. Пока Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» сам ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ. НовыС Ρ„Π°ΠΉΠ»Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ автоматичСски. Β Π‘Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ:

git add .

Если всС ΠΏΡ€ΠΎΡˆΠ»ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚.

Ѐиксация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

ИзмСнСния Ρ‚ΠΎΠΆΠ΅ автоматичСски Π½Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. Ѐиксация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ commit. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСбольшого коммСнтария, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π² нСсколько ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС вСрсии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‚ самой ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈ Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ смоТСтС Π·Π½Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΈ Π³Π΄Π΅ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

git commit -m "Initial Commit" -a

КомандС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ — это -m, ваш ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ -a, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ дСйствиС ΠΊΠΎ всСм ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ. Для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

git commit -m "Changed file" file

Β 

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

Π”ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ всС Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git локально, Ссли Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ remote. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΉ URL:

Β git remote add origin https://github.com/Seriyyy95/testing.git

Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²:

git remote -v

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ github сСрвСра, Π½ΠΎ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π²Π°ΡˆΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git push origin master

Команда push ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, origin — наш настроСнный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π° master — Π²Π΅Ρ‚Π²ΡŒ.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСтвями

Для простых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² достаточно ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. Но Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ большой ΠΈ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько вСрсий, Π² Ρ‚ΠΎΠΌ числС Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ. Π‘Π½Π°Ρ‡Π°Π»Π° смотрим доступныС Π²Π΅Ρ‚Π²ΠΈ:

git branch -a

Β 

Β 

ΠžΠΏΡ†ΠΈΡ -a ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ вывСсти всС Π²Π΅Ρ‚Π²ΠΈ, Π΄Π°ΠΆΠ΅ Π½Π΅ синхронизированныС. Π—Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π²Π΅Ρ‚Π²ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ checkout:

git checkout -b develop

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ вСтвями ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

git checkout master
$ git checkout develop

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»:

touch develop

И Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ Π² Π½Π°ΡˆΡƒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ develop:

git add develop

Β 

Β 

Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ для внСсСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

git commit -m "develop file" develop

Π”Π°Π»ΡŒΡˆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ сущСствуСт Π»ΠΈ этот Ρ„Π°ΠΉΠ» Π² основной Π²Π΅Ρ‚ΠΊΠ΅ master ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ:

gitΒ branch
$ ls

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master ΠΈ снова смотрим:

git checkout master
$ git branch
$ ls

Π—Π΄Π΅ΡΡŒ Ρ„Π°ΠΉΠ»Π° Π½Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ. Π’ git Π΅ΡΡ‚ΡŒ такая полСзная Π²Π΅Ρ‰ΡŒ, ΠΊΠ°ΠΊ слияниС. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ Π²Π΅Ρ‚Π²ΠΈ. НапримСр, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ. Для этого достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ merge:

git mergeΒ develop --no-ff

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ слияниС Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Π·Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ. Π—Π°Ρ‚Π΅ΠΌ Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Ρ€Π°Π· Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ls, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ здСсь ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Наши ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ git подошли ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ git для управлСния вСрсиями своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самая основная информация, ΠΈ систСма контроля вСрсий git ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ΅, Π½ΠΎ рассмотрСниС Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. НадСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ.

losst.ru

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitLab CI / Softmart corporate blog / Habr

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΌΠΎΠ΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ· Π±Π»ΠΎΠ³Π° Π“ΠΈΡ‚Π›Π°Π±Π° ΠΏΡ€ΠΎ Ρ‚ΠΎ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CI. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ гитлабовских постов ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π±Π»ΠΎΠ³Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Softmart.



ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ Π½Π° сСкунду, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ (Continuous Integration β€” CI) ΠΈ для Ρ‡Π΅Π³ΠΎ ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°. Или Π²Ρ‹ всё это Π·Π°Π±Ρ‹Π»ΠΈ. Π’ любом случаС, Π½Π°Ρ‡Π½Π΅ΠΌ с основ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ вся кодовая Π±Π°Π·Π° состоит ΠΈΠ· Π΄Π²ΡƒΡ… тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ этих Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π°ΡΡŒ Ρ„Ρ€Π°Π·Π° «Hello world.» Если это условиС Π½Π΅ выполняСтся, вся ΠΊΠΎΠΌΠ°Π½Π΄Π° Π»ΠΈΡˆΠ°Π΅Ρ‚ΡΡ мСсячной Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹. Π”Π°, всС Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ.


Один отвСтствСнный Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ написал нСбольшой скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΊΠΎΠ΄Π° Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π΅Π½:

cat file1.txt file2.txt | grep -q "Hello world"

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π΄Π΅ΡΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π° чСловСчСский Ρ„Π°ΠΊΡ‚ΠΎΡ€ Π΅Ρ‰Π΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ отмСнял.

НСдСлю Π½Π°Π·Π°Π΄ ΠΎΠ΄ΠΈΠ½ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π·Π°Π±Ρ‹Π» Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΊΠΎΠ΄Π°, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Ρ‚Ρ€ΠΎΠ΅ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΌΠ°Π½Π½Ρ‹Π΅ сборки. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π² дальнСйшСм ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ† этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Ρ€Π°Π· ΠΈ навсСгда. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ваш ΠΊΠΎΠ΄ ΡƒΠΆΠ΅ находится Π½Π° GitLab, Π° Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ CI-систСму. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ CI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для тСстирования…


Запуск ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ тСста Π² CI

ПослС ΠΏΠ°Ρ€Ρ‹ ΠΌΠΈΠ½ΡƒΡ‚, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… Π½Π° поиск ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, оказываСтся, Ρ‡Ρ‚ΠΎ всС Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” это Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π΅ строчки ΠΊΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ» .gitlab-ci.yml:

test:
  script: cat file1.txt file2.txt | grep -q 'Hello world'

ДобавляСм, ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠΌ β€” ΠΈ ΡƒΡ€Π°! Π‘Π±ΠΎΡ€ΠΊΠ° ΡƒΡΠΏΠ΅ΡˆΠ½Π°!

ПомСняСм Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ «world» Π½Π° «Africa» ΠΈ посмотрим, Ρ‡Ρ‚ΠΎ получится:

Π‘Π±ΠΎΡ€ΠΊΠ° Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Π°, ΠΊΠ°ΠΊ ΠΈ оТидалось.

Π˜Ρ‚Π°ΠΊ, Ρƒ нас Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСсты. GitLab CI Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ наш тСстовый скрипт ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡƒΡˆΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.


Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сборки

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ бизнСс-Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ являСтся архивация ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΅Π³ΠΎ?

ВсС, Ρ‡Ρ‚ΠΎ для этого Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ для CI. НазовСм Π΅Π΅ «package»:

test:
  script: cat file1.txt file2.txt | grep -q 'Hello world'

package:
  script: cat file1.txt file2.txt | gzip > package.gz

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ появляСтся вторая Π²ΠΊΠ»Π°Π΄ΠΊΠ°

Однако ΠΌΡ‹ Π·Π°Π±Ρ‹Π»ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» являСтся Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠΌ сборки, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π΅Π³ΠΎ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Ρ€Π°Π·Π΄Π΅Π» artifacts:

test:
  script: cat file1.txt file2.txt | grep -q 'Hello world'

package:
  script: cat file1.txt file2.txt | gzip > packaged.gz
  artifacts:
    paths:
    - packaged.gz

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌβ€¦ ВсС Π½Π° мСстС:

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! Однако, ΠΎΡΡ‚Π°Π»Π°ΡΡŒ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, Π° Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² случаях, ΠΊΠΎΠ³Π΄Π° тСст Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½.


ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡

Π—Π°Π΄Π°Ρ‡Π° ‘package’ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ тСстов. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ порядок выполнСния Π·Π°Π΄Π°Ρ‡ ΠΏΡƒΡ‚Π΅ΠΌ ввСдСния стадий (stages):

stages:
  - test
  - package

test:
  stage: test
  script: cat file1.txt file2.txt | grep -q 'Hello world'

package:
  stage: package
  script: cat file1.txt file2.txt | gzip > packaged.gz
  artifacts:
    paths:
    - packaged.gz

Π”ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅ Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компиляция (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² нашСм случаС являСтся конкатСнация Ρ„Π°ΠΉΠ»ΠΎΠ²) Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя, поэтому Π½Π΅ стоит ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π΅ Π΄Π²Π°ΠΆΠ΄Ρ‹. Π’Π²Π΅Π΄Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Π΄ΠΈΡŽ для компиляции:

stages:
  - compile
  - test
  - package

compile:
  stage: compile
  script: cat file1.txt file2.txt > compiled.txt
  artifacts:
    paths:
    - compiled.txt

test:
  stage: test
  script: cat compiled.txt | grep -q 'Hello world'

package:
  stage: package
  script: cat compiled.txt | gzip > packaged.gz
  artifacts:
    paths:
    - packaged.gz

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠ΅ΡΡ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹:

Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° «compile» Π½Π°ΠΌ Π½ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ, поэтому ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΆΠΈΠ·Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² 20 ΠΌΠΈΠ½ΡƒΡ‚Π°ΠΌΠΈ:

compile:
  stage: compile
  script: cat file1.txt file2.txt > compiled.txt
  artifacts:
    paths:
    - compiled.txt
    expire_in: 20 minutes

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° впСчатляСт:


  • Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… стадии: компиляция, тСстированиС ΠΈ архивация прилоТСния.
  • Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ стадии компиляции пСрСдаСтся Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ стадии, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ компилируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ (Ρ‡Ρ‚ΠΎ ускоряСт Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс).
  • Архивированная вСрсия прилоТСния хранится Π² Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°Ρ… сборки для дальнСйшСго использования.

КакиС ΠΎΠ±Ρ€Π°Π·Ρ‹ Docker Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ Π½Π°Π»ΠΈΡ†ΠΎ. Однако, нСсмотря Π½Π° наши усилия, сборка Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. ВзглянСм Π½Π° Π»ΠΎΠ³ΠΈ:

Π§Ρ‚ΠΎ, проститС? Ruby 2.1?

Π—Π°Ρ‡Π΅ΠΌ Ρ‚ΡƒΡ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ruby? А Π·Π°Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ GitLab.com ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π·Ρ‹ Docker для запуска сборок, Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Ρ€Π°Π· ruby:2.1. Π‘Π°ΠΌΠΎ собой, Π² этом ΠΎΠ±Ρ€Π°Π·Π΅ содСрТится мноТСство ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ Π½ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ. Бпросив ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρƒ Π³ΡƒΠ³Π»Π°, ΡƒΠ·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ сущСствуСт ΠΎΠ±Ρ€Π°Π· alpine, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой практичСски Β«Π³ΠΎΠ»Ρ‹ΠΉΒ» ΠΎΠ±Ρ€Π°Π· Linux.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΎΠ±Ρ€Π°Π·, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ image: alpine Π² .gitlab-ci.yml.
Благодаря этому врСмя сборки сокращаСтся ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° Ρ‚Ρ€ΠΈ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹:

А Π²ΠΎΠΎΠ±Ρ‰Π΅, Π² свободном доступС находится довольно ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ², Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ для нашСго стСка. Π“Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ подходят ΠΎΠ±Ρ€Π°Π·Ρ‹, Π½Π΅ содСрТащиС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ врСмя скачивания.


Π Π°Π±ΠΎΡ‚Π° со слоТными сцСнариями

Π’Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим, Ρ‡Ρ‚ΠΎ Ρƒ нас появился Π½ΠΎΠ²Ρ‹ΠΉ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ‡Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вмСсто .gz Π°Ρ€Ρ…ΠΈΠ²Π° нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΠ»ΠΎΡΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ€Π°Π·Π° .iso. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ вСсь процСсс сборки Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‡Π΅Ρ€Π΅Π· CI, всС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ. ΠžΠ±Ρ€Π°Π·Ρ‹ ISO ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ mkisofs. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

image: alpine

stages:
  - compile
  - test
  - package

# ... задания "compile" ΠΈ "test" Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹ Ρ€Π°Π΄ΠΈ краткости

pack-gz:
  stage: package
  script: cat compiled.txt | gzip > packaged.gz
  artifacts:
    paths:
    - packaged.gz

pack-iso:
  stage: package
  script:
  - mkisofs -o ./packaged.iso ./compiled.txt
  artifacts:
    paths:
    - packaged.iso

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ названия Π·Π°Π΄Π°Ρ‡ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ стадии Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ названиям Π·Π°Π΄Π°Ρ‡ ΠΈ стадий ΠΊΠ°ΠΊ ΠΊ совпадСнию.

А Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ сборка Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½ΠΌΠ°Π½Π΄Π° mkisofs Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΎΠ±Ρ€Π°Π·Π° alpine, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.


Установка Π΄ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ПО

На сайтС Alpine Linux ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ mkisofs Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² xorriso ΠΈ cdrkit. Для установки ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

echo "ipv6" >> /etc/modules  # Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ сСти
apk update                  # ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ список ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
apk add xorriso             # ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚

ВсС это β€” Ρ‚ΠΎΠΆΠ΅ Π²Π°Π»ΠΈΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CI. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ script Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

script:
- echo "ipv6" >> /etc/modules
- apk update
- apk add xorriso
- mkisofs -o ./packaged.iso ./compiled.txt

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, сСмантичСски Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, отвСтствСнныС Π·Π° установку ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π΄ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° script, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ before_script. ΠŸΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ этого Ρ€Π°Π·Π΄Π΅Π»Π° Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Ρ€Π°Π½ΡŒΡˆΠ΅ всСх Π·Π°Π΄Π°Ρ‡. Однако Π² нашСм случаС достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ before_script Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Π°Ρ вСрсия .gitlab-ci.yml:

image: alpine

stages:
  - compile
  - test
  - package

compile:
  stage: compile
  script: cat file1.txt file2.txt > compiled.txt
  artifacts:
    paths:
    - compiled.txt
    expire_in: 20 minutes

test:
  stage: test
  script: cat compiled.txt | grep -q 'Hello world'

pack-gz:
  stage: package
  script: cat compiled.txt | gzip > packaged.gz
  artifacts:
    paths:
    - packaged.gz

pack-iso:
  stage: package
  before_script:
  - echo "ipv6" >> /etc/modules
  - apk update
  - apk add xorriso
  script:
  - mkisofs -o ./packaged.iso ./compiled.txt
  artifacts:
    paths:
    - packaged.iso

А вСдь ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€! Π£ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ стадии, ΠΏΡ€ΠΈ этом Π·Π°Π΄Π°Ρ‡ΠΈ pack-gz ΠΈ pack-iso стадии package Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ:


Подводя ΠΈΡ‚ΠΎΠ³ΠΈ

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС возмоТности GitLab CI, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ остановимся Π½Π° этом. НадССмся Π²Π°ΠΌ понравился этот нСбольшой рассказ. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² Π½Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ β€” это Π±Ρ‹Π»ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ наглядно ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ CI Π½Π΅ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°ΡΡΡŒ Π½Π° Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅:


  1. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² GitLab CI, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π·Π°Π΄Π°Ρ‡ Π² .gitlab-ci.yml.
  2. Π—Π°Π΄Π°Ρ‡Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ присвоСны названия, совСтуСм Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… осмыслСнными, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ самим Π½Π΅ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ.
  3. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ содСрТится Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈ инструкций для GitLab CI, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами.
  4. Π—Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ свой собствСнный порядок выполнСния, создав ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.
  5. БущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ заданиями ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ сборки для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ скачивания Ρ‡Π΅Ρ€Π΅Π· интСрфСйс.

Π’ послСднСм Ρ€Π°Π·Π΄Π΅Π»Π΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π±ΠΎΠ»Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ список Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ссылки Π½Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ описания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ GitLab CI.


Описания ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ΠΈ ссылки Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ


ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово/Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ОписаниС
.gitlab-ci.yml ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТатся всС опрСдСлСния сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
script ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ исполняСмый shell-скрипт
before_script ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ всСми заданиями
image ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Docker-ΠΎΠ±Ρ€Π°Π·
stage ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΡΡ‚Π°Π΄ΠΈΡŽ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° (test ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ)
artifacts ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ список Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² сборки
artifacts:expire_in Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² ΠΏΠΎ ΠΈΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
pipeline ΠšΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ β€” Π½Π°Π±ΠΎΡ€ сборок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ стадиями

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GitLab CI:


(Автор ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° β€” sgnl_05)

habr.com

Как Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с GitHub: быстрый старт / Habr

РаспрСдСлСнныС систСмы контроля вСрсий (DVCS) постСпСнно Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ собой Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅. Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½ΠΈΡ… β€” самоС врСмя ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстро Π½Π°Ρ‡Π°Ρ‚ΡŒ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с git, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сайт github.com.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны различия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ DVCS. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π±ΠΎΡ‚Π° с git, ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅ Π΅ΡΡ‚ΡŒ мноТСство Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… источников, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π˜Ρ‚Π°ΠΊ, сайт github.com позиционируСтся ΠΊΠ°ΠΊ Π²Π΅Π±-сСрвис хостинга ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с использованиСм систСмы контроля вСрсий git, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡΠ΅Ρ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдоставляСтся wiki, систСма issue tracking-Π°, Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ code review ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. GitHub Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ являСтся самым популярным сСрвисом Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°, ΠΎΠ±ΠΎΠ³Π½Π°Π² Sourceforge ΠΈ Google Code.

Для open-souce ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² использованиС сайта бСсплатно. ΠŸΡ€ΠΈ нСобходимости ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΉ Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½:

НачнСм с рСгистрации. ИдСм ΠΏΠΎ ссылкС github.com/signup/free ΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌ свои Π΄Π°Π½Π½Ρ‹Π΅.
ПослС рСгистрации ΠΌΡ‹ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π½Π° Dashboard нашСго Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°:

БСйчас Ρƒ нас Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ рСпозитория, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π»ΠΈΠ±ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π²ΠΈΡ‚ΡŒΡΡ (fork) ΠΎΡ‚ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‡ΡƒΠΆΠΎΠ³ΠΎ рСпозитория ΠΈ вСсти ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π—Π°Ρ‚Π΅ΠΌ, ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, свои измСнСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Ρƒ исходного рСпозитория (Pull request).

Но для Π½Π°Ρ‡Π°Π»Π° установим git ΠΈ настроим Π΅Π³ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сайтом.

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² Windows, ΠΊΠ°Ρ‡Π°Π΅ΠΌ ΠΈ устанавливаСм msysgit. Π­Ρ‚ΠΎ консольная вСрсия git для Windows (Π΄Π°Π»Π΅Π΅ расказ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ этой ОБ).
Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ для MacOS X (eng)
Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ для Linux (eng)
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ, просто Π²Π΅Π·Π΄Π΅ ΠΆΠΌΠ΅ΠΌ Next. ПослС установки Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π² контСкстном мСню ΠŸΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ° Git Bash:

ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Git Bash.lnk Π² ΠΏΠ°ΠΏΠΊΠ΅ с установлСной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ:

ΠŸΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ Π² консоли свои Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ настройки пСрСносов строк:
git config --global user.name "вашС имя"
git config --global user.email "ваша ΠΏΠΎΡ‡Ρ‚Π°"
git config --global core.autocrlf true
git config --global core.safecrlf true

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ курс ΠΏΠΎ использованию git ΠΈΠ· консоли. ΠšΡƒΡ€Ρ проходится Π·Π° нСсколько часов ΠΈ Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ.

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ gui β€” для Windows сущСствуСт нСсколько Ρ‚Π°ΠΊΠΈΡ… инструмСнтов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с git. Π”Π²Π° основных β€” это SmartGit (кроссплатформСнный) ΠΈ TortoiseGit. Оба Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠ΅, ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ β€” Π΄Π΅Π»ΠΎ вкуса. Π― ΠΎΠΏΠΈΡˆΡƒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с TortoiseGit.
Для ΠΌΠ°ΠΊΠΎΠ² Π²Ρ‹Π±ΠΎΡ€ giu Ρ‚ΠΎΠΆΠ΅ имССтся.

  • ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΎΡ‚ GitHub β€” Π½Π° ΠΌΠΎΠΉ взгляд ΠΏΠΎΠΊΠ° достаточно сыроват.
  • GitX β€” Π»ΠΈΡ‡Π½ΠΎ ΠΌΠ½Π΅ Π½Π΅ приглянулся
  • GitBox β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ слСдуСт mac-way, ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ

ΠšΠ°Ρ‡Π°Π΅ΠΌ ΠΏΠΎ ссылкС code.google.com/p/tortoisegit/downloads/list. ΠŸΡ€ΠΈ установкС Π²Π΅Π·Π΄Π΅ ΠΆΠΌΠ΅ΠΌ Next.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ возвращаСмся ΠΊ github ΠΈ создадим Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. ΠΠ°Ρ…ΠΎΠ΄ΡΡΡŒ Π½Π° Dashboard, ΠΆΠΌΠ΅ΠΌ New Repository (https://github.com/repositories/new), Π²Π²ΠΎΠ΄ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΆΠΌΠ΅ΠΌ Create Repository.

GitHub позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с рСпозиториями трСмя способами: SSH, HTTP ΠΈ Git Read-Only, соотвСтствСнно прСдоставляя ссылки Ρ‚Ρ€Π΅Ρ… Π²ΠΈΠ΄ΠΎΠ² для нашСго рСпозитория:
1. [email protected]:habrauser/Hello-world.git
2. [email protected]/habrauser/Hello-world.git
3. git://github.com/habrauser/Hello-world.git

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто Π·Π°Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, достаточно Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° git (Ρ‚Ρ€Π΅Ρ‚ΡŒΡ ссылка). Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ быстрый ΠΈ эффСктивный способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния.

Если ΠΆΠ΅ ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ внСсти измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° github, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ HTTP ΠΈΠ»ΠΈ SSH.
Π Π°Π±ΠΎΡ‚Π° ΠΏΠΎ http Π½ΠΈΠΊΠ°ΠΊΠΈΡ… трудностСй Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚, Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи Π½Π° github.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SSH, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ: ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π² настройках Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° Π½Π° github, Π° ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ сохранСн Π½Π° локальной машинС.

Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ инструмСнтом ssh-keygen, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ΄Π΅Ρ‚ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с git (описаниС этого способа ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚). ΠœΡ‹ ΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PuTTY (Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΡƒ puttygen, Π²Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π² Π΅Π³ΠΎ состав). PuTTY β€” это Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ доступа, Π² Ρ‚ΠΎΠΌ числС ΠΈ с использованиСм SSH.

ΠšΠ°Ρ‡Π°Π΅ΠΌ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html). ΠšΡΡ‚Π°Ρ‚ΠΈ, puttygen Π±ΠΎΠ»Π΅Π΅ старой вСрсии (2007 Π³ΠΎΠ΄) ΠΈΠ΄Π΅Ρ‚ Π² составС TortoiseGit.

ПослС установки PuTTY, запускаСм puttygen ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ с установлСнной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ:

Π–ΠΌΠ΅ΠΌ Generate, Π΄Π²ΠΈΠ³Π°Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя курсором ΠΌΡ‹ΡˆΠΈ, для получСния случайных Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ

Π’Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‰ΠΈΠΉ наш ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² ΠΏΠΎΠ»Π΅ Key passphrase, Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΆΠΌΠ΅ΠΌ Save private key, сохраняСм.

Π”Π°Π»Π΅Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ OpenSSH ΠΈΠ· тСкстовой области Β«Public key for pasting…Β» ΠΈ ΠΈΠ΄Π΅ΠΌ Π² настройки нашСго Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° Π½Π° github (Account Settings) Π² Ρ€Π°Π·Π΄Π΅Π» SSH Public Keys:

ΠΆΠΌΠ΅ΠΌ Add another public Key, вставляСм наш ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡:

Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Add key. ВсС, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с github ΠΏΠΎ ssh. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ наш пустой Ρ€Π΅Ρ€ΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ с использованиСм TortioшseGit. Π’ контСкстном мСню ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ° Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Git Clone…

Π’ ΠΏΠΎΠ»Π΅ Url вставляСм SSH-адрСс нашСго рСпозитория, Π² ΠΏΠΎΠ»Π΅ Load Putty Key ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ, ΠΆΠΌΠ΅ΠΌ OK.

Pageant запросит Ρƒ Π½Π°c ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° (ΠΏΠΎΡ‚ΠΎΠΌ этого Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ потрСбуСтся)

Pageant β€” это Π°Π³Π΅Π½Ρ‚ SSH-Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² составС PuTTY, ΠΎΠ½ позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.
Π’ Ρ‚Ρ€Π΅Π΅ висит Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅ΠΊ:

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ склонирован Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ измСнСния Π½Π° github. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Ρ„Π°ΠΉΠ» README (Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ README обрабатываСтся github ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ β€” Π΅Π³ΠΎ содСрТимоС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² качСствС описания рСпозитория Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ страницС)

Π—Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠΌ измСнСния Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

ΠΈ синхронизируСм Π΅Π³ΠΎ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ Π½Π° github:

Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Push

Π’Π΅ΠΏΠ΅Ρ€ΡŒ зайдя Π½Π° страницу нашСго рСпозитория ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ рСпозитория сайт ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ wiki:

Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ систСму issue tracking-a:

кстати, для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Eclipсe β€” Π΅ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ mylyn-ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ для github:

ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ EGit:

По ссылкС Explore GitHub открываСтся ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ мноТСству Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π², Π² Ρ‚ΠΎΠΌ числС ΠΏΠΎ языкам программирования, популярности ΠΈ Ρ‚.ΠΏ.

Π Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΡ хочСтся ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ систСмами контроля вСрсий, ΠΈΠ»ΠΈ ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΈΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΊ распрСдСлСнным VCS, Π½ΠΎ Π½Π΅ Π·Π½Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ смысл ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ git, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт ΠΊΠ°ΠΊ github.com.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с git:
code.google.com/p/msysgit git для windows
www.syntevo.com/smartgit/index.html SmartGit
code.google.com/p/tortoisegit TortoiseGit
http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY

ΠŸΡ€ΠΎ git Π½Π° русском:
habrahabr.ru/blogs/Git/106912 «Удачная модСль вСтвлСния для gitΒ» β€” ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ англоязычной ΡΡ‚Π°Ρ‚ΡŒΠΈ
githowto.com ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ курс ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с git ΠΈΠ· консоли
habrahabr.ru/blogs/Git/106912 Β«ΠŸΠΎΡ‡Π΅ΠΌΡƒ gitΒ» + обсуТдСниС
habrahabr.ru/blogs/development/68341 Β«Git для пСрСходящих с SVNΒ» + обсуТдСниС
habrahabr.ru/blogs/Git/75990 «Командная Ρ€Π°Π±ΠΎΡ‚Π° Π² gitΒ» + обсуТдСниС
progit.org/book/ru русский ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠ½ΠΈΠ³ΠΈ Β«Pro GitΒ» (ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ΠΎ Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°)
habrahabr.ru/blogs/Git/123111 инструкция-ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…
los-t.livejournal.com/tag/git%20guts Ρ†ΠΈΠΊΠ» постов «внутрСнности gitΒ»
lib.custis.ru/%D0%9B%D0%B8%D0%BD%D1%83%D1%81_%D0%A2%D0%BE%D1%80%D0%B2%D0%B0%D0%BB%D1%8C%D0%B4%D1%81_%D0%BE_GIT_%D0%BD%D0%B0_Google_Talks Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ ΠΎ git
habrahabr.ru/blogs/Git/80909 ΠΊΠ½ΠΈΠ³Π° Β«Π’ΠΎΠ»ΡˆΠ΅Π±ΡΡ‚Π²ΠΎ gitΒ»

ΠŸΡ€ΠΎ git Π½Π° английском:
ΠΊΠ½ΠΈΠ³ΠΈ


Π²ΠΈΠ΄Π΅ΠΎ
Π΄Ρ€ΡƒΠ³ΠΎΠ΅

habr.com

Как ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Git (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Gitlab) β€” KAZARIN OnLine

kirill@xxx:test$ git status

На Π²Π΅Ρ‚ΠΊΠ΅ master

Π’Π°ΡˆΠ° Π²Π΅Ρ‚ΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Π² соотвСтствии с Β«origin/masterΒ».

Β 

НСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹:

Β Β (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Β«git add <Ρ„Π°ΠΉΠ»>…», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚)

Β 

Β Β Β Β Β Β Β Β README.md

Β 

Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ Π΅ΡΡ‚ΡŒ нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Β«git addΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ…)

Β 

kirill@xxx:test$ git checkout -b «add_readme»

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Β«add_readmeΒ»

Β 

kirill@xxx:test$ git status

На Π²Π΅Ρ‚ΠΊΠ΅ add_readme

НСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹:

Β Β (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Β«git add <Ρ„Π°ΠΉΠ»>…», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚)

Β 

Β Β Β Β Β Β Β Β README.md

Β 

Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ Π΅ΡΡ‚ΡŒ нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Β«git addΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ…)

Β 

kirill@xxx:test$ git add README.md

Β 

kirill@xxx:test$ git commit -m «README file was added»

[add_readme a0747f1] README file was added

1 file changed, 30 insertions(+)

create mode 100644 README.md

Β 

kirill@xxx:test$ git push

fatal: ВСкущая Π²Π΅Ρ‚ΠΊΠ° add_readme Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ внСшнюю Π²Π΅Ρ‚ΠΊΡƒ ΠΊΠ°ΠΊ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ для этой Π²Π΅Ρ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅

Β 

Β Β Β Β git push —set-upstream origin add_readme

Β 

kirill@xxx:test$ git push —set-upstream origin add_readme

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: 3, Π³ΠΎΡ‚ΠΎΠ²ΠΎ.

Delta compression using up to 4 threads.

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: 100% (3/3), Π³ΠΎΡ‚ΠΎΠ²ΠΎ.

Π—Π°ΠΏΠΈΡΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: 100% (3/3), 1.16 KiB | 1.16 MiB/s, Π³ΠΎΡ‚ΠΎΠ²ΠΎ.

Total 3 (delta 0), reused 0 (delta 0)

remote:

remote: To create a merge request for add_readme, visit:

remote:Β Β  http://Π³ΠΈΡ‚-сСрвСр/OPS/backups/file-backup-scripts/merge_requests/new?merge_request%5Bsource_branch%5D=add_readme

remote:

To Π³ΠΈΡ‚-сСрвСр:OPS/backups/file-backup-scripts.git

* [new branch]Β Β Β Β Β Β add_readme -> add_readme

Π’Π΅Ρ‚ΠΊΠ° Β«add_readmeΒ» отслСТиваСт внСшнюю Π²Π΅Ρ‚ΠΊΡƒ Β«add_readmeΒ» ΠΈΠ· Β«originΒ».

kazarin.online

Учимся Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ / Softmart corporate blog / Habr

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΠ± истории успСха Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ новостного ΠΏΠΎΡ€Ρ‚Π°Π»Π°, счастливым Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ Π²Ρ‹. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π²Ρ‹ ΡƒΠΆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° GitLab.com ΠΈ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ для тСстирования ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GitLab CI.
Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ интСрСсно, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠΉΡ‚ΠΈ дальшС ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CI Π΅Ρ‰Π΅ ΠΈ для развСртывания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ Ссли Π΄Π°, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ возмоТности ΠΏΡ€ΠΈ этом ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся простым Π½Π°Π±ΠΎΡ€ΠΎΠΌ HTML-Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ выполнСния ΠΊΠΎΠ΄Π° Π½Π° сСрвСрС, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ компиляции JS assets. Π”Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ Π½Π° Amazon S3.

Π£ Π°Π²Ρ‚ΠΎΡ€Π° Π½Π΅Ρ‚ Ρ†Π΅Π»ΠΈ Π΄Π°Ρ‚ΡŒ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅. Наоборот, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° максимально ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ слишком Π½Π° Π½ΠΈΡ… Π½Π΅ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ. Бмысл Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ посмотрСли Π½Π° Ρ„ΠΈΡ‡ΠΈ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ GitLab CI Π² дСйствии, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΈΡ… для вашСй Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.


НачнСм с Π½Π°Ρ‡Π°Π»Π°: Π² вашСм Π²Ρ‹ΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ CI.


Начало

Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅: Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ развСртывания Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ появлСниС Π½Π°Π±ΠΎΡ€Π° HTML-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² вашСм Π±Π°ΠΊΠ΅Ρ‚e (bucket) S3, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ настроСн для хостинга статичСских вСбсайтов).

Π”ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого ΠΌΠΎΠΆΠ½ΠΎ мноТСством Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ
awscli ΠΎΡ‚ Amazon.

ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π° развСртывания выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

aws s3 cp ./ s3://yourbucket/ --recursive --exclude "*" --include "*.html"

ΠŸΡƒΡˆ ΠΊΠΎΠ΄Π° Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ β€” это Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… процСсса

Π’Π°ΠΆΠ½ΠΎ: эта ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΡ‚Π΅ Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния AWS_ACCESS_KEY_ID ΠΈ AWS_SECRET_ACCESS_KEY. Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‚ вас ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ AWS_DEFAULT_REGION.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот процСсс с использованиСм GitLab CI.


ΠŸΠ΅Ρ€Π²ΠΎΠ΅ автоматичСскоС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GitLab ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ всС Ρ‚Π΅ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° локальном Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ GitLab CI Π² соотвСтствии с вашими трСбованиями Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ‹ настраиваСтС ваш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». ВсС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈ Π² GitLab, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΠΈΡ… Π² CI. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ваш скрипт Π² Ρ„Π°ΠΉΠ» .gitlab-ci.yml ΠΈ сдСлайтС ΠΏΡƒΡˆ β€” Π²ΠΎΡ‚ ΠΈ всС, CI запускаСт Π·Π°Π΄Π°Ρ‡Ρƒ (job) ΠΈ выполняСт ваши ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Π² Π½Π°ΡˆΡƒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ: ваш Π²Π΅Π±-сайт нСбольшой β€” 20-30 посСтитСлСй Π² дСнь, Π° Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π²Π΅Ρ‚ΠΊΠ° β€” master.

НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π·Π°Π΄Π°Ρ‡Ρƒ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ aws Π² .gitlab-ci.yml:

deploy:
  script: aws s3 cp ./ s3://yourbucket/ --recursive --exclude "*" --include "*.html"

НСудача:

Нам Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ исполняСмого Ρ„Π°ΠΉΠ»Π° aws. Для установки awscli трСбуСтся pip β€” инструмСнт для установки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Python. Π£ΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Π· Docker с прСдустановлСнным Python, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ pip:

deploy:
  image: python:latest
  script:
  - pip install awscli
  - aws s3 cp ./ s3://yourbucket/ --recursive --exclude "*" --include "*.html"

ΠŸΡ€ΠΈ ΠΏΡƒΡˆΠ΅ Π½Π° GitLab ΠΊΠΎΠ΄ автоматичСски развСртываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CI

Установка awscli ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΠΎ сСйчас нас это Π½Π΅ особСнно Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚. Если Π²Ρ‹ всС ΠΆΠ΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· Docker с прСдустановлСнным awscli, ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ своими силами.

Π’Π°ΠΊΠΆΠ΅, Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· AWS Console:

variables:
  AWS_ACCESS_KEY_ID: "AKIAIOSFODNN7EXAMPLE"
  AWS_SECRET_ACCESS_KEY: β€œwJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY”
deploy:
  image: python:latest
  script:
  - pip install awscli
  - aws s3 cp ./ s3://yourbucket/ --recursive --exclude "*" --include "*.html"

Π”ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ сСкрСтныС ΠΊΠ»ΡŽΡ‡ΠΈ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ (Π΄Π°ΠΆΠ΅ Π² ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ) β€” Π½Π΅ самая Π»ΡƒΡ‡ΡˆΠ°Ρ идСя. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ с этим ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.


Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ сСкрСтов

Π’ GitLab Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» для сСкрСтных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: Settings > Variables

ВсС Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Π΅ Π² этот Ρ€Π°Π·Π΄Π΅Π» станут ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ окруТСния. Доступ ΠΊ этому Ρ€Π°Π·Π΄Π΅Π»Ρƒ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ администратора ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π Π°Π·Π΄Π΅Π» variables ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· настроСк CI, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΈΠΌ для Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π΅Π»ΠΈ.


Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ использованиС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π‘ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ становится ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»Π΅ Π² качСствС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½ Π² случаС, ΠΊΠΎΠ³Π΄Π° эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах. Π₯ΠΎΡ‚ΡŒ Π² нашСм случаС Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ дошло, Π² дСмонстрационных цСлях создадим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для названия Π±Π°ΠΊΠ΅Ρ‚Π° S3:

variables:
  S3_BUCKET_NAME: "yourbucket"
deploy:
  image: python:latest
  script:
  - pip install awscli
  - aws s3 cp ./ s3://$S3_BUCKET_NAME/ --recursive --exclude "*" --include "*.html"

Π‘Π±ΠΎΡ€ΠΊΠ° ΡƒΡΠΏΠ΅ΡˆΠ½Π°:

Π’Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΡΠ΅Ρ‰Π°Π΅ΠΌΠΎΡΡ‚ΡŒ вашСго сайта ΠΏΠΎΠ²Ρ‹ΡΠΈΠ»Π°ΡΡŒ, ΠΈ Π²Ρ‹ наняли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π». Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π°. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ влияСт Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс.


Π Π°Π±ΠΎΡ‚Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π΄Π²Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ master для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ цСлСсообразно. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡ‡ ΠΈ написания статСй ΠΈ ΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ ΠΈΡ… Π² master ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ готовности.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ настройкС CI Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ β€” ΠΏΡ€ΠΈ ΠΏΡƒΡˆΠ΅ Π² Π»ΡŽΠ±ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π½Π° GitLab происходит Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния master Π½Π° S3.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, это Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ β€” просто Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ only: master Π² Π·Π°Π΄Π°Ρ‡Ρƒ deploy.

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ развСртывания ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° сайтС

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСдпросмотра ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсСнных ΠΈΠ· Π²Π΅Ρ‚ΠΎΠΊ для Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (feature-Π²Π΅Ρ‚ΠΎΠΊ).


Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ пространства для тСстирования

ΠŸΠ°Ρ‚Ρ€ΠΈΠΊ (Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Π½Π΅Π΄Π°Π²Π½ΠΎ наняли) Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ сущСствуСт такая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ
GitLab Pages. Как Ρ€Π°Π· Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ β€” мСсто для прСдпросмотра Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Для размСщСния вСбсайта Π½Π° GitLab Pages ваша конфигурация CI Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ Ρ‚Ρ€Π΅ΠΌ простым трСбованиям:


  • Π—Π°Π΄Π°Ρ‡Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ имя pages
  • Π”ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» artifacts, Π° Π² Π½Π΅ΠΌ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠ°ΠΏΠΊΠ° public
  • Π’ этой самой ΠΏΠ°ΠΏΠΊΠ΅ public Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° сайтС

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΏΠΊΠΈ public Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΎ ΠΏΠΎ адрСсу http://<username>.gitlab.io/<projectname>/

ПослС добавлСния ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° для сайтов Π½Π° чистом HTML Ρ„Π°ΠΉΠ» настройки CI выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

variables:
  S3_BUCKET_NAME: "yourbucket"

deploy:
  image: python:latest
  script:
  - pip install awscli
  - aws s3 cp ./ s3://$S3_BUCKET_NAME/ --recursive --exclude "*" --include "*.html"
  only:
  - master

pages:
  image: alpine:latest
  script:
  - mkdir -p ./public
  - cp ./*.html ./public/
  artifacts:
    paths:
    - public
  except:
  - master

ВсСго Π² Π½Π΅ΠΌ содСрТатся Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ: ΠΎΠ΄Π½Π° (deploy) ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ сайта Π½Π° S3 для Π²Π°ΡˆΠΈΡ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° другая (pages) Π½Π° GitLab Pages. НазовСм ΠΈΡ… соотвСтствСнно «Production environment» ΠΈ «Staging environment».

Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ всСх Π²Π΅Ρ‚ΠΎΠΊ, ΠΊΡ€ΠΎΠΌΠ΅ master, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° GitLab Pages


Π‘Ρ€Π΅Π΄Ρ‹ развСртывания

GitLab ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ со срСдами развСртывания. ВсС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ срСду для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ развСртывания:

variables:
  S3_BUCKET_NAME: "yourbucket"

deploy to production:
  environment: production
  image: python:latest
  script:
  - pip install awscli
  - aws s3 cp ./ s3://$S3_BUCKET_NAME/ --recursive --exclude "*" --include "*.html"
  only:
  - master

pages:
  image: alpine:latest
  environment: staging
  script:
  - mkdir -p ./public
  - cp ./*.html ./public/
  artifacts:
    paths:
    - public
  except:
  - master

GitLab отслСТиваСт всС ваши процСссы развСртывания, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ развСртываСтся Π½Π° Π²Π°ΡˆΠΈΡ… сСрвСрах:

Π’Π°ΠΊΠΆΠ΅, GitLab Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ всСх Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ срСды:

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΈ настроили всС, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ³Π»ΠΈ, ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ заставят сСбя Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π°Ρ‚ΡŒ.


Π Π°Π±ΠΎΡ‚Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Ρ‡Π°ΡΡ‚ΡŒ 2

ΠžΠΏΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΎΠΏΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. Π‘Ρ‚ΠΎΠΈΠ»ΠΎ Π²Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ свою feature-Π²Π΅Ρ‚ΠΊΡƒ для ΠΏΡ€Π΅Π²ΡŒΡŽ, ΠΊΠ°ΠΊ спустя ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠŸΠ°Ρ‚Ρ€ΠΈΠΊ сдСлал Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΈ Ρ‚Π΅ΠΌ самым пСрСзаписал содСрТимоС staging. #$@! Π’Ρ€Π΅Ρ‚ΠΈΠΉ Ρ€Π°Π· Π·Π° сСгодня!

ИдСя! Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Slack для ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ ΠΎ развСртываниях, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΡƒΡˆΠΈΠ» Π½ΠΎΠ²Ρ‹Π΅ измСнСния, ΠΏΠΎΠΊΠ° старыС Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ.


ΠžΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΡ Slack

ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ оповСщСния Slack нСслоТно. Надо лишь Π²Π·ΡΡ‚ΡŒ ΠΈΠ· Slack URL входящСго вСбхука…

… ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Settings > Services > Slack вмСстС с вашим Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ Slack:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ увСдомлСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ развСртываниях, Π² ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ настройках ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΠΈ Π½Π° всСх ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ…, ΠΊΡ€ΠΎΠΌΠ΅ β€œBuild”. Π’ΠΎΡ‚ ΠΈ всС, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ оповСщСния ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ:


Π Π°Π±ΠΎΡ‚Π° Π² большой ΠΊΠΎΠΌΠ°Π½Π΄Π΅

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ваш сайт стал ΠΎΡ‡Π΅Π½ΡŒ популярным, Π° ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° выросла с Π΄Π²ΡƒΡ… Π΄ΠΎ восьми Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° происходит ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, ΠΈ людям всС Ρ‡Π°Ρ‰Π΅ приходится ΠΆΠ΄Π°Ρ‚ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ для ΠΏΡ€Π΅Π²ΡŒΡŽ Π½Π° Staging. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ β€œΠŸΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° Staging” большС Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя вновь ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс. Π’Ρ‹ ΠΈ ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ соглашСнию, Ρ‡Ρ‚ΠΎ для выкатывания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° staging-сСрвСр Π½ΡƒΠΆΠ½ΠΎ сначала ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ€ΠΆ этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π²Π΅Ρ‚ΠΊΡƒ β€œstaging”.

Для добавлСния этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΡƒΠΆΠ½ΠΎ внСсти лишь нСбольшиС измСнСния Π² Ρ„Π°ΠΉΠ» .gitlab-ci.yml:

except:
- master

становится

only:
- staging

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ проводят ΠΌΠ΅Ρ€ΠΆ своих feature-Π²Π΅Ρ‚ΠΎΠΊ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅Π²ΡŒΡŽ Π½Π° Staging

Π‘Π°ΠΌΠΎ собой, ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π½Π° ΠΌΠ΅Ρ€ΠΆ тратятся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя ΠΈ силы, Π½ΠΎ всС Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ согласны, Ρ‡Ρ‚ΠΎ это Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΆΠ΄Π°Ρ‚ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.


НСпрСдвидСнныС ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°

НСвозмоТно всС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ нСприятности ΠΈΠΌΠ΅ΡŽΡ‚ свойство ΡΠ»ΡƒΡ‡Π°Ρ‚ΡŒΡΡ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ смСрТил Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Π·Π°ΠΏΡƒΡˆΠΈΠ» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прямо Π² production ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° ваш сайт находился Π² Ρ‚ΠΎΠΏΠ΅ HackerNews. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ тысячи Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ ΠΊΡ€ΠΈΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ сайта вмСсто вашСй ΡˆΠΈΠΊΠ°Ρ€Π½ΠΎΠΉ Π³Π»Π°Π²Π½ΠΎΠΉ страницы.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, нашСлся Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Π» ΠΏΡ€ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡƒ Rollback, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΈΠ½ΡƒΡ‚Ρƒ послС обнаруТСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ сайт принял ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΉ Π²ΠΈΠ΄.

Rollback пСрСзапускаСт Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΡŽΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½ΡƒΡŽ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π² дальнСйшСм, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ автоматичСскоС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² production ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Для этого Π² Π·Π°Π΄Π°Ρ‡Ρƒ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ when: manual.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Pipelines > Builds ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Π²ΠΎΡ‚ эту ΠΊΠ½ΠΎΠΏΠΊΡƒ:

И Π²ΠΎΡ‚ ваша компания ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΡŽ. Над сайтом Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ сотни Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ ΡƒΠΆΠ΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ подходят ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°ΠΌ.


РСвью ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ логичСским шагом являСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ возмоТности развСртывания Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ инстанса прилоТСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ feature-Π²Π΅Ρ‚ΠΊΠΈ для Ρ€Π΅Π²ΡŒΡŽ.

Π’ нашСм случаС для этого Π½Π°Π΄ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΊΠ΅Ρ‚ S3, с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Π² этом случаС содСрТимоС сайта копируСтся Π² β€œΠΏΠ°ΠΏΠΊΡƒβ€ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π²Π΅Ρ‚ΠΊΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ URL выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

http://<REVIEW_S3_BUCKET_NAME>.s3-website-us-east-1.amazonaws.com/<branchname>/

А Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄, Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π°Ρ‡Ρƒ pages:

review apps:
  variables:
    S3_BUCKET_NAME: "reviewbucket"
  image: python:latest
  environment: review
  script:
  - pip install awscli
  - mkdir -p ./$CI_BUILD_REF_NAME
  - cp ./*.html ./$CI_BUILD_REF_NAME/
  - aws s3 cp ./ s3://$S3_BUCKET_NAME/ --recursive --exclude "*" --include "*.html"

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΡƒΠ΄Π° Ρƒ нас появилась пСрСмСнная $CI_BUILD_REF_NAME β€” ΠΈΠ· списка ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния GitLab, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для любой своСй Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ пСрСмСнная S3_BUCKET_NAME ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ β€” Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ опрСдСлСния Π±ΠΎΠ»Π΅Π΅ высокого уровня.

Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ интСрпрСтация Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° сильно разнятся Π² зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² вашСм стСкС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ устроСн ваш процСсс развСртывания, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТнСС, Ρ‡Π΅ΠΌ наш ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с сайтом Π½Π° статичСском HTML. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ инстансы Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, это сильно услоТняСт ΠΈΡ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ со всСми Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ сСрвисами ΠΈ софтом β€œΠ½Π° лСту”. Однако это Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎ, особСнно, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Docker ΠΈΠ»ΠΈ хотя Π±Ρ‹ Chef ΠΈΠ»ΠΈ Ansible.

ΠŸΡ€ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Docker Π±ΡƒΠ΄Π΅Ρ‚ рассказано Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅. ЧСстно говоря, я Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ сСбя Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚Ρ‹ΠΌ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ упростил процСсс развартывания Π΄ΠΎ простого копирования HTML-Ρ„Π°ΠΉΠ»ΠΎΠ², ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ упуская Π±ΠΎΠ»Π΅Π΅ Ρ…Π°Ρ€Π΄ΠΊΠΎΡ€Π½Ρ‹Π΅ сцСнарии. Если Π²Π°ΠΌ это интСрСсно, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ «Building an Elixir Release into a Docker image using GitLab CI».

А ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ, послСднюю ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.


Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΡ‹ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ S3 ΠΈ GitLab Pages; прилоТСния Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сСрвисы.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, Π° для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ всС скрипты развСртывания. Π’ Ρ‚Π°ΠΊΠΎΠΉ ситуации использованиС gem’а dpl сильно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Тизнь.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ использовали awscli Π² качСствС инструмСнта для доставки ΠΊΠΎΠ΄Π° Π½Π° сСрвис Amazon S3. На самом Π΄Π΅Π»Π΅, Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ инструмСнт Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΈ ΠΊΡƒΠ΄Π° Π²Ρ‹ доставляСтС ΠΊΠΎΠ΄ β€” ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ остаСтся Ρ‚ΠΎΡ‚ ΠΆΠ΅: запускаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π² Π½Π΅Π΅ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ пСрСдаСтся сСкрСтный ΠΊΠ»ΡŽΡ‡ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для развСртывания dbl придСрТиваСтся этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΈ прСдоставляСт ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (providers), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для развСртывания вашСго ΠΊΠΎΠ΄Π° Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… хостинговых ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ°Ρ….

Π—Π°Π΄Π°Ρ‡Π° для развСртывания Π² production с использованиСм dpl Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

variables:
  S3_BUCKET_NAME: "yourbucket"

deploy to production:
  environment: production
  image: ruby:latest
  script:
  - gem install dpl
  - dpl --provider=s3 --bucket=$S3_BUCKET_NAME
  only:
  - master

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ хостинговыС ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ часто мСняСтС Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ Π½Π°Π΄ использованиСм dpl Π² скриптах развСртывания β€” это способствуСт ΠΈΡ… Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΡŽ.


Подводя ΠΈΡ‚ΠΎΠ³ΠΈ


  1. Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ происходит ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ рСгулярного выполнСния выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… GiLab CI
  2. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв этим ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сСкрСтныС ΠΊΠ»ΡŽΡ‡ΠΈ. Π₯Ρ€Π°Π½ΠΈΡ‚Π΅ эти ΠΊΠ»ΡŽΡ‡ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Settings > Variables
  3. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GitLab CI Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΠΈ для развСртывания
  4. GitLab сохраняСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ
  5. БущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ развСртывания Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Π° Π½Π΅ автоматичСски) для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… частСй инфраструктуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ с английского Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ пСрСводчСской Π°Ρ€Ρ‚Π΅Π»ΡŒΡŽ «Надмозг ΠΈ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Ρ‹Β», http://nadmosq.ru. Над ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π» sgnl_05.

habr.com

Π Π°Π±ΠΎΡ‚Π° с Git Ρ‡Π΅Ρ€Π΅Π· консоль β€” Π‘Π»ΠΎΠ³ АкадСмии β€” HTML Academy

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹Β ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅: ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΊ вашСго рСпозитория Π²Β GitHub, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΒ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Когда ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» нСпонятноС заданиСКогда ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» нСпонятноС Π·Π°Π΄Π°Π½ΠΈΠ΅.

Π§Ρ‚ΠΎ Π·Π°Β GitHub, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π·Π°Ρ‡Π΅ΠΌ, Π°Β Π³Π»Π°Π²Π½ΠΎΠ΅, ΠΊΠ°ΠΊ всСм этим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ? Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ.

БистСма контроля вСрсий Git

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма контроля вСрсий.

Π’Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΒ Ρ‚ΠΎΠ³ΠΎΒ ΠΆΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π½Π½ΠΈΠΌΠΈ ΠΈΒ ΠΏΠΎΠ·Π΄Π½ΠΈΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ, Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΈΒ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния.

БистСм контроля вСрсий ΠΌΠ½ΠΎΠ³ΠΎ и всС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎΒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹, Π³Π΄Π΅ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ к мСсту сохранСния, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅Β Ρ‚Π°ΠΊ.

Одна из самых популярных систСм называСтся Git. Π•Ρ‘Β ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚Β Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΒ β€” отсутствиС графичСской вСрсии. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π° с Git вСдётся Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку. Π’Β Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах свои ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для взаимодСйствия с Git.

Π’Β Windows ΠΈΡ…Β Π΄Π²Π΅: PowerShell ΠΈΒ cmd.exe. Π’Β Ubuntu это Terminal. Бамая популярная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Β macOS Ρ‚ΠΎΠΆΠ΅ называСтся Terminal. Если Π²Π°ΠΌ Π½Π΅Β ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ встроСнная в систСму ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с командной строкой, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свою. НапримСр, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π°Β JavaScript ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Hyper, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ на любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС. На Windows популярны ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Cmder ΠΈΒ Git Bash, Π°Β Π½Π°Β macOSΒ β€” iTerm.

Π’Β ΠΌΠΈΡ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Β» ΠΈΠ»ΠΈ «консоль». А работаСт это Ρ‚Π°ΠΊ: ΠΌΡ‹Β Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρ‹: сообщСниС об ошибкС, запрос Π½Π°Β ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… дСйствий.

УстанавливаСм Git

Если Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Ρ‹Β Π½Π΅Β Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с Git, спСрва Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Бпособы зависят ΠΎΡ‚Β ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Установка Π²Β Linux

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² вашСго дистрибутива. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈΒ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ подходящиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

  • Если у вас 21Β ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ранняя вСрсия Fedora, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ yum install git.
  • Для 22Β ΠΈΒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсий Fedora Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ dnf install git.
  • Для дистрибутивов, основанных Π½Π°Β Debian, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ubuntu, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ apt-get: sudo apt-get install git.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дистрибутивов ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь.

Установка Π½Π°Β macOS
  1. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Git со страницы ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  2. ЗапускаСм Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».
  3. БистСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ с ошибкой, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ написано, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» скачан с нСавторизованного сайта и инсталлятор Π½Π΅Β ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½. Π’Β Ρ‚Π°ΠΊΠΎΠΌ случаС Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΉΡ‚ΠΈ в «БистСмныС настройки» — Β«Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΒ» (Security and Privacy), в появившСмся ΠΎΠΊΠ½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ сообщСниС об ошибкС ΠΈΒ ΠΊΠ½ΠΎΠΏΠΊΠ° Open anyway (Всё Ρ€Π°Π²Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ). НаТимаСм.
  4. БистСма ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ, ΡƒΡ‚ΠΎΡ‡Π½ΡΡŽΡ‰Π΅Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅Β Π»ΠΈ Π²Ρ‹Β Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ установку. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅ΠΌ дСйствиС.
  5. Установщик ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Ρ‚ Ρ‡Π΅Ρ€Π΅Π· всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ шаги.
Установка Π²Β Windows

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ exe-Ρ„Π°ΠΉΠ» инсталлятора с сайта Git и запуститС Π΅Π³ΠΎ. Π­Ρ‚ΠΎ Git для Windows, он называСтся msysGit. Установщик спросит Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΒ Π»ΠΈ в мСню ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запуска Ρ„Π°ΠΉΠ»ΠΎΠ² ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Git Bash (консольная вСрсия) ΠΈΒ GUI (графичСская вСрсия). ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ дСйствиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π»Π΅Π΅ вСсти Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‡Π΅Ρ€Π΅Π· консоль Π²Β Git Bash. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Git установлСн

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всС дСйствия по установкС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹, убСдимся, Ρ‡Ρ‚ΠΎ Git появился в систСмС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈΒ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ git --version, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ тСкущая вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ на вашСй машинС. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

Настройка Git

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Git появился Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½ΡƒΠΆΠ½ΠΎ ввСсти свои Π΄Π°Π½Π½Ρ‹Π΅, Π°Β ΠΈΠΌΠ΅Π½Π½ΠΎ имя и адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. Π’Π°ΡˆΠΈ дСйствия Π²Β Git Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ своё имя: git config --global user.name "вашС имя"

Для добавлСния ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ адрСса Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅: git config --global user.email адрСс

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Β ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅, Π΅ΡΡ‚ΡŒ опция --global. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ сохранСны для всСх Π²Π°ΡˆΠΈΡ… дСйствий Π²Β Git ΠΈΒ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ…Β Π±ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅Β Π½Π°Π΄ΠΎ. Если Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚ΠΎΒ Π²Β Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ эти ТС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π΅Π· ΠΎΠΏΡ†ΠΈΠΈ --global.

РСгистрация Π½Π°Β GitHub

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ GitHub?

GitHubΒ β€” Π²Π΅Π±-сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ основан на систСмС Git. Π­Ρ‚ΠΎ такая ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡΠ΅Ρ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ вСсти ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ IT-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈΒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ за новостями Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ИмСнно Π²Β GitHub Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌΒ ΠΌΡ‹, ΠΊΠΎΠΌΠ°Π½Π΄Π° АкадСмии, и студСнты интСнсивов.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с GitHub, Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ на сайтС, Ссли Π²Ρ‹Β Π΅Ρ‰Ρ‘ этого нС сдСлали. Π—Π°Β Π΄Π΅Π»ΠΎ.

  1. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ на сайт GitHub. Cтартовая страница GitHubCтартовая страница GitHub.
  2. Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° рСгистрации:
    • НаТимаСм ΠΊΠ½ΠΎΠΏΠΊΡƒ SignΒ up (Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ), ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ на страницу рСгистрации, Π³Π΄Π΅ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈΒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ. ПослС заполнСния ΠΏΠΎΠ»Π΅ΠΉ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Create anΒ account (ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚).
    • CΡ€Π°Π·Ρƒ Π²Π²ΠΎΠ΄ΠΈΠΌ имя, ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΈΒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π°Β Π³Π»Π°Π²Π½ΠΎΠΉ страницС GitHub ΠΈΒ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Sign upΒ for GitHub (Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π°Β GitHub).
    ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг рСгистрации профиля Π½Π° стартовой страницС GitHubΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг рСгистрации профиля на стартовой страницС GitHub.
  3. На втором этапС Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½. GitHubΒ β€” бСсплатный сСрвис, но прСдоставляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ возмоТности. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ ΠΈΒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ. Π’Ρ‹Π±ΠΎΡ€ Ρ‚Π°Ρ€ΠΈΡ„Π° Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ шагС рСгистрацииВыбор Ρ‚Π°Ρ€ΠΈΡ„Π° Π½Π°Β Π²Ρ‚ΠΎΡ€ΠΎΠΌ шагС рСгистрации.
  4. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡˆΠ°Π³Β β€” нСбольшой опрос ΠΎΡ‚Β GitHub, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² всС поля ΠΈΒ Π½Π°ΠΆΠ°Ρ‚ΡŒ Submit ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Π½Π°ΠΆΠ°Π² skip this step. ΠžΠΏΡ€ΠΎΡ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ шагС Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈΠžΠΏΡ€ΠΎΡ Π½Π°Β Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ шагС рСгистрации.
  5. ПослС прохоТдСния всСх этапов на сайтС, Π½Π°Β ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ рСгистрации ящик Π²Π°ΠΌ ΠΏΡ€ΠΈΠ΄Ρ‘Ρ‚ письмо ΠΎΡ‚Β GitHub. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΈΒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ свой ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ адрСс, Π½Π°ΠΆΠ°Π² Verify email address (ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ элСктронный адрСс) ΠΈΠ»ΠΈ скопируйтС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ссылку из письма ΠΈΒ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅Ρ‘Β Π²Β Π°Π΄Ρ€Π΅ΡΠ½ΡƒΡŽ строку Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ в ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ.
Π’Π°ΠΊ выглядит ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ послС рСгистрацииВак выглядит ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ послС рСгистрации.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ у вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π½Π°Β GitHub.

УстанавливаСм SSH-ΠΊΠ»ΡŽΡ‡ΠΈ

Git установлСн, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π½Π°Β GitHub создан. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ SSH-ΠΊΠ»ΡŽΡ‡ ΠΈΒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊΒ Ρ€Π°Π±ΠΎΡ‚Π΅ с проСктом.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SSH-ΠΊΠ»ΡŽΡ‡ ΠΈΒ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½Β Π½ΡƒΠΆΠ΅Π½?

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со своСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° с GitHub, ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊΒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ, хранящимся на сСрвисС, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ в консоли Π±Π΅Π· постоянного подтвСрТдСния пароля, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ у сСрвСра. В этом ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ SSH-ΠΊΠ»ΡŽΡ‡ΠΈ.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ SSH-ΠΊΠ»ΡŽΡ‡ содСрТит ΠΏΠ°Ρ€Ρƒ: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ) ΠΈΒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ (ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ) ΠΊΠ»ΡŽΡ‡. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ отправляСтся на сСрвСр, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Β ΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ от всСх ΠΈΒ Π½Π΅Β ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΅Π³ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ ΠΈΒ ΡƒΠΊΡ€Π°Π΄Ρ‘Ρ‚. Он бСсполСзСн Π±Π΅Π· своСй ΠΏΠ°Ρ€Ρ‹Β β€” Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. А вот Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡Β β€” сСкрСтная Ρ‡Π°ΡΡ‚ΡŒ. Доступ ΠΊΒ Π½Π΅ΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ у вас.

Вы отправляСтС ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ на сСрвСр, Π³Π΄Π΅ хранится ваш ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, сСрвСр ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вы это вы, Ρ‚ΠΎΒ Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ вас, ΠΈΒ Π΄Π°Ρ‘Ρ‚ Π²Π°ΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚. Π˜Β Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΎΡ‚Π²Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ у вас Π΅ΡΡ‚ΡŒ подходящий Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ связки Π»ΠΎΠ³ΠΈΠ½-ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ бСзопаснСй. Π’Π°Ρˆ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ, Π°Β Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ваш ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ SSH-ΠΊΠ»ΡŽΡ‡, Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ придётся Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΒ SSH-ΠΊΠ»ΡŽΡ‡Ρƒ, Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΆΠ΅ Ρ€Π°Π½Π΅Π΅ созданный ΠΊΠ»ΡŽΡ‡ на своём ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Π΅ΡΡ‚ΡŒΒ Π»ΠΈ ΡƒΠΆΠ΅ Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΊΠ»ΡŽΡ‡. ΠŸΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SSH-ΠΊΠ»ΡŽΡ‡ΠΈ хранятся Π²Β ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ~/.ssh, поэтому Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ содСрТимоС этого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

  1. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ консоль.
  2. Π’Π²ΠΎΠ΄ΠΈΠΌ cd ~/.ssh, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π²Β Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π²Β Π½ΡƒΠΆΠ½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ.
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ls, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ список всСх Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Β ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Β Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Π˜Ρ‰Π΅ΠΌ ΠΏΠ°Ρ€Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² с названиями Π²ΠΈΠ΄Π° имя ΠΈ имя.pub. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ имя — id_rsa, id_dsa, id_ecdsa ΠΈΠ»ΠΈ id_ed25519. Π€Π°ΠΉΠ» ΡΒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .pub β€” ваш ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, Π°Β Π²Ρ‚ΠΎΡ€ΠΎΠΉΒ β€” ваш ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ, сСкрСтный ΠΊΠ»ΡŽΡ‡. Если Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° .ssh у вас Π½Π΅Ρ‚, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ…Β ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Для этого Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.
  4. ДобавляСм ΠΊΠ»ΡŽΡ‡ Π² ssh-agent (сгСнСрированный ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ eval "$(ssh-agent -s)" и добавляСм ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ssh-add ~/.ssh/your_key_name, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎΒ Ρ„Π°ΠΉΠ»Π° ΡΒ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΈΒ Π΅Π³ΠΎ имя. ДобавляСм ΠΊΠ»ΡŽΡ‡ Π² shh-agentДобавляСм ΠΊΠ»ΡŽΡ‡ Π²Β shh-agent. НСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ:
    • Если Π²Ρ‹Β Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π˜Ρ…Β ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² ~/.ssh/config связь ΠΊΠ»ΡŽΡ‡Π° с домСном.
    • Если у вас Windows ΠΈΒ Π²Ρ‹Β ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Cmder, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с командой eval "$(ssh-agent -s)". ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠ΅ сообщСниС об ошибкС: Β«eval нС являСтся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΈΠ»ΠΈ внСшнСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, исполняСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌΒ».

      Π’Β Π‘mder для запуска ssh-agent ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ start-ssh-agent.

      Если ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡΡ‚Π°Π»Π°ΡΡŒ, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Β Git Bash.

    • Если у вас macOS Sierra вСрсии 10.12.2 ΠΈΒ Π²Ρ‹ΡˆΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ваш ~/.ssh/config Ρ„Π°ΠΉΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ автоматичСски Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ Π² ssh-agent ΠΈΒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ.
      Host *
       AddKeysToAgent yes
       UseKeychain yes
       IdentityFile ~/.ssh/id_rsa

      Π’Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свой ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² ssh-agent ΠΈΒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊΒ Π½Π΅ΠΌΡƒ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ssh-add -K ~/.ssh/id_rsa. Если ΡƒΒ Π²Π°ΡˆΠ΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ имя, Π½Π΅Β Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ id_rsa Π²Β ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½Π°Β ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.

    • Если у вас Linux, ΠΌΠΎΠΆΠ΅Ρ‚ понадобится ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ для ~/.ssh ΠΏΡ€Π°Π²Π° доступа ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ chmod 700 ~/.ssh/
  5. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ создан ΠΊΠ»ΡŽΡ‡, Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π°Β GitHub. Для этого ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ содСрТимоС ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ·Β ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:
    • Если Π²Ρ‹Β Π½Π°Β Windows clip .
    • Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ macOS pbcopy .
    • На Linux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ sudo apt-get install xclip, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для копирования ΠΏΠ°ΠΊΠ΅Ρ‚ xclip, Π°Β Π·Π°Ρ‚Π΅ΠΌ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ xclip -sel clip . Или Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cat ~/.ssh/id_rsa.pub, ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° появится прямо в консоли и вы смоТСтС ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ ΠΎΡ‚Ρ‚ΡƒΠ΄Π°.
    • МоТно ΠΏΠΎΠΉΡ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» id_rsa.pub прямо Π²Β ΠΏΠ°ΠΏΠΊΠ΅ и просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС ΠΎΡ‚Ρ‚ΡƒΠ΄Π°.

  6. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ на страницу для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡΒ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ в вашСм ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ Π½Π°Β GitHub. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° с настройками ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² вашСм ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° с настройками ΠΊΠ»ΡŽΡ‡Π΅ΠΉ в вашСм ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅.

    НаТимаСм ΠΊΠ½ΠΎΠΏΠΊΡƒ New SSH key (Π½ΠΎΠ²Ρ‹ΠΉ SSH-ΠΊΠ»ΡŽΡ‡). Π’Π²ΠΎΠ΄ΠΈΠΌ имя ΠΊΠ»ΡŽΡ‡Π° (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ любоС) Π²Β ΠΏΠΎΠ»Π΅ Title (Π½Π°Π·Π²Π°Π½ΠΈΠ΅), Π°Β Π²Β Key (ΠΊΠ»ΡŽΡ‡) вставляСм сам ΠΊΠ»ΡŽΡ‡ ΠΈΠ·Β Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Add SSH key (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ SSH-ΠΊΠ»ΡŽΡ‡).

    ДобавляСм Π² свой ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ SSH-ΠΊΠ»ΡŽΡ‡Π”ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ в свой ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ SSH-ΠΊΠ»ΡŽΡ‡.

    Если всё сдСлано Π²Π΅Ρ€Π½ΠΎ, в спискС появится Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

     УспСшно Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡Π£ΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ, ΠΌΡ‹Β ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с самим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.

Π Π°Π±ΠΎΡ‚Π° с рСпозиториями

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π­Ρ‚ΠΎ рабочая дирСктория с вашим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ. ΠŸΠΎΒ ΡΡƒΡ‚ΠΈ, это Ρ‚Π°Β ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ° с HTML, CSS, JavaScript ΠΈΒ ΠΏΡ€ΠΎΡ‡ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ хранится у вас Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, но находится на сСрвСрС GitHub. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с проСктом ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎ на любой машинС, нС пСрСТивая, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΈΠ·Β Π²Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ΡΡΒ β€” всС Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π²Ρ‹Β ΠΈΡ…Β Ρ‚ΡƒΠ΄Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅. Но об этом ΠΏΠΎΠ·ΠΆΠ΅.

Если Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ трудится ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, создаётся ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π²Β ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится рабочая вСрсия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π½Π°Π·ΠΎΠ²Ρ‘ΠΌ Π΅Π³ΠΎ мастСр-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ). ΠŸΡ€ΠΈ этом ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ сСбС Π²Β ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ с копиСй. Вакая копия называСтся Ρ„ΠΎΡ€ΠΊΠΎΠΌ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΊΒ β€” ваша ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ вСрсия мастСр-рСпозитория, Π²Β Π½Ρ‘ΠΌ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΒ Π½Π΅Β Π±ΠΎΡΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ в основной вСрсии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΊ мастСр-рСпозитория?

Π—Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π²Β Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π°Β Β«Π²ΠΈΠ»ΠΊΡƒΒ» с надписью fork. Π€ΠΎΡ€ΠΊ рСпозитория создан и находится в вашСм ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ Π½Π°Β GitHub.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΊ сСбС Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вСсти Ρ€Π°Π±ΠΎΡ‚Ρƒ с кодом локально. Π’ΡƒΡ‚ Π½Π°ΠΌ и пригодится SSH.

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ консоль, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π²Β Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, Π³Π΄Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ с проСктом, ΠΈΒ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git clone [email protected]:your-nickname/your-project.git

Если Π²Ρ‹Β ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроили SSH-ΠΊΠ»ΡŽΡ‡ΠΈ, Git Π½Π°Ρ‡Π½Ρ‘Ρ‚ процСсс копирования рСпозитория на ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Если Π²Ρ‹Β Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π²Β ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ написано Error: Permission denied (publickey), скорСС всСго, Π²Ρ‹Β ΠΎΡˆΠΈΠ±Π»ΠΈΡΡŒ Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ инструкции по настройкС SSH-ΠΊΠ»ΡŽΡ‡Π°. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ на нСсколько Π°Π±Π·Π°Ρ†Π΅Π² Ρ€Π°Π½Π΅Π΅ ΠΈΒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ процСсс настройки.

Если Π²Ρ‹Β Π½Π΅Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ адрСс рСпозитория, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΉΡ‚ΠΈ на страницу ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°ΠΆΠ°Ρ‚ΡŒ Π·Π΅Π»Ρ‘Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Clone orΒ download (ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ), Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Clone with SSH (ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΒ SSH) ΠΈΒ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится в тСкстовом ΠΏΠΎΠ»Π΅. Π­Ρ‚ΠΎΡ‚ адрСс Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Β ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git clone.

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ссли Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ с проСктом у вас Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΎΡΡŒ ΠΎΡ‚Β ΠΈΠΌΠ΅Π½ΠΈ рСпозитория, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ клонирования, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²Β ΠΊΠΎΠ½Ρ†Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅:

git clone [email protected]:_your-nickname_/_your-project_.git folder_name

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, на вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π²Β ΠΏΠ°ΠΏΠΊΠ΅ your_project ΠΈΠ»ΠΈ Π²Β Ρ‚ΠΎΠΉ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Β ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, находится полная копия рСпозитория cΒ GitHub.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π½Π°Π΄ΠΎ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² Π΅Π³ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cd, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅: cd your-project

 Копия рСпозиторияБдСлали копию рСпозитория.

Π Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ принято вСсти Π²Β Π²Π΅Ρ‚ΠΊΠ°Ρ…. Π’Β ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Π° Π²Π΅Ρ‚ΠΊΠ°. Π­Ρ‚ΠΎ основная Π²Π΅Ρ‚ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ создаёт сам Git, ΠΎΠ½Π° называСтся master . ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Β Π½Π΅ΠΉ находится ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· ошибок. Если Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±Π°Π³, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Β ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, Π½ΠΎΒ Π½Π΅Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ в основной Π²Π΅Ρ‚ΠΊΠ΅, Π²Ρ‹Β ΠΎΡ‚Π²Π΅Ρ‚Π²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ ΠΈΠ· master ΠΈΒ Ρ‚Ρ€ΡƒΠ΄ΠΈΡ‚Π΅ΡΡŒ в своСй Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. Π—Π΄Π΅ΡΡŒ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свои ΠΈΠ΄Π΅ΠΈ, нС пСрСТивая, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄ сломаСтся. КаТдая Π²Π΅Ρ‚ΠΊΠ°Β β€” Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ второстСпСнной Π΄ΠΎΡ€ΠΎΠ³ΠΈ, которая Π·Π°Ρ‚Π΅ΠΌ снова соСдиняСтся с основной.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git branch. Она ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ список Π²Π΅Ρ‚ΠΎΠΊ, с которыми ΠΌΡ‹Β Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π²Β ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, и выдСляСт Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ. Если мы находимся Π² master создаём Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ: git checkout -b имя-Π½ΠΎΠ²ΠΎΠΉ-Π²Π΅Ρ‚ΠΊΠΈ.

 Новая вСткаНовая Π²Π΅Ρ‚ΠΊΠ°.

Если тСкущая Π²Π΅Ρ‚ΠΊΠ° Π½Π΅ master, сначала ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ Π²Β ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ: git checkout master. ΠœΡ‹Β Π΄Π΅Π»Π°Π΅ΠΌ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ новая Π²Π΅Ρ‚ΠΊΠ° содСрТала ΡΠ²Π΅ΠΆΡƒΡŽ, Π½Π°Β ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания, Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° позволяСт ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π²Β ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, послС git checkout Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

 ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

Если Π²Ρ‹Β ΠΎΡˆΠΈΠ±Π»ΠΈΡΡŒ Π²Β Π½Π°Π·Π²Π°Π½ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, допустили ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΡƒ, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git branch -m староС-имя-Π²Π΅Ρ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ΅-имя-Π²Π΅Ρ‚ΠΊΠΈ.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ вы создали Π²Π΅Ρ‚ΠΊΡƒ, ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π²Β Π½Π΅ΠΉ у сСбя Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΒ β€” Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Β Π½Π΅Β ΠΏΡ€ΠΎΠΏΠ°Π» ΠΈΒ Π²Β ΠΈΡ‚ΠΎΠ³Π΅ оказался Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Если Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния нС во всСх Ρ„Π°ΠΉΠ»Π°Ρ…, для Π½Π°Ρ‡Π°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git status. Она ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС в вашСй Π²Π΅Ρ‚ΠΊΠ΅, Π°Β ΠΈΠΌΠ΅Π½Π½ΠΎ список с названиями ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, ΠΈΒ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π°Β Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ записи и сохранСния (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ красным Ρ†Π²Π΅Ρ‚ΠΎΠΌ).

 БостояниС вСткиБостояниС Π²Π΅Ρ‚ΠΊΠΈ.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π²Β Π½Π°Π±ΠΎΡ€ этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git add имя-Ρ„Π°ΠΉΠ»Π°. Если Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠ°Ρ‚ΡŒ Tab и консоль сама ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π²Π°ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ ΠΊΒ Ρ„Π°ΠΉΠ»Ρƒ.

Если Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС измСнСния Ρ€Π°Π·ΠΎΠΌ, Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ git add -A.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹Β ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‚ΠΎΒ Π΅ΡΡ‚ΡŒ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС сохранённыС измСнСния ΠΈΒ Π΄Π°Ρ‚ΡŒ ΠΈΠΌΒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ дСлаСтся ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git commit -m "вашС сообщСниС". ВСкст сообщСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈΒ Π²Β Ρ‚ΠΎΒ ΠΆΠ΅ врСмя ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎΒ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚ (внСсённыС измСнСния). НапримСр, «добавляСт имя наставника Π²Β ReadmeΒ», Β«Π²Π²ΠΎΠ΄ΠΈΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сортировки ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉΒ», Β«ΠΏΡ€Π°Π²ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ в поискС Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² Π½Π°Β ΠΊΠ°Ρ€Ρ‚Π΅Β».

Π”Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π”Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚.

БохранСния зафиксированы, всё? Они Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΒ Π²ΠΈΠ΄Π½Ρ‹ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ? Пока Π½Π΅Ρ‚. ВС измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ мы внСсти и сохранили, ΠΏΠΎΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹. Π˜Ρ…Β Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Π½Π°Β GitHub.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свои измСнСния (ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹) Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π°Β GitHub, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git push origin Π½Π°Π·Π²Π°Π½ΠΈΠ΅-Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ-Π²Π΅Ρ‚ΠΊΠΈ, Π³Π΄Π΅ origin ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» склонирован Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Ρ‚ΠΎΒ Π΅ΡΡ‚ΡŒ ваш Ρ„ΠΎΡ€ΠΊ.

 ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ измСнСния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ на страницу нашСго Ρ„ΠΎΡ€ΠΊΠ° и создаём пулрСквСст, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ»ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ с данными в мастСр-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пулрСквСст? Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π›ΡŽΠ±ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ€Π³Π½ΡƒΡ‚ΡŒ. Π’Π°ΠΊΒ ΠΆΠ΅ и с пулрСквСстом. ПослС Π΅Π³ΠΎ создания, ΠΎΠ½Β Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π²ΡŒΡŽ ΠΈΒ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ»Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Β β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ GitHub, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²Π° администратора в мастСр-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π˜ΠΌΒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ваш ΠΊΠΎΠ»Π»Π΅Π³Π°-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Ρ‚Π΅Ρ…Π»ΠΈΠ΄, наставник. Если ΠΊΒ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ Π½Π΅Ρ‚ вопросов, пулрСквСст принимаСтся и измСнСния из вашСй Π²Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² master Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ рСпозитория. Если Π²Β ΠΊΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎ внСсти измСнСния, пулрСквСст отклоняСтся, ΠΈΒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ снова ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎΒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния — сохранСниС — ΠΊΠΎΠΌΠΌΠΈΡ‚Β β€” ΠΏΡƒΡˆ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пулрСквСст Π·Π°Π½ΠΎΠ²ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Β Π½ΡƒΠΆΠ½ΠΎ. Если Π²Ρ‹Β ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚Π΅ вСсти Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Β Ρ‚ΠΎΠΉΒ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠ΅ и пулрСквСст Π΅Ρ‰Ρ‘ нС принят, всС ваши измСнСния автоматичСски добавятся в пулрСквСст, созданный из этой Π²Π΅Ρ‚ΠΊΠΈ послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push origin Π½Π°Π·Π²Π°Π½ΠΈΠ΅-Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ-Π²Π΅Ρ‚ΠΊΠΈ.

Вы исправили ΠΊΠΎΠ΄, наставник ΠΈΠ»ΠΈ Ρ‚Π΅Ρ…Π»ΠΈΠ΄ ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΠ» ваши ΠΏΡ€Π°Π²ΠΊΠΈ и принял пулрСквСст. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ΄ в мастСр-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ обновился, а в вашСм Ρ„ΠΎΡ€ΠΊΠ΅ Π½Π΅Ρ‚, Π²Ρ‹Β Π²Π΅Π΄ΡŒ нС обновляли свою Π²Π΅Ρ€ΡΠΈΡŽ рСпозитория с тСх ΠΏΠΎΡ€, ΠΊΠ°ΠΊ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Сё сСбС Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Ρ„ΠΎΡ€ΠΊ Π²Β Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ состояниС.

  1. Π’Β Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git checkout master, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² master.
  2. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π±ΠΈΡ€Π°Π΅ΠΌ (подтягиваСм) измСнСния ΠΈΠ·Β Π²Π΅Ρ‚ΠΊΠΈ master мастСр-рСпозитория git pull academy master. Academy Π·Π΄Π΅ΡΡŒΒ β€” сокращённоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ мастСр-рСпозитория, Ρ‚Π°ΠΊΠΎΠ΅ имя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Β ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… студСнтов АкадСмии, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Π—Π°Π±ΠΈΡ€Π°Π΅ΠΌ измСнСния ΠΈΠ· мастСр-рСпозиторияЗабираСм измСнСния ΠΈΠ· мастСр-рСпозитория. Если консоль Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈΒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Β Π·Π½Π°Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с таким ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ссылку на этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:
    git remote add academy [email protected]:your-repo.git
    ВмСсто academy ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ своё Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΒ ΠΎΠ½ΠΎ закрСпится за этим Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ.
  3. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ измСнСния ΡƒΠΆΠ΅ из своСй Π²Π΅Ρ‚ΠΊΠΈ master в ваш Ρ„ΠΎΡ€ΠΊ Π½Π°Β GitHub ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push origin master. ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ измСнСния Π² Ρ„ΠΎΡ€ΠΊΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ измСнСния Π² Ρ„ΠΎΡ€ΠΊ.

Π“ΠΎΡ‚ΠΎΠ²ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„ΠΎΡ€ΠΊ ΠΈΒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ находятся Π²Β Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии.

htmlacademy.ru