ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ GitLab | Losst
GitLab — ΡΡΠΎ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ Open Source Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΡΡ ΡΠ²ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΊΠ°ΠΊ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ GitHub ΠΈ Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ. ΠΠ΄Π΅ΡΡ Π΅ΡΡΡ Π²ΡΠ΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π½Π° GitHub, ΠΏΠ»ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΡΠΌΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ GitLab Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π½ΠΈΠΌΠΈ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ Git, ΡΠΎ Π»ΡΡΡΠ΅ ΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ°ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ git.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ:
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ GitLab
1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° GitLab ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. ΠΡΠΊΡΠΎΠΉΡΠ΅ Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ GitLab Π½Π°ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠΊΡΠ°Π½Π° ΡΠΎΡΠΌΡ Π²Ρ
ΠΎΠ΄Π° ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ Register. ΠΠ΄Π΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ Π²Π°ΡΠ΅ ΠΈΠΌΡ, Π»ΠΎΠ³ΠΈΠ½, Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ, ΡΠΎΠ³Π»Π°ΡΠΈΡΡΡ Ρ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½Π° ΠΏΠΎΡΡΡ ΠΏΡΠΈΠ΄Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°, ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ Π½Π΅ΠΉ:
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°Ρ Π°ΠΊΠΊΠ°ΡΠ½Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² Π½ΡΠΌ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ:
Β
ΠΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° Π»ΠΎΠ³ΠΈΠ½Π° ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Π²Ρ ΠΏΠΎΠΏΠ°Π΄Π΅ΡΠ΅ Π½Π° Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ. Π‘Π΅ΠΉΡΠ°Ρ Π·Π΄Π΅ΡΡ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ, Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²Π°ΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π²:
2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ GitLab ΠΊΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ ΠΏΠΎ Π·Π½Π°ΡΠΊΡ
ΠΠ΄Π΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ ΠΈΠΌΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ°:
- 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 commit -m "add feature"
git push --set-upstream origin new-feature
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π² Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ GitLab ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° Create merge request. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π½Π° Π½Π΅Ρ:
ΠΠ΄Π΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Merge Request, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅, Π²ΡΠ±ΡΠ°ΡΡ Π²Π΅ΡΠΊΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΈ Π²Π΅ΡΠΊΡ ΡΠ΅Π»Ρ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ°Π²Π»Π΅Π½ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅:
ΠΠ°Π»Π΅Π΅ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ΄ΠΎΠ±ΡΠΈΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡ
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Merge, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ»ΠΈΡΡ Π²Π΅ΡΠΊΠΈ. Π€Π°ΠΉΠ»Ρ Π²Π΅ΡΠΊΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π·Π°ΠΌΠ΅Π½ΡΡ ΡΠ°ΠΉΠ»Ρ Π² Π²Π΅ΡΠΊΠ΅ ΠΏΡΠ΅Π΅ΠΌΠ½ΠΈΠΊΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΡΡ Π²Π°ΠΆΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
8. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ gitlab ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ Π½ΠΈΠΌ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΠ½ΠΊΡ Settings -> Members
ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ 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 Π½Π΅ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡΡ Π½Π° Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΡΠΎΠΆΠΈΠΌ ΠΈΠ·ΡΡΠ΅Π½Π½ΠΎΠ΅:
- ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π² GitLab CI, Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π·Π°Π΄Π°Ρ Π²
.gitlab-ci.yml
. - ΠΠ°Π΄Π°ΡΠ°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ, ΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π΄Π΅Π»Π°ΡΡ ΠΈΡ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΎΠΌ ΡΠ°ΠΌΠΈΠΌ Π½Π΅ Π·Π°ΠΏΡΡΠ°ΡΡΡΡ.
- Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π½Π°Π±ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ» ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π΄Π»Ρ GitLab CI, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ.
- ΠΠ°Π΄Π°ΡΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, Π»ΠΈΠ±ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ.
- Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΈΡ ΠΊΠ°ΠΊ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ² ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ 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
Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ
ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΠΈΡ
Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ.
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³ΠΈ
- Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄), ΡΠ°ΠΊ ΡΡΠΎ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ GiLab CI
- Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ. Π₯ΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΈ ΠΊΠ»ΡΡΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Settings > Variables
- Π‘ ΠΏΠΎΠΌΠΎΡΡΡ GitLab CI Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π²Π΅ΡΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ
- GitLab ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΈΡΡΠΎΡΠΈΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΉ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠΊΠ°Ρ Π½Π° Π»ΡΠ±ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ Π²Π΅ΡΡΠΈΡ
- Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠ½ΡΡ (Π° Π½Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ) Π΄Π»Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠ΅ΡΠΊΠΎΠΉ Π°ΡΡΠ΅Π»ΡΡ Β«ΠΠ°Π΄ΠΌΠΎΠ·Π³ ΠΈ ΠΏΠ°ΡΡΠ½Π΅ΡΡΒ», 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
- Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ Git ΡΠΎΒ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
- ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ».
- Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΎΠΊΠ½ΠΎ ΡΒ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΉΠ» ΡΠΊΠ°ΡΠ°Π½ ΡΒ Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° ΠΈΒ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡ Π½Π΅Β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½. ΠΒ ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΉΡΠΈ Π²Β Β«Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π½Π°ΡΡΡойки» β Β«ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΒ» (Security and Privacy), Π²Β ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±Β ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈΒ ΠΊΠ½ΠΎΠΏΠΊΠ° Open anyway (ΠΡΡ ΡΠ°Π²Π½ΠΎ ΠΎΡΠΊΡΡΡΡ). ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ.
- Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΎΠΊΠ½ΠΎ, ΡΡΠΎΡΠ½ΡΡΡΠ΅Π΅ Ρ ΠΎΡΠΈΡΠ΅Β Π»ΠΈ Π²ΡΒ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ. ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
- Π£ΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ ΠΏΡΠΎΠ²Π΅Π΄ΡΡ ΡΠ΅ΡΠ΅Π· Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°Π³ΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²Β 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, Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π°Β ΡΠ°ΠΉΡΠ΅, Π΅ΡΠ»ΠΈ Π²ΡΒ Π΅ΡΡ ΡΡΠΎΠ³ΠΎ Π½Π΅Β ΡΠ΄Π΅Π»Π°Π»ΠΈ. ΠΠ°Β Π΄Π΅Π»ΠΎ.
- ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π½Π°Β ΡΠ°ΠΉΡ GitHub. CΡΠ°ΡΡΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° GitHub.
- ΠΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π½Π°ΡΠ°Π»Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ:
- ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ SignΒ up (Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ), ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π½Π°Β ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, Π³Π΄Π΅ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅: ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΈΒ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Create anΒ account (ΡΠΎΠ·Π΄Π°ΡΡ Π°ΠΊΠΊΠ°ΡΠ½Ρ).
- CΡΠ°Π·Ρ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΈΠΌΡ, ΠΏΠΎΡΡΡ ΠΈΒ ΠΏΠ°ΡΠΎΠ»Ρ Π½Π°Β Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ GitHub ΠΈΒ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Sign upΒ for GitHub (Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π°Β GitHub).
- ΠΠ°Β Π²ΡΠΎΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°ΡΠΈΡΠ½ΡΠΉ ΠΏΠ»Π°Π½. GitHubΒ β Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ, Π½ΠΎΒ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»Π°ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ°ΡΠΈΡΠ½ΡΠΉ ΠΏΠ»Π°Π½ ΠΈΒ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ. ΠΡΠ±ΠΎΡ ΡΠ°ΡΠΈΡΠ° Π½Π°Β Π²ΡΠΎΡΠΎΠΌ ΡΠ°Π³Π΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ.
- Π’ΡΠ΅ΡΠΈΠΉ ΡΠ°Π³Β β Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠΏΡΠΎΡ ΠΎΡΒ GitHub, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΒ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΉΡΠΈ, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² Π²ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΈΒ Π½Π°ΠΆΠ°ΡΡ Submit ΠΈΠ»ΠΈ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ, Π½Π°ΠΆΠ°Π² skip this step. ΠΠΏΡΠΎΡ Π½Π°Β ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΠ°Π³Π΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ.
- ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΡΠ°ΠΏΠΎΠ² Π½Π°Β ΡΠ°ΠΉΡΠ΅, Π½Π°Β ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΡΠΈΠΊ Π²Π°ΠΌ ΠΏΡΠΈΠ΄ΡΡ ΠΏΠΈΡΡΠΌΠΎ ΠΎΡΒ GitHub. ΠΡΠΊΡΠΎΠΉΡΠ΅ Π΅Π³ΠΎ ΠΈΒ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ, Π½Π°ΠΆΠ°Π² Verify email address (ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ Π°Π΄ΡΠ΅Ρ) ΠΈΠ»ΠΈ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠ»ΠΊΡ ΠΈΠ·Β ΠΏΠΈΡΡΠΌΠ° ΠΈΒ Π²ΡΡΠ°Π²ΡΡΠ΅ Π΅ΡΒ Π²Β Π°Π΄ΡΠ΅ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π²Β Π²Π°Ρ ΠΏΡΠΎΡΠΈΠ»Ρ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΒ Π²Π°Ρ Π΅ΡΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ Π½Π°Β GitHub.
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ SSH-ΠΊΠ»ΡΡΠΈ
Git ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΠΏΡΠΎΡΠΈΠ»Ρ Π½Π°Β GitHub ΡΠΎΠ·Π΄Π°Π½. ΠΡΡΠ°Π»ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ SSH-ΠΊΠ»ΡΡ ΠΈΒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊΒ ΡΠ°Π±ΠΎΡΠ΅ ΡΒ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ SSH-ΠΊΠ»ΡΡ ΠΈΒ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½Β Π½ΡΠΆΠ΅Π½?
Π§ΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΒ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΡΒ GitHub, ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΒ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ, Ρ ΡΠ°Π½ΡΡΠΈΠΌΡΡ Π½Π°Β ΡΠ΅ΡΠ²ΠΈΡΠ΅, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²Β ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π±Π΅Π· ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΒ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΒ ΡΡΠΎΠΌ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ SSH-ΠΊΠ»ΡΡΠΈ.
ΠΠ°ΠΆΠ΄ΡΠΉ SSH-ΠΊΠ»ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ°ΡΡ: ΠΎΡΠΊΡΡΡΡΠΉ (ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ) ΠΈΒ Π·Π°ΠΊΡΡΡΡΠΉ (ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ) ΠΊΠ»ΡΡ. ΠΡΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π°Β ΡΠ΅ΡΠ²Π΅Ρ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Β ΠΏΡΡΡΠ°ΡΡ ΠΎΡΒ Π²ΡΠ΅Ρ ΠΈΒ Π½Π΅Β ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°ΡΡ, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ Π΅Π³ΠΎ ΡΠ²ΠΈΠ΄ΠΈΡ ΠΈΒ ΡΠΊΡΠ°Π΄ΡΡ. ΠΠ½Β Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π΅Π½ Π±Π΅Π· ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠ°ΡΡΒ β Π·Π°ΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°. ΠΒ Π²ΠΎΡ Π·Π°ΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡΒ β ΡΠ΅ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ. ΠΠΎΡΡΡΠΏ ΠΊΒ Π½Π΅ΠΌΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΒ Π²Π°Ρ.
ΠΡΒ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π°Β ΡΠ΅ΡΠ²Π΅Ρ, Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π²Π°Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΒ ΡΡΠΎΒ Π²Ρ, ΡΠΎΒ Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°Ρ, ΠΈΒ Π΄Π°ΡΡ Π²Π°ΠΌ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΡΠ²Π΅Ρ. ΠΒ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΒ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΎΡΠ²Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΒ Π²Π°Ρ Π΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π·Π°ΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΠ²ΡΠ·ΠΊΠΈ Π»ΠΎΠ³ΠΈΠ½-ΠΏΠ°ΡΠΎΠ»Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅ΠΉ. ΠΠ°Ρ ΠΏΠ°ΡΠΎΠ»Ρ ΠΊΡΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ·Π½Π°ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ, Π°Β ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π°Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ SSH-ΠΊΠ»ΡΡ, Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΡ ΠΏΡΠΈΠ΄ΡΡΡΡ Π²Π·Π»ΠΎΠΌΠ°ΡΡ Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠΉΡΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΒ SSH-ΠΊΠ»ΡΡΡ, Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ Π½Π°ΠΉΡΠΈ ΡΠΆΠ΅ ΡΠ°Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ Π½Π°Β ΡΠ²ΠΎΡΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅.
Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, Π΅ΡΡΡΒ Π»ΠΈ ΡΠΆΠ΅ Π½Π°Β ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΊΠ»ΡΡ. ΠΠΎΒ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ SSH-ΠΊΠ»ΡΡΠΈ Ρ
ΡΠ°Π½ΡΡΡΡ Π²Β ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ~/.ssh
, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
- ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠΎΠ»Ρ.
- ΠΠ²ΠΎΠ΄ΠΈΠΌ
cd ~/.ssh
, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π²Β Π½ΡΠΆΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π²Β Π½ΡΠΆΠ½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ
ls
, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π²Β ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ² Π²Β Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΡΠ΅ΠΌ ΠΏΠ°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΒ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ Π²ΠΈΠ΄Π°ΠΈΠΌΡ
ΠΈΠΈΠΌΡ.pub
. ΠΠ±ΡΡΠ½ΠΎ ΠΈΠΌΡΒ βid_rsa
,id_dsa
,id_ecdsa
ΠΈΠ»ΠΈid_ed25519
. Π€Π°ΠΉΠ» ΡΒ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ.pub
β Π²Π°Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, Π°Β Π²ΡΠΎΡΠΎΠΉΒ β Π²Π°Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ, ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.ssh
ΡΒ Π²Π°Ρ Π½Π΅Ρ, Π²ΡΒ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡ Β ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅. - ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»ΡΡ Π²
ssh-agent
(ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ»ΠΈ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ). ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΊΠ»ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉeval "$(ssh-agent -s)"
ΠΈΒ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΒ ΠΏΠΎΠΌΠΎΡΡΡssh-add ~/.ssh/your_key_name
, Π³Π΄Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π²Π΅ΡΠ½ΡΠΉ ΠΏΡΡΡ Π΄ΠΎΒ ΡΠ°ΠΉΠ»Π° ΡΒ ΠΊΠ»ΡΡΠΎΠΌ ΠΈΒ Π΅Π³ΠΎ ΠΈΠΌΡ. ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»ΡΡ Π²Β 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/
- ΠΡΠ»ΠΈ Π²ΡΒ Π·Π°Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡ, ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡ
Β ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²
- ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ ΠΊΠ»ΡΡ, Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π°Β GitHub. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΒ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ·Β ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄:
- ΠΡΠ»ΠΈ Π²ΡΒ Π½Π°Β Windows
clip .
- ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ macOS
pbcopy .
- ΠΠ°Β Linux ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
sudo apt-get install xclip
, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρxclip
, Π°Β Π·Π°ΡΠ΅ΠΌ Π²Π²Π΅Π΄ΠΈΡΠ΅xclip -sel clip . ΠΠ»ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
cat ~/.ssh/id_rsa.pub
, ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΡΡΠΌΠΎ Π²Β ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈΒ Π²ΡΒ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡ ΠΎΡΡΡΠ΄Π°.
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΡΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΡΡΠΌ, ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ»
id_rsa.pub
ΠΏΡΡΠΌΠΎ Π²Β ΠΏΠ°ΠΏΠΊΠ΅ ΠΈΒ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΡΡΡΠ΄Π°. - ΠΡΠ»ΠΈ Π²ΡΒ Π½Π°Β Windows
- ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π½Π°Β ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΒ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π²Β Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΠΈΠ»Π΅ Π½Π°Β GitHub.
Π‘ΡΡΠ°Π½ΠΈΡΠ° ΡΒ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ Π²Β Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΠΈΠ»Π΅.
ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ New SSH key (Π½ΠΎΠ²ΡΠΉ SSH-ΠΊΠ»ΡΡ). ΠΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠΌΡ ΠΊΠ»ΡΡΠ° (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π»ΡΠ±ΠΎΠ΅) Π²Β ΠΏΠΎΠ»Π΅ Title (Π½Π°Π·Π²Π°Π½ΠΈΠ΅), Π°Β Π²Β Key (ΠΊΠ»ΡΡ) Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ°ΠΌ ΠΊΠ»ΡΡ ΠΈΠ·Β Π±ΡΡΠ΅ΡΠ° ΠΎΠ±ΠΌΠ΅Π½Π°. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Add SSH key (Π΄ΠΎΠ±Π°Π²ΠΈΡΡ 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 Π½Π°Π·Π²Π°Π½ΠΈΠ΅-ΡΠ΅ΠΊΡΡΠ΅ΠΉ-Π²Π΅ΡΠΊΠΈ
.
ΠΡΒ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠ΄, Π½Π°ΡΡΠ°Π²Π½ΠΈΠΊ ΠΈΠ»ΠΈ ΡΠ΅Ρ Π»ΠΈΠ΄ ΠΎΠ΄ΠΎΠ±ΡΠΈΠ» Π²Π°ΡΠΈ ΠΏΡΠ°Π²ΠΊΠΈ ΠΈΒ ΠΏΡΠΈΠ½ΡΠ» ΠΏΡΠ»ΡΠ΅ΠΊΠ²Π΅ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ΄ Π²Β ΠΌΠ°ΡΡΠ΅Ρ-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΡΡ, Π°Β Π²Β Π²Π°ΡΠ΅ΠΌ ΡΠΎΡΠΊΠ΅ Π½Π΅Ρ, Π²ΡΒ Π²Π΅Π΄Ρ Π½Π΅Β ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ»ΠΈ ΡΠ²ΠΎΡ Π²Π΅ΡΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΒ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π»ΠΈ Π΅ΡΒ ΡΠ΅Π±Π΅ Π½Π°Β ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ. ΠΡΠΈΠ²Π΅Π΄ΡΠΌ ΡΠΎΡΠΊ Π²Β Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
- ΠΒ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
git checkout master
, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π²master
. -
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°Π±ΠΈΡΠ°Π΅ΠΌ (ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅ΠΌ) ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·Β Π²Π΅ΡΠΊΠΈ
master
ΠΌΠ°ΡΡΠ΅Ρ-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡgit pull academy master
.Academy
Π·Π΄Π΅ΡΡΒ β ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠ΅Ρ-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΡΠ°ΠΊΠΎΠ΅ ΠΈΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Β ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² ΠΠΊΠ°Π΄Π΅ΠΌΠΈΠΈ, Π²ΡΒ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. ΠΠ°Π±ΠΈΡΠ°Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· ΠΌΠ°ΡΡΠ΅Ρ-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈΒ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Π½Π΅Β Π·Π½Π°Π΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΒ ΡΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π°Β ΡΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:git remote add academy [email protected]:your-repo.git
ΠΠΌΠ΅ΡΡΠΎacademy
ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΒ ΠΎΠ½ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡΡ Π·Π°Β ΡΡΠΈΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ. - Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΆΠ΅ ΠΈΠ·Β ΡΠ²ΠΎΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ
master
Π²Β Π²Π°Ρ ΡΠΎΡΠΊ Π½Π°Β GitHub ΡΒ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρgit push origin master
. ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠΎΡΠΊ.
ΠΠΎΡΠΎΠ²ΠΎ, ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΡΠΊ ΠΈΒ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π²Β Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
htmlacademy.ru