ΠΠ° Π»ΠΈ ΡΡΠ΅ Π½Π°ΡΡΠΈΠ»ΠΈ ΠΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π°Π»ΠΈ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° Π·Π°ΠΌΠΈΡΠ»ΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° (Π¦Π) ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ΅ Ρ ΡΡΠ²Π°ΡΠ½ΠΎΡΡΠΈ? ΠΠ»ΠΈ ΠΌΠΎΠΆΠ΄Π° ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΡΡΠ΅ΡΠ΅ ΡΠ²ΠΎΡΠ΅ Π΄Π½Π΅Π²Π½Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ? ΠΠ²Π°Ρ ΠΊΡΡΡ ΡΠ΅ Π²Π°ΠΌ Π΄Π°ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ½Π΅ Π²Π΅ΡΡΠΈΠ½Π΅ Ρ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΎΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠΈ ΠΏΠΎΠΌΠΎΡΡ ΠΠΈΡΠ₯ΡΠ± ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠ°. ΠΠ²Π°Ρ ΠΊΡΡΡ Π½ΠΈΡΠ΅ Π·Π°ΠΌΠΈΡΡΠ΅Π½ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°ΡΠΎΠ±ΡΠ°ΠΊ Π½Π° ΠΊΠΎΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅; Π½Π°ΠΏΡΠΎΡΠΈΠ², ΠΈΠ·Π²ΡΡΠΈΡΠ΅ΡΠ΅ ΠΈΡΡΠ΅ ΡΠ°Π΄ΡΠ΅ ΠΊΠΎΡΠ΅ ΡΡΠ΄ΠΈ Π·Π°ΠΏΡΠ°Π²ΠΎ ΡΠ°Π΄Π΅ Π½Π° ΠΏΠΎΡΠ»Ρ, Π½Π° ΠΈΡΡΠΈ Π½Π°ΡΠΈΠ½ Π½Π° ΠΊΠΎΡΠΈ ΡΠΎ ΡΠ°Π΄Π΅. ΠΠ±ΡΠ°ΡΠ½ΠΈΡΡ ΡΠ΅ΠΎΡΠΈΡΡ Π΄ΠΎΠΊ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΎΠ»Π°Π·ΠΈΠ»ΠΈ ΠΊΡΠΎΠ· Π½Π°Π²Π΅Π΄Π΅Π½Π΅ ΠΊΠΎΡΠ°ΠΊΠ΅.
Π¨ΡΠ° Π΄Π° ΡΠ°Π΄ΠΈΠΌΠΎ?
ΠΠ°ΠΊΠΎ Π½Π°ΠΏΡΠ΅Π΄ΡΡΠ΅ΠΌΠΎ, ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½ΠΎ ΡΠ΅ΠΌΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Π»ΠΈΡΡΡ ΡΠΈΠΏΠΈΡΠ½ΠΈΡ Π¦Π ΠΊΠΎΡΠ°ΠΊΠ°, ΡΡΠΎ ΡΠ΅ ΠΎΠ΄Π»ΠΈΡΠ°Π½ Π½Π°ΡΠΈΠ½ Π΄Π° Π·Π°ΠΏΠ°ΠΌΡΠΈΡΠ΅ ΠΎΠ²Ρ Π»ΠΈΡΡΡ. ΠΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠΈΠΌΠ°, Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ΠΌΠΎ Π»ΠΈΡΡΡ ΡΠ°Π΄ΡΠΈ ΠΊΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ ΠΏΡΠ΅Π΄ΡΠ·ΠΈΠΌΠ°ΡΡ Π΄ΠΎΠΊ ΡΠ°Π΄Π΅ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡ, ΡΠ°Π΄Π΅ΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡ. Π’Π°ΠΊΠΎΡΠ΅ ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π°Π½ ΡΠΊΡΠΏ ΡΠ΅ΡΡΠΎΠ²Π° ΠΊΠ°ΠΊΠΎ Π±ΠΈΡΠΌΠΎ Π½Π°Ρ Π¦Π ΠΏΡΠΎΡΠ΅Ρ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠΈΠ»ΠΈ ΡΡΠ²Π°ΡΠ½ΠΎΠΌ.
ΠΠ²Π°Ρ ΠΠΠ€ ΡΠ΅ΠΌΠ°ΡΡΠΊΠΈ ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ Ρ Π²Π°ΡΠ΅ΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ ΠΊΠ°ΠΊΠΎ Π½Π°ΠΏΡΠ΅Π΄ΡΡΠ΅ΡΠ΅ ΠΊΡΠΎΠ· ΠΊΡΡΡ. ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΎΠ²Π΄Π΅ Π½Π΅ΠΌΠ° Π½ΠΈΡΡΠ° ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ ΠΈ ΡΠ°ΠΌΠΎ Π½Π°ΡΠ½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΈΡΠ΅.
ΠΡΠΎΡΠΈ ΡΠ΅ΡΠ΅ ΠΊΡΠΎΠ· ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π΅ Π¦Π ΡΡΠ΅Π½Π°ΡΠΈΡΠ΅:
- Π Π°Π΄ Π½Π° ΠΎΡΠΎΠ±ΠΈΠ½ΠΈ;
- ΠΡΠΈΠΌΠ΅Π½Π° Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²Π° Π·Π° ΠΎΠ±Π΅Π·Π±Π΅ΡΠΈΠ²Π°ΡΠ΅ ΠΊΠ²Π°Π»ΠΈΡΠ΅ΡΠ°;
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠ³ Π·Π°Π΄Π°ΡΠΊΠ°;
- Π Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΏΡΠΈ ΡΠΏΠ°ΡΠ°ΡΡ Π³ΡΠ°Π½Π° (ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠΏΠ°ΡΠ°ΡΠ°);
- ΠΠΎΡΠ»ΠΎ ΡΠ΅ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ΅ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΡ.
ΡΡΠ° ΡΠ΅Ρ Π½Π°ΡΡΠΈΡΠΈ?
ΠΠΎΡΠΈ ΡΠ΅ΡΠ΅ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠ° ΠΏΠΈΡΠ°ΡΠ°:
- Π¨ΡΠ° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° (Π¦Π)?
- ΠΠΎΡΠ΅ Π²ΡΡΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Ρ Π¦Π ΠΈ ΠΊΠ°ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° ΠΊΠΎΡΠ΅ ΡΠ°Π΄ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΡ?
- Π¨ΡΠ° ΡΡ Π·Π°Ρ ΡΠ΅Π²ΠΈ Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ ΠΈ ΠΊΠ°Π΄Π° ΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ?
- Π¨ΡΠ° ΡΠ΅ ΡΠ°Π·Π²ΠΎΡ Π²ΠΎΡΠ΅Π½ ΡΠ΅ΡΡΠΎΠΌ (Π’ΠΠ) ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΏΠΎΠ²Π΅Π·Π°Π½ ΡΠ° Π¦Π?
- ΠΠ° Π»ΠΈ Π΄Π° ΡΠΏΠΎΡΠΈΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π±Π°Π·ΠΈΡΠ°ΠΌ ΠΏΡΠΎΠΌΠ΅Π½Π΅?
- ΠΡΠ°ΡΠΈΡΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΠΈ Ρ ΡΠ»Π΅Π΄Π΅ΡΠΎΡ Π²Π΅ΡΠ·ΠΈΡΠΈ?
Π£ ΠΏΠΎΡΠ΅ΡΠΊΡ ΡΠ°ΠΌ ΡΠ²ΡΠ΄Π° ΠΏΡΠ΅Π²ΠΎΠ΄ΠΈΠΎ ΡΡΠ²Π°ΡΠΈ ΠΏΠΎΠΏΡΡ βΠ·Π°Ρ ΡΠ΅Π²Π° Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅β, Π°Π»ΠΈ ΡΠ°ΠΌ ΠΊΠ°ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΠ΄Π»ΡΡΠΈΠΎ Π΄Π° Π½Π° Π½Π΅ΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΈΠΌΠ° Π²ΡΠ°ΡΠ°ΠΌ ΡΡΠ°Π·Π΅ Π½Π° Π΅Π½Π³Π»Π΅ΡΠΊΠΎΠΌ ΠΊΠ°ΠΊΠΎ Π±ΠΈΡ ΡΠΌΠ°ΡΠΈΠΎ ΡΡΠ΅ΠΏΠ΅Π½ Π»ΡΠ΄ΠΎΡΡΠΈ Ρ ΡΠ΅ΠΊΡΡΡ. ΠΠΎΠ½Π΅ΠΊΠ°Π΄ ΡΡ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ βΡΡΡΠΆΠΈΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠ°β ΠΊΠ°ΠΎ Π΄ΠΈΠ²Π°Π½ Π³Π»Π°Π³ΠΎΠ» βΠΏΠΎΡΠΈΠ½ΠΈΡΠΈβ Π³Π΄Π΅ Π³Π° ΡΡΠ΄ΠΈ Π·Π°ΠΏΡΠ°Π²ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ Π½Π° ΠΏΠΎΡΠ»Ρ.
Π¨ΡΠ° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ°?
ΠΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ°, ΠΈΠ»ΠΈ Π¦Π, ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠΊΠ° ΠΏΡΠ°ΠΊΡΠ° Ρ ΠΊΠΎΡΠΎΡ ΡΠ²Π°ΠΊΠΈ ΡΠ»Π°Π½ ΡΠΈΠΌΠ° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ Ρ Π·Π°ΡΠ΅Π΄Π½ΠΈΡΠΊΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ Π½Π°ΡΠΌΠ°ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΠΌ Π΄Π½Π΅Π²Π½ΠΎ, Π° ΡΠ΅Π·ΡΠ»ΡΡΡΡΡΠΈ ΠΊΠΎΠ΄ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΈΠ·Π³ΡΠ°ΡΠ΅Π½ Π±Π΅Π· Π³ΡΠ΅ΡΠ°ΠΊΠ°.
ΠΠΎΡΡΠΎΡΠ΅ Π½Π΅ΡΠ»Π°Π³Π°ΡΠ° ΠΎΠΊΠΎ ΠΎΠ²ΠΎΠ³ ΠΏΠΎΡΠΌΠ°
Π’Π°ΡΠΊΠ° ΡΠΏΠΎΡΠ΅ΡΠ° ΡΠ΅ ΡΡΠ΅ΡΡΠ°Π»ΠΎΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅. ΠΠ΅ΠΊΠΈ ΡΠ²ΡΠ΄Π΅ Π΄Π° ΡΠΏΠ°ΡΠ°ΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠ°ΠΌΠΎ ΡΠ΅Π΄Π½ΠΎΠΌ Π΄Π½Π΅Π²Π½ΠΎ Π½ΠΈΡΠ΅ Π΄ΠΎΠ²ΠΎΡΠ½ΠΎ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ½ΡΠ°Π»Π½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡ. ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΡΠΈΠΌ Π³Π΄Π΅ ΡΠ²ΠΈ ΡΠ·ΠΈΠΌΠ°ΡΡ ΡΠ²Π΅ΠΆ ΠΊΠΎΠ΄ ΡΡΡΡΡΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡ Π³Π° ΡΠ΅Π΄Π½ΠΎΠΌ ΡΠ²Π΅ΡΠ΅. ΠΠ°ΠΊΠΎ ΡΠ΅ ΠΎΠ²ΠΎ ΡΠ°Π·ΡΠΌΠ°Π½ ΠΏΡΠΈΠ³ΠΎΠ²ΠΎΡ, ΠΎΠΏΡΡΠ΅ ΡΠ΅ ΠΏΡΠΈΡ Π²Π°ΡΠ΅Π½ΠΎ Π΄Π° ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° ΡΠ΅Π΄Π½ΠΎΠΌ Π΄Π½Π΅Π²Π½ΠΎ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ½Π°, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° ΠΈ ΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° ΡΠΈΠΌΠΎΠ²Π΅ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΡ Π²Π΅Π»ΠΈΡΠΈΠ½Π°.
ΠΡΡΠ³Π° ΠΏΡΠΈΠΌΠ΅Π΄Π±Π° ΡΠ΅ Π΄Π° Π¦++ Π²ΠΈΡΠ΅ Π½ΠΈΡΠ΅ ΡΠ΅Π΄ΠΈΠ½ΠΈ ΡΠ΅Π·ΠΈΠΊ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Ρ ΡΠ°Π·Π²ΠΎΡΡ, ΠΈ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π·Π°Ρ ΡΠ΅Π²Π°ΡΠ΅ Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° Π±Π΅Π· Π³ΡΠ΅ΡΠ°ΠΊΠ° ΠΊΠ°ΠΎ Π½Π°ΡΠΈΠ½Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡΠ΅ ΡΠ΅ ΡΠ»Π°Π±ΠΎ. ΠΠ΅ΠΊΠΈ ΡΠΊΡΠΏ ΡΠ΅ΡΡΠΎΠ²Π° (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΡ Π»ΠΎΠΊΠ°Π»Π½ΠΎ) ΡΠ°ΠΊΠΎΡΠ΅ ΠΌΠΎΡΠ°ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π°Π²ΡΡΠ΅. Π£ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ, Π·Π°ΡΠ΅Π΄Π½ΠΈΡΠ° ΡΠ΅ ΠΊΡΠ΅ΡΠ΅ ΠΊΠ° ΡΠΎΠΌΠ΅ Π΄Π° ΠΎΠ²ΠΎ ΠΏΠΎΡΡΠ°Π½Π΅ ΡΡΠ»ΠΎΠ², Π° Ρ Π±ΡΠ΄ΡΡΠ½ΠΎΡΡΠΈ ΡΠ΅ βΠ±ΡΠΈΠ»Π΄ + ΡΠ½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²ΠΈβ Π²Π΅ΡΠΎΠ²Π°ΡΠ½ΠΎ ΠΏΠΎΡΡΠ°ΡΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½Π° ΠΏΡΠ°ΠΊΡΠ°, Π°ΠΊΠΎ Π²Π΅Ρ Π½ΠΈΡΠ΅.
ΠΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΡΠ°Π·Π»ΠΈΠΊΡΡΠ΅ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΡΠΏΠΎΡΡΠΊΠ° (ΠΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΡΠΏΠΎΡΡΠΊΠ°, Π¦Π) ΡΠ΅Ρ Π½Π΅ Π·Π°Ρ ΡΠ΅Π²Π° ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ° Π·Π° ΠΈΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π°ΠΊΠΎΠ½ ΡΠ²Π°ΠΊΠΎΠ³ ΡΠΈΠΊΠ»ΡΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅.
ΠΠΈΡΡΠ° ΠΊΠΎΡΠ°ΠΊΠ° ΠΊΠΎΡΠ΅ ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠΎΠΊΠΎΠΌ ΠΊΡΡΡΠ°
- Π£Π±Π°ΡΠΈΡΠ΅ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠΈ ΠΊΠΎΠ΄. ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π³ΡΠ°Π½Ρ ΠΈΠ·
master
. ΠΠΎΡΠ΅ΡΠΈ ΡΠ° ΡΠ°Π΄ΠΎΠΌ. - ΠΡΠ΅ΠΈΡΠ°ΡΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ Π½Π° ΡΠ²ΠΎΡΠΎΡ Π½ΠΎΠ²ΠΎΡ Π³ΡΠ°Π½ΠΈ. ΠΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. ΠΡΠΎΡΠΈ? ΠΠ΄ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ ΠΊΠΎΡΠ°ΠΊ. Π€Π°ΠΈΠ»? ΠΡΠΏΡΠ°Π²ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠ΅ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠΊΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠ½ΠΎΠ²ΠΎ.
- ΠΡΡΠ½ΠΈΡΠ΅ Ρ ΡΠ²ΠΎΡΠ΅ ΡΠ΄Π°ΡΠ΅Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΄Π°ΡΠ΅Π½Ρ Π³ΡΠ°Π½Ρ.
- ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅. Π Π°Π·Π³ΠΎΠ²Π°ΡΠ°ΡΡΠ΅ ΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π°ΠΌΠ°, Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΡΠΎΡ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΠΊΠ°ΠΊΠΎ ΡΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΡΠ° Π½Π°ΡΡΠ°Π²ΠΈ. Π£ΡΠΈΠ½ΠΈΡΠ΅ Π΄Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΡΠΎΡΡ Π½Π° Π³ΡΠ°Π½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°.
- Π‘ΠΏΠ°ΡΠ°ΡΠ΅/ΡΠ΅Π±Π°Π·ΠΎΠ²Π°ΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΡΠ° ΠΌΠ°ΡΡΠ΅ΡΠ°. ΠΠ΅ΠΊΠ° ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ»Π΅Π΄Π΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠΏΠ°ΡΠ°ΡΠ°.
- ΠΡΠΈΠΌΠ΅Π½Π° ΠΎΠ΄ Π³ΡΠ°Π½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ Π΄ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΠ΅.
- ΠΠΊΠΎ ΡΠ΅ ΡΠ²Π΅ Π΄ΠΎΠ±ΡΠΎ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΠΈ Π½Π΅ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅, ΡΠΏΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρ ΠΌΠ°ΡΡΠ΅Ρ.
ΠΡΠΈΠΏΡΠ΅ΠΌΠ°
Π£Π²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΡΠΎΡΡΠ²Π΅Ρ
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΠΎΡ
Π°ΡΠ°Π»ΠΈ ΠΎΠ²Π°Ρ ΠΊΡΡΡ Π±ΠΈΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ
ΠΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ ΠΠΈΡ ΠΊΠ»ΠΈΡΠ΅Π½Ρ, Π°Π»ΠΈ ΡΠ° ΡΡ Π΄Π°ΡΠΈ ΡΠ°ΠΌΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ Π»ΠΈΠ½ΠΈΡΡ.
Π£Π²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΠΠΈΡ ΠΊΠ»ΠΈΡΠ΅Π½Ρ ΠΊΠΎΡΠΈ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ Π»ΠΈΠ½ΠΈΡΡ
ΠΠΊΠΎ ΡΠΎΡ ΡΠ²Π΅ΠΊ Π½Π΅ΠΌΠ°ΡΠ΅ ΠΠΈΡ ΠΊΠ»ΠΈΡΠ΅Π½Ρ ΠΊΠΎΡΠΈ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ Π»ΠΈΠ½ΠΈΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ ΡΠΏΡΡΡΡΠ²Π° Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ
ΠΡΠΈΠΏΡΠ΅ΠΌΠΈΡΠ΅ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅
ΠΠΎΡΠ°ΡΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π»ΠΈΡΠ½Ρ ΠΊΠΎΠΏΠΈΡΡ (Π²ΠΈΡΡΡΠΊΡ)
ΠΠΎΡΠΎΠ²ΠΎ? ΠΠΊΠΎ Π½ΠΈΡΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Π° ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ°, Π½Π°ΡΠ²Π΅ΡΠΎΠ²Π°ΡΠ½ΠΈΡΠ΅ ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΠ·Π²Π°Π½ΠΎ Π²Π°ΡΠ΅ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΊΡΡΡΠ° continuous-integration-team-scenarios-students
, Π½Π°Π»Π°Π·ΠΈ ΡΠ΅ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΠΈΡΠ₯ΡΠ± Π½Π°Π»ΠΎΠ³Ρ ΠΈ Π£Π Π ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ
https://github.com/<Π²Π°ΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° GitHub>/continuous-integration-team-scenarios-students
ΠΠ° ΡΡ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π°Π·Π²Π°ΡΠΈ ΠΎΠ²Ρ Π°Π΄ΡΠ΅ΡΡ <URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>
.
Π£Π³Π°ΠΎΠ½Π΅ Π·Π°Π³ΡΠ°Π΄Π΅ ΠΊΠ°ΠΎ
<ΡΡΡ>
ΡΠ΅ Π·Π½Π°ΡΠΈΡΠΈ Π΄Π° ΡΠ°ΠΊΠ°Π² ΠΈΠ·ΡΠ°Π· ΠΌΠΎΡΠ°ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΎΠΌ Π²ΡΠ΅Π΄Π½ΠΎΡΡΡ.
Π£Π²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΠΠΈΡΠ₯ΡΠ± Π°ΠΊΡΠΈΡΠ΅ ΡΠΊΡΡΡΠ΅Π½ΠΎ Π·Π° ΠΎΠ²ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΊΡΡΡΠ°. ΠΠΊΠΎ Π½ΠΈΡΡ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½ΠΈ, ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠ΅ ΠΈΡ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΊΠ»ΠΈΠΊΠ½ΡΡΠΈ Π½Π° Π²Π΅Π»ΠΈΠΊΠΎ Π΄ΡΠ³ΠΌΠ΅ Π½Π° ΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠ΅, Π½Π° ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΡΠΈ ΠΊΠ»ΠΈΠΊΠΎΠΌ Π½Π° ΠΠΊΡΠΈΡΠ΅ Ρ ΠΠΈΡΠ₯ΡΠ± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΡ.
ΠΠ΅ΡΠ΅ΡΠ΅ ΠΌΠΎΡΠΈ Π΄Π° Π·Π°Π²ΡΡΠΈΡΠ΅ ΠΊΡΡΡ ΠΏΡΠ°ΡΠ΅ΡΠΈ ΠΌΠΎΡΠ° ΡΠΏΡΡΡΡΠ²Π° Π°ΠΊΠΎ ΠΠΈΡΠ₯ΡΠ± ΡΠ°Π΄ΡΠ΅ Π½ΠΈΡΡ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π΅.
Π£Π²Π΅ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΠΈΡΠ₯ΡΠ±-ΠΎΠ²Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π΄Π° ΠΏΡΠΈΠΊΠ°ΠΆΠ΅ ΠΠ°ΡΠΊΠ΄ΠΎΠ²Π½ Π΄Π° Π±ΠΈΡΡΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΡΠ΅Π½ΡΡΠ½ΠΎ ΡΡΠ°ΡΠ΅ Π»ΠΈΡΡΠ΅ ΠΊΠΎΡΡ ΡΠ°ΡΡΠ°Π²ΡΠ°ΠΌΠΎ ΠΎΠ²Π΄Π΅
https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md
Π ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΠΌΠ°
ΠΠ°ΠΊΠΎ ΡΠ΅ Π½Π°ΡΠ±ΠΎΡΠΈ Π½Π°ΡΠΈΠ½ Π΄Π° Π·Π°Π²ΡΡΠΈΡΠ΅ ΠΎΠ²Π°Ρ ΠΊΡΡΡ Π΄Π° ΡΠΎ ΡΡΠ°Π΄ΠΈΡΠ΅ ΡΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ΄Π° ΡΠ΅ΡΠ΅ ΠΈΠΌΠ°ΡΠΈ ΠΏΠΎΡΠ΅ΡΠΊΠΎΡΠ°.
ΠΠΊΠΎ ΠΎΡΠ΅ΡΠ°ΡΠ΅ Π΄Π° Π½Π΅ ΡΠ°Π·ΡΠΌΠ΅ΡΠ΅ ΡΡΠ° Π΄Π° ΡΠ°Π΄ΠΈΡΠ΅ ΠΈ Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΠ°Π²ΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ Ρ Π½ΠΈΡ solution
, ΠΊΠΎΡΠΈ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈ Ρ Π²Π°ΡΠ΅ΠΌ ΡΡΠ°ΡΡΠ½ΠΎΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ.
ΠΠΎΠ»ΠΈΠΌ Π²Π°Ρ Π½Π΅ΠΌΠΎΡΡΠ΅ ΡΠΏΠ°ΡΠ°ΡΠΈ solution
Π² master
ΡΠΎΠΊΠΎΠΌ. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΎΠ²Ρ Π³ΡΠ°Π½Ρ Π΄Π° ΡΡ
Π²Π°ΡΠΈΡΠ΅ ΡΡΠ° Π΄Π° ΡΠ°Π΄ΠΈΡΠ΅ ΠΈΠ»ΠΈ Π΄Π° ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ ΡΠ° Π°ΡΡΠΎΡΡΠΊΠΈΠΌ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΠ²Π΅ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΡΠ΅ Π½Π°ΠΌ ΠΠΈΡ ΠΏΡΡΠΆΠ°. ΠΠΊΠΎ ΡΡΠ΅ ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ±ΡΠ΅Π½ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΏΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΠΈ ΡΠ²ΠΎΡΡ Π³ΡΠ°Π½Ρ master
Π½Π° Π³ΡΠ°Π½ΠΈ solution
Π° Π·Π°ΡΠΈΠΌ ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅ ΡΠ²ΠΎΡ ΡΠ°Π΄Π½ΠΈ ΠΈΠΌΠ΅Π½ΠΈΠΊ Π½Π° ΠΊΠΎΡΠ°ΠΊ ΠΊΡΡΡΠ° ΠΊΠΎΡΠΈ Π²Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π°Π½.
ΠΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΎΠ²ΠΎ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π²Π°ΠΌ ΡΠ΅ Π·Π°ΠΈΡΡΠ° ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ
Π£ΠΊΡΡΡΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄
git add .
git commit -m "Backing up my work"
ΠΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅
- ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΠΈ
master
Π²master-backup
; - ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΠΈ
solution
Π²master
; - ΠΎΠ΄ΡΠ°Π²Π° Ρ Π½ΠΎΠ²Ρ ΡΠΈΠ»ΠΈΡΠ°Π»Ρ
master
ΠΈ ΠΏΡΠ΅ΠΏΠΈΡΠ°ΡΠΈ ΡΠ°Π΄ΡΠΆΠ°Ρ ΡΠ°Π΄Π½ΠΎΠ³ ΠΈΠΌΠ΅Π½ΠΈΠΊΠ°; - ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π³ΡΠ°Π½Ρ βΡΠ΅ΡΠ΅ΡΠ΅β ΠΎΠ΄ βΠΌΠ°ΡΡΠ΅Ρβ (ΡΡΠΎ ΡΠ΅ Π½Π΅ΠΊΠ°Π΄Π° Π±ΠΈΠ»ΠΎ βΡΠ΅ΡΠ΅ΡΠ΅β) Ρ ΡΠ»ΡΡΠ°ΡΡ Π΄Π° Π²Π°ΠΌ Π·Π°ΡΡΠ΅Π±Π° Π³ΡΠ°Π½Π° βΡΠ΅ΡΠ΅ΡΠ΅β Ρ Π±ΡΠ΄ΡΡΠ½ΠΎΡΡΠΈ.
git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solution
ΠΠ°ΠΊΠΎΠ½ ΠΎΠ²ΠΈΡ
ΠΊΠΎΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ git log master
Π΄Π° ΡΡ
Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ Π²Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ΡΠ΅ΡΡΡΠ΅ΡΠ΅ ΡΠ²ΠΎΡ ΡΠ°Π΄Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Π½Π° ΠΎΠ²ΠΎ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½Π°ΡΠΈΠ½:
git reset --hard <the SHA you need>
ΠΠΊΠΎ ΡΡΠ΅ Π·Π°Π΄ΠΎΠ²ΠΎΡΠ½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΠΌ, Ρ Π½Π΅ΠΊΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ ΡΠ΅ΡΠ΅ ΠΌΠΎΡΠ°ΡΠΈ Π΄Π° ΠΎΠ±ΡΠ°Π²ΠΈΡΠ΅ ΡΠ²ΠΎΡΡ Π²Π΅ΡΠ·ΠΈΡΡ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° Ρ ΡΠ΄Π°ΡΠ΅Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅. ΠΠ΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΡΠ΅ Π΄Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΡΠ΄Π°ΡΠ΅Π½Ρ Π³ΡΠ°Π½Ρ ΠΊΠ°Π΄Π° ΡΠΎ ΡΠ°Π΄ΠΈΡΠ΅.
git push --force origin master
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ git push --force
. ΠΠ°Π»ΠΎ ΡΠ΅ Π²Π΅ΡΠΎΠ²Π°ΡΠ½ΠΎ Π΄Π° ΡΠ΅ΡΠ΅ ΡΠΎ ΠΆΠ΅Π»Π΅ΡΠΈ Π΄Π° ΡΠ°Π΄ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ, Π°Π»ΠΈ ΠΎΠ²Π΄Π΅ ΠΈΠΌΠ°ΠΌΠΎ Π²ΡΠ»ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ°Π½ ΡΡΠ΅Π½Π°ΡΠΈΠΎ ΡΠ° ΡΠ΅Π΄Π½ΠΈΠΌ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΠΊΠΎΡΠΈ, ΠΏΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΡΠ°Π·ΡΠΌΠ΅ ΡΡΠ° ΡΠ°Π΄ΠΈ.
ΠΠΎΡΠ΅ΡΠ°ΠΊ ΡΠ°Π΄Π°
ΠΠΎΡΠ½ΠΈΠΌΠΎ ΡΠ° ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ΅ΠΌ Π½Π°ΡΠ΅ Π»ΠΈΡΡΠ΅ Π¦Π ΠΊΠΎΡΠ°ΠΊΠ°. ΠΠ±ΠΈΡΠ½ΠΎ Π±ΠΈΡΡΠ΅ Π·Π°ΠΏΠΎΡΠ΅Π»ΠΈ ΠΎΠ²Π°Ρ ΠΊΠΎΡΠ°ΠΊ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠΈ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΠ·ΠΈΡΡ ΠΊΠΎΠ΄Π° ΠΈΠ· ΡΠ΄Π°ΡΠ΅Π½ΠΎΠ³ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°, Π°Π»ΠΈ ΡΠΎΡ ΡΠ²Π΅ΠΊ Π½Π΅ΠΌΠ°ΠΌΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅, ΠΏΠ° Π³Π° ΡΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³Π° ΠΊΠ»ΠΎΠ½ΠΈΡΠ°ΠΌΠΎ ΠΈΠ· ΡΠ΄Π°ΡΠ΅Π½ΠΎΠ³.
ΠΠ°Π΄Π°ΡΠ°ΠΊ: Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠ³ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°, ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π³ΡΠ°Π½Π΅ ΠΈΠ· master
, ΠΏΠΎΡΠ΅ΡΠΈ ΡΠ° ΡΠ°Π΄ΠΎΠΌ
- ΠΠ»ΠΎΠ½ΠΈΡΠ°ΡΡΠ΅ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΊΡΡΡΠ΅Π²Π° ΠΈΠ·
<URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>
. - Π’ΡΡΠΈ
npm install
Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌΠ° ΠΊΡΡΡΠ΅Π²Π°; ΠΠΎΡΡΠ΅Π±Π°Π½ Π½Π°ΠΌ ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠΎ ΠΠ΅ΡΡ, ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π°. - ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π³ΡΠ°Π½Ρ ΠΈ Π΄Π°ΡΡΠ΅ ΡΠΎΡ ΠΈΠΌΠ΅
feature
. ΠΡΠ΅ΡΠΈ Π½Π° ΠΎΠ²Ρ ΡΠ΅ΠΌΡ. -
ΠΠΎΠ΄Π°ΡΡΠ΅ ΠΏΡΠΎΠ±Π½ΠΈ ΠΊΠΎΠ΄ Ρ
ci.test.js
ΠΈΠ·ΠΌΠ΅ΡΡ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠ° Ρ ΠΊΠΎΡΠΈΠΌΠ° ΡΠ΅ ΡΡΠ°ΠΆΠΈ Π΄Π° ΡΠΎ ΡΡΠ°Π΄ΠΈΠΌ.it('1. pull latest code', () => { expect(/.*pull.*/ig.test(fileContents)).toBe(true); }); it('2. add commits', () => { expect(/.*commit.*/ig.test(fileContents)).toBe(true); }); it('3. push to the remote branch with the same name', () => { expect(/.*push.*/ig.test(fileContents)).toBe(true); }); it('4. create a pull request and continue working', () => { expect(/.*pulls+request.*/ig.test(fileContents)).toBe(true); });
- ΠΠΎΠ΄Π°ΡΡΠ΅ ΡΠ΅ΠΊΡΡ ΡΠ° ΠΏΡΠ²Π° 4 ΠΊΠΎΡΠ°ΠΊΠ° Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ
ci.md
.1. Pull in the latest code. Create a branch from `master`. Start working. 2. Create commits on your new branch. Build and test locally. Pass? Go to the next step. Fail? Fix errors or tests and try again. 3. Push to your remote repository or remote branch. 4. Create a pull request. Discuss the changes, add more commits as discussion continues. Make tests pass on the feature branch.
Π’ΠΈΠΌΠΎΠ²ΠΈ
# ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊΡΡΡΠ°
git clone <repository URL>
cd <repository name>
# ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ npm install Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΊΡΡΡΠ°; ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Jest, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ².
npm install
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ feature. ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° ΡΡΡ Π² Π²Π΅ΡΠΊΡ.
git checkout -b feature
# ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.test.js ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅.
# ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.md ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅
ΠΡΠ΅ΠΈΡΠ°ΡΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΎΡ Π³ΡΠ°Π½ΠΈ, Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ
ΠΠΎΡΡΠ°Π²ΠΈΡΠ΅ΠΌΠΎ ΡΠ΅ΡΡΠΎΠ²Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΡ ΠΏΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ°, Π° Π·Π°ΡΠΈΠΌ ΡΡΠ΅Π·Π°ΡΠΈ ΠΊΠΎΠ΄.
Π’ΠΈΠΏΠΈΡΠ½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΡΠΈ ΠΊΠ°Π΄Π° ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΠΎΠΊΡΠ΅ΡΡ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ
- ΠΠΎΠΊΠ°Π»Π½ΠΎ:
- ΠΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ ΠΊΠΎΠ΄Π°;
- Π ΡΡΠ²Π°ΡΡ (Π·Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΠΠ’-ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½Π΅ ΡΠ΅Π·ΠΈΠΊΠ΅);
- Π’ΠΎΠΊΠΎΠΌ ΡΠΊΠ»Π°ΠΏΠ°ΡΠ° (ΠΊΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°);
- ΠΠ½ ΡΠΎΠΌΠΌΠΈΡ;
- ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ° Ρ Π·Π°ΡΠ΅Π΄Π½ΠΈΡΠΊΠΎΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ.
- ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΡ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΎΠΊΡΡΠΆΠ΅ΡΡ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅:
- ΠΠ°Π΄Π° ΡΠ΅ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π²ΠΈ Ρ Π»ΠΈΡΠ½ΠΎΡ Π³ΡΠ°Π½ΠΈ/ΡΠΊΠ»Π°Π΄ΠΈΡΡΡ.
- ΠΠΎΠ΄ Ρ ΠΎΠ²ΠΎΡ ΡΠ΅ΠΌΠΈ ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ°.
- ΠΠΎΡΠ΅Π½ΡΠΈΡΠ°Π»Π½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠΏΠ°ΡΠ°ΡΠ° ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ° (ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ°
master
). - ΠΠ°ΠΎ ΡΠ°Π·Π° ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅/ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΡΠΏΠΎΡΡΠΊΠ°
Π’ΠΈΠΏΠΈΡΠ½ΠΎ, ΡΡΠΎ Π±ΡΠΆΠ΅ ΡΠ°Π΄ΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, ΡΠΎ ΡΠ΅ΡΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π±ΠΈ ΠΏΡΠΈΡΡΡΠΈΡΠΈ Π΄Π° Π³Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅. Π’ΠΈΠΏΠΈΡΠ½Π° ΡΡΠ΅Π½ΡΠΊΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΠ²Π°ΠΊΠΎ.
- ΠΡΠ·ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ° - ΡΠΎΠΊΠΎΠΌ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅, Ρ Π¦Π ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Ρ
- Π‘ΠΏΠΎΡΠΈ ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ, Π±ΡΠ·ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅ - ΠΏΡΠΈ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΡ, Ρ Π¦Π ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Ρ
- Π‘ΠΏΠΎΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅ - Ρ Π¦Π ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Ρ
- ΠΠ΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΠΎΠΏΡΠ΅ΡΠ΅ΡΠ΅ΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈ Π΄ΡΠ³ΠΎΡΡΠ°ΡΠ½ΠΈ ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ - Ρ Π¦Π/Π¦Π ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠ°, Π°Π»ΠΈ ΡΠ°ΠΌΠΎ Ρ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈΠΌ ΡΠ΅ΠΆΠΈΠΌΠΈΠΌΠ°/ΡΠ°Π·Π°ΠΌΠ°/ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠ° Π³ΡΠ°Π΄ΡΠ΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΏΡΠ΅ΠΌΠ° ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π·Π° ΠΈΠ·Π΄Π°ΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΡΡΠ½ΠΎ.
Π’Π°ΡΠΊ
ΠΡΠ΅Π΄Π»Π°ΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ ΡΡΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ npm test
. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³Π°, Π΄ΠΎΠ΄Π°ΡΠΌΠΎ Π³ΠΈΡ ΠΊΡΠΊΡ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π½Π°ΡΠΈΡ
ΡΠ΅ΡΡΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ°. ΠΠΎΡΡΠΎΡΠΈ ΡΠ΅Π΄Π½Π° ΠΊΠ²Π°ΠΊΠ°: ΠΠΈΡ ΠΊΡΠΊΠ΅ ΡΠ΅ Π½Π΅ ΡΠΌΠ°ΡΡΠ°ΡΡ Π΄Π΅Π»ΠΎΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΠΈ ΡΡΠΎΠ³Π° ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°ΡΠΈ ΡΠ° ΠΠΈΡΠ₯ΡΠ±-Π° Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° Π·Π° ΠΊΡΡΡ. ΠΠ° Π±ΠΈΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ ΠΊΡΠΊΡ, ΠΌΠΎΡΠ°ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ install_hook.sh
ΠΈΠ»ΠΈ ΠΊΠΎΠΏΠΈΡΠ°ΡΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ repo/hooks/pre-commit
Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΈΠΌΠ΅Π½ΠΈΠΊ .git/hooks/
.
ΠΠ°Π΄Π° ΡΡΠ΅Π·ΡΡΠ΅ΡΠ΅, Π²ΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΈ ΠΎΠ½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ°Π²Π°ΡΡ Π΄Π° Π»ΠΈ ΡΡ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π΅ ΠΊΡΡΡΠ½Π΅ ΡΠ΅ΡΠΈ ΠΏΡΠΈΡΡΡΠ½Π΅ Π½Π° Π»ΠΈΡΡΠΈ.
- ΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ ΡΡΡΠ½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π΅
npm test
Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ Π²Π°ΡΠ΅Π³ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΠΊΡΡΡΠ°. ΠΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π° Π»ΠΈ ΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π°Π²ΡΡΠ΅Π½ΠΈ. - ΠΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π·Π°ΠΊΠ°ΡΠΈΡΡ Π·Π° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ (ΠΏΡΠ΅-ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ Π·Π°ΠΊΠ°ΡΠΈΡΡ) ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ΠΌ
install_hook.sh
. - Π£ΡΠ΅ΠΆΠΈΡΠ΅ ΡΠ²ΠΎΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρ ΡΠ²ΠΎΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅.
- Π£Π²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΏΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ°.
ΠΠ°ΡΠ΅ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ Π½Π°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅ ΠΎΠ²Π΅ ΠΊΠΎΡΠ°ΠΊΠ΅.
Π’ΠΈΠΌΠΎΠ²ΠΈ
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ pre-commit hook Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² install_hook.sh.
# ΠΠ°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ "Add first CI steps" Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅.
git add ci.md ci.test.js
git commit -m "Add first CI steps"
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ.
ΠΠ±ΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠ΄ Ρ ΡΠ΄Π°ΡΠ΅Π½ΠΎΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°ΡΠ΅Π½ΠΎΡ Π³ΡΠ°Π½ΠΈ
ΠΠ°Π΄Π° Π·Π°Π²ΡΡΠ΅ ΡΠ° ΡΠ°Π΄ΠΎΠΌ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ Π½ΠΈΠ²ΠΎΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠΈΠ½Π΅ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ ΡΠ°Π²Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΠΌ ΠΊΠ°ΠΊΠΎ Π±ΠΈ Π½Π° ΠΊΡΠ°ΡΡ ΠΌΠΎΠ³Π°ΠΎ Π±ΠΈΡΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ ΡΠ° ΡΠ°Π²Π½ΠΎΡΡΡ. Π‘Π° ΠΠΈΡΠ₯ΡΠ±-ΠΎΠΌ, ΠΎΠ²ΠΎ ΡΠ΅ ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΏΠΎΡΡΠΈΠΆΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ΅ΠΌ Π΄Π΅Π»Π° ΠΈΠ»ΠΈ Ρ Π»ΠΈΡΠ½ΠΎΡ ΠΊΠΎΠΏΠΈΡΠΈ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° (Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΠΊ) ΠΈΠ»ΠΈ Ρ Π»ΠΈΡΠ½ΠΎΡ Π³ΡΠ°Π½ΠΈ.
- ΠΠΎΠΌΠΎΡΡ ΡΠΎΡΠΊΡ-Π°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠ° ΡΠ΄Π°ΡΠ΅Π½ΠΎ Π΄Π΅ΡΠ΅Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅, ΡΡΠ²Π°ΡΠ°ΡΡΡΠΈ ΡΠ΅Π³ΠΎΠ²Ρ Π»ΠΈΡΠ½Ρ ΡΠ΄Π°ΡΠ΅Π½Ρ ΠΊΠΎΠΏΠΈΡΡ, ΡΠ°ΠΊΠΎΡΠ΅ ΠΏΠΎΠ·Π½Π°ΡΡ ΠΊΠ°ΠΎ Π²ΠΈΡΡΡΠΊΠ°. ΠΠ°ΡΠΈΠΌ ΠΊΠ»ΠΎΠ½ΠΈΡΠ° ΠΎΠ²ΠΎ Π»ΠΈΡΠ½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ Π·Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ°Π΄. ΠΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ°ΠΎ Π·Π°Π²ΡΡΠ΅Π½ ΠΈ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΡΡ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½Π°, ΠΎΠ½ ΠΈΡ
Π³ΡΡΠ° Ρ ΡΠ²ΠΎΡΡ Π²ΠΈΡΡΡΠΊΡ, Π³Π΄Π΅ ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠ° ΠΈ ΠΌΠΎΠ³Ρ ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠΈ Ρ Π·Π°ΡΠ΅Π΄Π½ΠΈΡΠΊΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅. ΠΠ²Π°Ρ ΠΏΡΠΈΡΡΡΠΏ ΡΠ΅ ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ Ρ ΠΏΡΠΎΡΠ΅ΠΊΡΠΈΠΌΠ° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° Π½Π° ΠΠΈΡΠ₯ΡΠ±-Ρ. Π’Π°ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Ρ ΠΌΠΎΠΌ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΎΠΌ ΠΊΡΡΡΡ [Π’ΠΈΠΌΡΠΊΠΈ ΡΠ°Π΄ ΠΈ Π¦Π ΡΠ° ΠΠΈΡΠΎΠΌ] (
http://devops.redpill.solutions/ ). - ΠΡΡΠ³ΠΈ ΠΏΡΠΈΡΡΡΠΏ ΡΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅Π΄Π½ΠΎ ΡΠ΄Π°ΡΠ΅Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ ΡΠ°ΡΡΠ½Π° ΡΠ°ΠΌΠΎ Π³ΡΠ°Π½Π°
master
Π·Π°ΡΠ΅Π΄Π½ΠΈΡΠΊΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ βΠ·Π°ΡΡΠΈΡΠ΅Π½ΠΎβ. Π£ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΡΡ, ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ ΠΎΠ±ΡΠ°Π²ΡΡΡΡ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ Ρ Π³ΡΠ°Π½Π°ΠΌΠ° ΡΠ΄Π°ΡΠ΅Π½ΠΎΠ³ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΠΊΠ°ΠΊΠΎ Π±ΠΈ Π΄ΡΡΠ³ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡ ΠΎΠ²Π°Ρ ΠΊΠΎΠ΄, Π°ΠΊΠΎ ΡΠ΅ ΡΠ²Π΅ Ρ ΡΠ΅Π΄Ρ, ΡΠΏΠΎΡΠΈΡΠ΅ Π³Π° ΡΠ°master
Π·Π°ΡΠ΅Π΄Π½ΠΈΡΠΊΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅.
Π£ ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΊΡΡΡΡ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ΠΌΠΎ ΡΠΎΠΊ ΠΏΠΎΡΠ»Π° ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠΈ Π³ΡΠ°Π½Π΅.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΎΠ±ΡΠ°Π²ΠΈΠΌΠΎ Π½Π°Ρ ΠΊΠΎΠ΄.
Π’Π°ΡΠΊ
- ΠΠ±ΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ Ρ ΡΠ΄Π°ΡΠ΅Π½ΠΎΡ Π³ΡΠ°Π½ΠΈ ΡΠ° ΠΈΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ ΠΊΠ°ΠΎ ΠΈ Π²Π°ΡΠ° ΡΠ°Π΄Π½Π° Π³ΡΠ°Π½Π°
Π’ΠΈΠΌΠΎΠ²ΠΈ
git push --set-upstream origin feature
ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅
ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°Ρ
ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ ΡΠ° Π½Π°ΡΠ»ΠΎΠ²ΠΎΠΌ ΠΡΠ΅Π³Π»Π΅Π΄ ΠΊΠΎΡΠ°ΠΊΠ°... ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ feature
ΠΏΠΎΠΏΡΡ βΠ³Π»Π°Π²Π½Π΅ Π³ΡΠ°Π½Π΅β ΠΈ master
ΠΏΠΎΠΏΡΡ "ΠΎΡΠ½ΠΎΠ²Π½Π΅ Π³ΡΠ°Π½Π΅".
Π£Π²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ
master
Ρ ΡΠ΅Π³ΠΎΠ²ΠΎΡ ΡΠΎΡΠΊ ΡΡ Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌ ΠΠ°ΠΎ βΠΎΡΠ½ΠΎΠ²Π½Π° Π³ΡΠ°Π½Π°β, Π½Π΅ΡΡ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΠΈ Π½Π° Π·Π°Ρ ΡΠ΅Π²Π΅ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° Π·Π° ΠΊΡΡΡ.
Π£ ΠΠΈΡΠ₯ΡΠ± ΡΠ΅Π·ΠΈΠΊΡ, βΠΎΡΠ½ΠΎΠ²Π½Π° Π³ΡΠ°Π½Π°β ΡΠ΅ Π³ΡΠ°Π½Π° Π½Π° ΠΊΠΎΡΠΎΡ Π·Π°ΡΠ½ΠΈΠ²Π°ΡΠ΅ ΡΠ²ΠΎΡ ΡΠ°Π΄, Π° βΠ³Π»Π°Π²Π½Π° Π³ΡΠ°Π½Π°β ΡΠ΅ Π³ΡΠ°Π½Π° ΠΊΠΎΡΠ° ΡΠ°Π΄ΡΠΆΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅.
Π Π°Π·Π³ΠΎΠ²Π°ΡΠ°ΡΡΠ΅ ΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π°ΠΌΠ°, Π΄ΠΎΠ΄Π°ΡΡΠ΅ Π½ΠΎΠ²Π° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΠΊΠ°ΠΊΠΎ ΡΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΡΠ° Π½Π°ΡΡΠ°Π²ΠΈ
ΠΠ°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ (ΠΠ )
ΠΠ°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ (ΠΠ ) ΡΠ΅ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ Π΄ΠΈΡΠΊΡΡΡΡΠ΅ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡΡΠ΅ ΠΊΠΎΠ΄, ΠΊΠ°ΠΎ ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΊΠΎΠ΄Π°. ΠΠ°Ρ ΡΠ΅Π²ΠΈ Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ ΡΡ Π½Π°Π·Π²Π°Π½ΠΈ ΠΏΡΠ΅ΠΌΠ° ΠΎΠΏΡΡΠ΅ΠΌ Π½Π°ΡΠΈΠ½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅ ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½ΠΈΡ ΠΏΡΠΎΠΌΠ΅Π½Π° Ρ ΡΠ΅Π»ΠΎΠΊΡΠΏΠ½ΠΈ ΠΊΠΎΠ΄. Π’ΠΈΠΏΠΈΡΠ½ΠΎ, ΠΎΡΠΎΠ±Π° ΠΊΠ»ΠΎΠ½ΠΈΡΠ° ΡΠ΄Π°ΡΠ΅Π½ΠΎ Π·Π²Π°Π½ΠΈΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° ΠΈ ΡΠ°Π΄ΠΈ Π½Π° ΠΊΠΎΠ΄Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. ΠΠ°ΠΊΠΎΠ½ ΡΠΎΠ³Π°, ΠΎΠ½ ΠΏΠΎΡΡΠ°Π²ΡΠ° ΠΊΠΎΠ΄ Ρ ΡΠ²ΠΎΡΠ΅ Π»ΠΈΡΠ½ΠΎ ΡΠ΄Π°ΡΠ΅Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΈ ΡΡΠ°ΠΆΠΈ ΠΎΠ΄ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΈΡ Π·Π° Π·Π²Π°Π½ΠΈΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π΄Π° Π³Π° ΠΏΡΠ΅ΡΠ·ΠΌΡ (ΠΏΠΎΠ²ΡΡΠΈ) ΡΠ΅Π³ΠΎΠ² ΠΊΠΎΠ΄ Ρ ΡΠ²ΠΎΡΠ° Π»ΠΎΠΊΠ°Π»Π½Π° ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°, Π³Π΄Π΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΡ ΠΈ Π΅Π²Π΅Π½ΡΡΠ°Π»Π½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡ(ΡΡΠΎΠΏΠΈΡΠΈ) ΡΠ΅Π³ΠΎΠ². ΠΠ²Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡ ΡΠ΅ ΠΏΠΎΠ·Π½Π°Ρ ΠΈ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΈΠΌΠ°, Π½ΠΏΡ. Π·Π°Ρ ΡΠ΅Π² Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅.
Π£ ΡΡΠ²Π°ΡΠΈ, Π½Π΅ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΡ Π·Π°Ρ ΡΠ΅Π²Π° Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ Π½Π° ΠΠΈΡΠ₯ΡΠ±-Ρ ΠΈΠ»ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠ°. Π Π°Π·Π²ΠΎΡΠ½ΠΈ ΡΠΈΠΌΠΎΠ²ΠΈ ΠΌΠΎΠ³Ρ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ΅ Π΄ΡΡΠ³Π΅ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΡ Π»ΠΈΡΠ΅ΠΌ Ρ Π»ΠΈΡΠ΅, Π³Π»Π°ΡΠΎΠ²Π½Π΅ ΠΏΠΎΠ·ΠΈΠ²Π΅ ΠΈΠ»ΠΈ Π΅-ΠΏΠΎΡΡΡ, Π°Π»ΠΈ ΡΠΎΡ ΡΠ²Π΅ΠΊ ΠΏΠΎΡΡΠΎΡΠΈ Π½ΠΈΠ· ΡΠ°Π·Π»ΠΎΠ³Π° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π°Ρ ΡΠ΅Π²ΠΈ Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ Ρ ΡΡΠΈΠ»Ρ ΡΠΎΡΡΠΌΠ°. ΠΠ²ΠΎ Π½Π΅ΠΊΠΈΡ ΠΎΠ΄ ΡΠΈΡ :
- ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π΅ Π΄ΠΈΡΠΊΡΡΠΈΡΠ΅ Π²Π΅Π·Π°Π½Π΅ Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ ΠΊΠΎΠ΄Π°;
- ΠΊΠ°ΠΎ ΠΌΠ΅ΡΡΠΎ Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΎ ΡΠ°Π΄Ρ Ρ ΡΠΎΠΊΡ ΠΎΠ΄ ΡΡΡΠ°Π½Π΅ Π°ΡΡΠΎΡΠ΅ΡΡΠ΅ΡΠ° ΠΈ ΠΊΠΎΠ»Π΅Π³Π°;
- ΡΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΠΏΡΠ΅Π³Π»Π΅Π΄Π° ΠΊΠΎΠ΄Π°;
- ΡΠ°ΠΊΠΎ Π΄Π° ΠΊΠ°ΡΠ½ΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π½Π°ΡΠΈ ΡΠ°Π·Π»ΠΎΠ³Π΅ ΠΈ ΡΠ°Π·ΠΌΠ°ΡΡΠ°ΡΠ° ΠΈΠ·Π° ΠΎΠ²ΠΎΠ³ ΠΈΠ»ΠΈ ΠΎΠ½ΠΎΠ³ Π΄Π΅Π»Π° ΠΊΠΎΠ΄Π°.
ΠΠ±ΠΈΡΠ½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ ΠΊΠ°Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΡΠ΅ ΠΎ Π½Π΅ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±ΠΈΡΠ΅ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΠ½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΠ°Π΄ΠΈΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠΈ ΠΊΠΎΡΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠΈ Π½Π° Π²ΠΈΡΠ΅ Π½Π°ΡΠΈΠ½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠ²Ρ Π»ΠΈΠ½ΠΈΡΡ ΠΊΠΎΠ΄Π° Π΄Π° Π±ΠΈΡΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ ΡΠ²ΠΎΡΠ΅ ΠΈΠ΄Π΅ΡΠ΅ ΠΈ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°Π»ΠΈ ΠΎ ΡΠ²ΠΎΡΠΈΠΌ ΠΏΠ»Π°Π½ΠΎΠ²ΠΈΠΌΠ° ΡΠ° ΡΠ²ΠΎΡΠΈΠΌ ΡΠ°ΡΠ°Π΄Π½ΠΈΡΠΈΠΌΠ°. ΠΠΊΠΎ ΡΠ΅ ΠΏΠΎΡΠ°ΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡΠΈ, ΠΎΡΠ²Π°ΡΠ° ΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ ΠΊΠ°Π΄Π° ΡΠ΅ Π½Π΅ΡΡΠΎ Π²Π΅Ρ ΡΡΠ°ΡΠ΅Π½ΠΎ, Π°Π½Π³Π°ΠΆΠΎΠ²Π°Π½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΡΠΈ. Π£ Π½Π΅ΠΊΠΈΠΌ ΡΡΠ΅Π½Π°ΡΠΈΡΠΈΠΌΠ°, ΠΌΠΎΠΆΠ΄Π° ΡΠ΅ΡΠ΅ ΠΆΠ΅Π»Π΅ΡΠΈ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΠ ΡΠ°ΠΌΠΎ ΠΈΠ· ΡΠ°Π·Π»ΠΎΠ³Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ ΠΊΠ²Π°Π»ΠΈΡΠ΅ΡΠ°: Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·ΠΎΠ²Π°Π½Π΅ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΊΠΎΠ΄Π°. Π¨ΡΠ° Π³ΠΎΠ΄ Π΄Π° ΠΎΠ΄Π»ΡΡΠΈΡΠ΅, Π½Π΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΡΠ΅ Π΄Π° @ΠΏΠΎΠΌΠ΅Π½Π΅ΡΠ΅ ΡΡΠ΄Π΅ ΡΠΈΡΠ΅ ΠΎΠ΄ΠΎΠ±ΡΠ΅ΡΠ΅ ΠΆΠ΅Π»ΠΈΡΠ΅ Ρ ΡΠ²ΠΎΠΌ Π·Π°Ρ ΡΠ΅Π²Ρ Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅.
ΠΠ±ΠΈΡΠ½ΠΎ, ΠΊΠ°Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΠ , ΡΠ°Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅.
- ΠΠ°Π²Π΅Π΄ΠΈΡΠ΅ ΡΡΠ° ΠΏΡΠ΅Π΄Π»Π°ΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈ Π³Π΄Π΅.
- ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΎΠΏΠΈΡ ΠΊΠΎΡΠΈ ΠΎΠ±ΡΠ°ΡΡΠ°Π²Π° ΡΠ²ΡΡ
Ρ ΠΏΡΠΎΠΌΠ΅Π½Π°. ΠΠΎΠΆΠ΄Π° ΠΆΠ΅Π»ΠΈΡΠ΅:
- Π΄ΠΎΠ΄Π°ΡΡΠ΅ Π±ΠΈΠ»ΠΎ ΡΡΠ° Π²Π°ΠΆΠ½ΠΎ ΡΡΠΎ Π½ΠΈΡΠ΅ ΠΎΡΠΈΠ³Π»Π΅Π΄Π½ΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ Π½Π΅ΡΡΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π·Π° ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½Π΅ # Π³ΡΠ΅ΡΠΊΠ΅ ΠΈ Π±ΡΠΎΡΠ΅Π²ΠΈ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ°;
- @ΠΏΠΎΠΌΠ΅Π½ΠΈ ΡΠ²Π°ΠΊΠΎΠ³Π° ΡΠ° ΠΊΠΈΠΌ ΠΆΠ΅Π»ΠΈΡ Π΄Π° ΠΏΠΎΡΠ½Π΅Ρ Π΄Π° ΡΠ°Π΄ΠΈΡ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π΄Π° Π³Π° @ΠΏΠΎΠΌΠ΅Π½Π΅Ρ Ρ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΠΌΠ° ΠΊΠ°ΡΠ½ΠΈΡΠ΅;
- Π·Π°ΠΌΠΎΠ»ΠΈΡΠ΅ ΠΊΠΎΠ»Π΅Π³Π΅ Π΄Π° Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Ρ Ρ Π½Π΅ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π½Π΅ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ.
ΠΠ°Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΠ , ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΡ ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Ρ ΡΠ°ΠΊΠ²ΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ°. Π£ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΎΠ²ΠΎ ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΡΡΠΈ ΡΠΊΡΠΏ ΡΠ΅ΡΡΠΎΠ²Π° ΠΊΠΎΡΠΈ ΡΠΌΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π°Π»ΠΈ Ρ ΡΡΠ²Π°ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ Π΄ΠΎΠ΄Π°ΡΠ½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²Π° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ°.
Π‘Π°ΡΠ΅ΠΊΠ°ΡΡΠ΅ Π΄ΠΎΠΊ ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π°Π²ΡΡΠ΅. Π‘ΡΠ°ΡΡΡ ΡΠ΅ΡΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π½Π° Π΄Π½Ρ ΠΠ Π΄ΠΈΡΠΊΡΡΠΈΡΠ΅ Ρ ΠΠΈΡΠ₯ΡΠ± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΡ. ΠΠ°ΡΡΠ°Π²ΠΈΡΠ΅ ΠΊΠ°Π΄Π° ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π°Π²ΡΡΠ΅.
ΠΠΎΠ΄Π°ΡΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Ρ ΠΎ Π½Π°ΡΡΠΌΠΈΡΠ½ΠΎΡΡΠΈ Π»ΠΈΡΡΠ΅ Π¦Π ΠΊΠΎΡΠ°ΠΊΠ°
ΠΠΈΡΡΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Ρ ΠΎΠ²ΠΎΠΌ ΠΊΡΡΡΡ ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΡΠ½Π° ΠΈ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½Π°, ΠΎ ΡΠΎΠΌΠ΅ ΡΡΠ΅Π±Π° Π΄ΠΎΠ΄Π°ΡΠΈ Π½Π°ΠΏΠΎΠΌΠ΅Π½Ρ.
ΠΠ°Π΄Π°ΡΠ°ΠΊ: ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ Π·Π° ΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ
- ΠΡΠ΅Π±Π°ΡΠΈΡΠ΅ ΡΠ΅ Π½Π° Π³ΡΠ°Π½Ρ
master
. - ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π³ΡΠ°Π½Ρ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ
bugfix
. - ΠΠΎΠ΄Π°ΡΡΠ΅ ΡΠ΅ΠΊΡΡ Π±Π΅Π»Π΅ΡΠΊΠ΅ Π½Π° ΠΊΡΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅
ci.md
.> **GitHub flow** is sometimes used as a nickname to refer to a flavor of trunk-based development when code is deployed straight from feature branches. This list is just an interpretation that I use in my [DevOps courses](http://redpill.solutions). The official tutorial is [here](https://guides.github.com/introduction/flow/).
- Π£ΠΊΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅.
- ΠΠ±ΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅ΠΌΡ
bugfix
Ρ ΡΠ΄Π°ΡΠ΅Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅. - ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°Ρ
ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ ΠΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ ΡΠ° Π³ΡΠ°Π½ΡΠΈΡΠΎΠΌ Π·Π° Π³Π»Π°Π²Ρ
bugfix
ΠΈ Π±Π°Π·Π½Ρ Π³ΡΠ°Π½Ρmaster
.
Π£Π²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ
master
Ρ ΡΠ΅Π³ΠΎΠ²ΠΎΡ ΡΠΎΡΠΊ ΡΡ Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌ ΠΠ°ΠΎ βΠΎΡΠ½ΠΎΠ²Π½Π° Π³ΡΠ°Π½Π°β, Π½Π΅ΡΡ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΠΈ Π½Π° Π·Π°Ρ ΡΠ΅Π²Π΅ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° Π·Π° ΠΊΡΡΡ.
ΠΠ²Π°ΠΊΠΎ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΡΠ΅ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅.
Π’ΠΈΠΌΠΎΠ²ΠΈ
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ master. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ bugfix.
git checkout master
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ bugfix-remark.
git checkout -b bugfix
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ Π²Π½ΠΈΠ·Ρ ci.md.
# ΠΠ°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
git add ci.md
git commit -m "Add a remark about the list being opinionated"
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ Π²Π΅ΡΠΊΡ bugfix Π² ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
git push --set-upstream origin bugfix
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ pull request ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° GitHub ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅
ΠΠ΄ΠΎΠ±ΡΠΈ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ βΠΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅β
Π’Π°ΡΠΊ
- ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅.
- ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° βΠ‘ΠΏΠΎΡΠΈ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅β.
- ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° βΠΠΎΡΠ²ΡΠ΄ΠΈ ΡΠΏΠ°ΡΠ°ΡΠ΅β.
- ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° "ΠΠ·Π±ΡΠΈΡΠΈ Π³ΡΠ°Π½Ρ", Π²ΠΈΡΠ΅ Π½Π°ΠΌ Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π°.
ΠΠ²ΠΎ ΡΠ΅ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° Π½Π°ΠΊΠΎΠ½ ΡΠΏΠ°ΡΠ°ΡΠ°.
ΠΠ°ΡΡΠ°Π²ΠΈΡΠ΅ ΡΠ° ΡΠ°Π΄ΠΎΠΌ ΠΈ Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅
Π‘Π°ΡΠ°Π΄ΡΠ° Π½Π° Π·Π°Ρ ΡΠ΅Π²Ρ Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ΠΌ ΡΠ΅ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° Π΄ΠΎΠ΄Π°ΡΠ½ΠΈΠΌ ΡΠ°Π΄ΠΎΠΌ. ΠΠ²ΠΎ ΡΠ΅ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄Π° ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄ΠΈΡΠΊΡΡΠΈΡΠ΅, Π°Π»ΠΈ Ρ Π½Π°ΡΠ΅ΠΌ ΠΊΡΡΡΡ ΡΠ΅ΠΌΠΎ ΡΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°ΡΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ΠΌ Π½ΠΎΠ²ΠΈΡ ΡΡΠ°Π²ΠΊΠΈ Π½Π° Π½Π°ΡΡ Π»ΠΈΡΡΡ Π¦Π ΠΊΠΎΡΠ°ΠΊΠ°.
ΠΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠΊΡΡΡΡΡΠ΅ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡ ΡΠ΅ΡΡΠΎΠΌ. ΠΠ°Ρ ΡΠ΅Π²ΠΈ Π·Π° ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡ ΡΠ΅ΡΡΠΎΠΌ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΡΡ ΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ΅ Π½Π°Π»Π°Π·Π΅ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΈ ΡΠ΅ Π·ΠΎΠ²Π΅ Π½Π΅ΡΡΠΎ ΠΏΠΎΠΏΡΡ βΡΠΌΠ΅ΡΠ½ΠΈΡΠ° Π·Π° Π΄ΠΎΠΏΡΠΈΠ½ΠΎΡβ. ΠΠ΄ΡΠΆΠ°ΡΠ΅ΠΌΠΎ ΡΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΠΌ ΠΈ Π΄ΠΎΠ΄Π°ΡΠΈ ΡΠ΅ΡΡ Π·Π° ΡΠ²Π°ΠΊΡ Π»ΠΈΠ½ΠΈΡΡ Π½Π° Π½Π°ΡΠΎΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΎΡ Π»ΠΈΡΡΠΈ.
ΠΠ°Π΄Π° ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ΅ Π·Π°Π΄Π°ΡΠΊΠ΅, ΠΏΠΎΠΊΡΡΠ°ΡΡΠ΅ ΠΏΡΠ²ΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅. ΠΠΊΠΎ ΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ pre-commit
Π·Π°ΠΊΠ°ΡΠΈΡΠ΅ ΡΠ°Π½ΠΈΡΠ΅, Π½ΠΎΠ²ΠΎΠ΄ΠΎΠ΄Π°ΡΠΈ ΡΠ΅ΡΡ ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΡΡ, Π½Π΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠΈ ΠΈ Π½ΠΈΡΡΠ° Π½Π΅ΡΠ΅ Π±ΠΈΡΠΈ ΡΡΠ΅Π·Π°Π½ΠΎ. ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠ°ΠΊΠΎ Π·Π½Π°ΠΌΠΎ Π΄Π° Π½Π°ΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π°ΠΏΡΠ°Π²ΠΎ Π½Π΅ΡΡΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΡΡ. ΠΠ°Π½ΠΈΠΌΡΠΈΠ²ΠΎ, Π°ΠΊΠΎ Π±ΠΈΡΠΌΠΎ ΠΏΠΎΡΠ΅Π»ΠΈ ΡΠ° ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π°, ΠΏΡΠΎΠ»Π°Π·Π°ΠΊ ΡΠ΅ΡΡΠΎΠ²Π° Π±ΠΈ ΠΌΠΎΠ³Π°ΠΎ Π΄Π° Π·Π½Π°ΡΠΈ Π΄Π° ΡΠ΅ ΠΊΠΎΠ΄ ΡΠ°Π΄ΠΈΠΎ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΎΡΠ΅ΠΊΠΈΠ²Π°Π»ΠΎ ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π°ΠΏΡΠ°Π²ΠΎ Π½ΠΈΡΡΠ° Π½Π΅ ΡΠ΅ΡΡΠΈΡΠ°ΡΡ. ΠΡΠΈΠΌ ΡΠΎΠ³Π°, Π΄Π° Π½ΠΈΡΠΌΠΎ ΡΠΎΠΏΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΌΠΎΠΆΠ΄Π° Π±ΠΈΡΠΌΠΎ ΠΈΡ
ΠΏΠΎΡΠΏΡΠ½ΠΎ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΠ»ΠΈ, ΡΠ΅Ρ Π½Π°Ρ Π½ΠΈΡΡΠ° Π½Π΅ Π±ΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΠ°Π»ΠΎ Π½Π° ΡΠΎ.
Π’Π΅ΡΡ Π²ΠΎΡΠ΅Π½ ΡΠ°Π·Π²ΠΎΡ (Π’ΠΠ)
Π’ΠΠ ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ ΠΏΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π° ΠΏΡΠ΅ ΠΊΠΎΠ΄Π°. Π’ΠΈΠΏΠΈΡΠ°Π½ ΡΠΎΠΊ ΡΠ°Π΄Π° ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠΈ Π’ΠΠ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ.
- ΠΠΎΠ΄Π°ΡΡΠ΅ ΡΠ΅ΡΡ.
- ΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ²Π΅ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈ ΡΠ²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° Π½ΠΎΠ²ΠΈ ΡΠ΅ΡΡ Π½Π΅ ΡΡΠΏΠ΅.
- ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΊΠΎΠ΄.
- ΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅, ΡΠ²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΠ²ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΡΠΎΡΡ.
- Π Π΅ΡΠ°ΠΊΡΠΎΡΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄.
- ΠΠΎΠ½Π°Π²ΡΠ°ΡΠ΅.
ΠΠΎΡΡΠΎ ΡΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΡΠ΅ΡΡΠΎΠ²Π° ΠΊΠΎΡΠΈ Π½ΠΈΡΡ ΡΡΠΏΠ΅Π»ΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΈ ΡΡΠ²Π΅Π½ΠΎΠΌ Π±ΠΎΡΠΎΠΌ, Π° ΠΎΠ½ΠΈ ΠΊΠΎΡΠΈ ΡΡ ΠΏΡΠΎΡΠ»ΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ Π·Π΅Π»Π΅Π½ΠΎΠΌ Π±ΠΎΡΠΎΠΌ, ΡΠΈΠΊΠ»ΡΡ ΡΠ΅ ΠΏΠΎΠ·Π½Π°Ρ ΠΈ ΠΊΠ°ΠΎ ΡΡΠ²Π΅Π½ΠΎ-Π·Π΅Π»Π΅Π½ΠΈ ΡΠ΅ΡΠ°ΠΊΡΠΎΡ.
Π’Π°ΡΠΊ
ΠΡΠ²ΠΎ, ΠΏΠΎΠΊΡΡΠ°ΡΡΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈ ΠΏΡΡΡΠΈΡΠ΅ ΠΈΡ
Π΄Π° Π½Π΅ ΡΡΠΏΠ΅ΡΡ, Π° Π·Π°ΡΠΈΠΌ Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΠΈ ΡΡΠ΅Π·ΡΡΡΠ΅ ΡΠ΅ΠΊΡΡ ΡΠ°ΠΌΠ΅ Π»ΠΈΡΡΠ΅ ΠΊΠΎΡΠ°ΠΊΠ° Π¦Π. ΠΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΡΠΎΠ»Π°Π·Π΅ (βΠ·Π΅Π»Π΅Π½ΠΎβ).
ΠΠ°ΡΠΈΠΌ ΠΎΠ±ΡΠ°Π²ΠΈΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΊΠΎΠ΄ Ρ ΡΠ΄Π°ΡΠ΅Π½ΠΎΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ ΠΈ Π³Π»Π΅Π΄Π°ΡΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΈ Ρ ΠΠΈΡΠ₯ΡΠ± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΡ Π½Π° Π΄Π½Ρ Π΄ΠΈΡΠΊΡΡΠΈΡΠ΅ ΠΎ Π·Π°Ρ
ΡΠ΅Π²Ρ Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΡ ΠΠ ΡΡΠ°ΡΡΡΠ°.
- ΠΡΠ΅Π±Π°ΡΠΈΡΠ΅ ΡΠ΅ Π½Π° Π³ΡΠ°Π½Ρ
feature
. -
ΠΠΎΠ΄Π°ΡΡΠ΅ ΠΎΠ²Π΅ ΡΠ΅ΡΡΠΎΠ²Π΅ Ρ
ci.test.js
ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΠ΅Π³ ΠΏΠΎΠ·ΠΈΠ²Π°it (...);
.it('5. Merge/rebase commits from master. Make tests pass on the merge result.', () => { expect(/.*merge.*commits.*testss+pass.*/ig.test(fileContents)).toBe(true); }); it('6. Deploy from the feature branch to production.', () => { expect(/.*Deploy.*tos+production.*/ig.test(fileContents)).toBe(true); }); it('7. If everything is good in production for some period of time, merge changes to master.', () => { expect(/.*merge.*tos+master.*/ig.test(fileContents)).toBe(true); });
- ΠΠΎΠΊΡΡΠ°ΡΡΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅. ΠΠΊΠΎ
pre-commit
ΠΊΡΠΊΠ° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°, ΠΏΠΎΠΊΡΡΠ°Ρ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° Π½Π΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠΈ. - ΠΠ°ΡΠΈΠΌ Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΠΎΠ²Π°Ρ ΡΠ΅ΠΊΡΡ Ρ
ci.md
.5. Merge/rebase commits from master. Make tests pass on the merge result. 6. Deploy from the feature branch with a sneaky bug to production. 7. If everything is good in production for some period of time, merge changes to master.
- ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΈ ΡΠ½Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ.
- ΠΠ±ΡΠ°Π²ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρ Π³ΡΠ°Π½ΠΈ
feature
.
Π‘Π°Π΄Π° Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π½Π΅ΡΡΠΎ ΠΎΠ²Π°ΠΊΠΎ
Π’ΠΈΠΌΠΎΠ²ΠΈ
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½Π° Π²Π΅ΡΠΊΡ feature
git checkout feature
# ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΡΡΡ Π² ci.test.js ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΈΠ½Π΄Π΅ΠΊΡ ci.test.js ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·ΠΆΠ΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ
git add ci.test.js
# ΠΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ ΡΠ΅ΡΡΡ. ΠΡΠ»ΠΈ pre-commit hook ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ, ΠΊΠΎΠΌΠΌΠΈΡ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ.
git commit
# Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡ Π² ci.md ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅
# ΠΠ½Π΅ΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΡ
git add ci.md
git commit -m "Add the remaining CI steps"
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π²Π΅ΡΠΊΡ feature
git push
ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠΏΠ°ΡΠ°ΡΠ°
ΠΠ΄ΠΈΡΠ΅ Π½Π° ΠΠ°Ρ ΡΠ΅Π² Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΡΠ΅Π³Π»Π΅Π΄ ΠΊΠΎΡΠ°ΠΊΠ°.
ΠΠ°ΠΊΠΎ Π½ΠΈΡΠΌΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ Π½ΠΈΡΡΠ° Π»ΠΎΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π° Π½Π°Ρ ΠΊΠΎΠ΄ ΡΡ ΠΏΡΠΎΡΠ»ΠΈ, ΡΠΎΡ ΡΠ²Π΅ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΡΠΏΠΎΡΠΈΠΌΠΎ Π³ΡΠ°Π½Ρ feature
ΠΈ master
. Π’ΠΎ ΡΠ΅ Π·Π°ΡΠΎ ΡΡΠΎ ΡΠ΅ Π΄ΡΡΠ³Π° Π½ΠΈΡ bugfix
Π±ΠΈΠΎ ΡΠΏΠΎΡΠ΅Π½ ΡΠ° master
Π΄ΠΎΠΊ ΡΠΌΠΎ ΡΠ°Π΄ΠΈΠ»ΠΈ Π½Π° ΠΎΠ²ΠΎΠΌ ΠΠ -Ρ.
ΠΠ²ΠΎ ΡΡΠ²Π°ΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡΡ Ρ ΠΊΠΎΡΠΎΡ ΡΠ΄Π°ΡΠ΅Π½Π° Π³ΡΠ°Π½Π° master
ΠΈΠΌΠ° Π½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΠ·ΠΈΡΡ ΠΎΠ΄ ΠΎΠ½Π΅ Π½Π° ΠΊΠΎΡΠΎΡ ΡΠΌΠΎ Π·Π°ΡΠ½ΠΎΠ²Π°Π»ΠΈ Π³ΡΠ°Π½Ρ feature
. ΠΠ±ΠΎΠ³ ΠΎΠ²ΠΎΠ³Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠΎΡΠ°ΠΌΠΎ Π₯ΠΠΠ master
Π΄ΠΎ ΠΊΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠ° feature
. Π£ ΠΎΠ²ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΡΠΈ, ΠΌΠΎΡΠ°ΠΌΠΎ ΠΈΠ»ΠΈ Π΄Π° ΡΠΏΠΎΡΠΈΠΌΠΎ ΠΈΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ feature
ΡΠ΅Π±Π°ΡΠ΅ master
. ΠΠΈΡΠ₯ΡΠ± Π·Π°ΠΏΡΠ°Π²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΏΠ°ΡΠ°ΡΠ΅ Π°ΠΊΠΎ Π½Π΅ΠΌΠ° ΡΡΠΊΠΎΠ±Π°. ΠΠ°ΠΆΠ°Π»ΠΎΡΡ, Ρ Π½Π°ΡΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΡΠΈ, ΠΎΠ±Π΅ Π³ΡΠ°Π½Π΅ ΠΈΠΌΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ ci.md
. ΠΠ²Π° ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΡΠ΅ ΠΏΠΎΠ·Π½Π°ΡΠ° ΠΊΠ°ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠΏΠ°ΡΠ°ΡΠ° ΠΈ ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠΈΠΌΠΎ ΡΡΡΠ½ΠΎ.
Π‘ΠΏΠΎΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π±Π°Π·ΠΈΡΠ°ΡΡΠ΅
Π‘ΡΠΎΠΏΠΈΡΠΈ
- ΠΡΠ°Π²ΠΈ Π΄ΠΎΠ΄Π°ΡΠ½ΠΎ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ ΡΠΏΠ°ΡΠ°ΡΠ° ΠΈ ΡΡΠ²Π° ΡΠ°Π΄Π½Ρ ΠΈΡΡΠΎΡΠΈΡΡ.
- Π§ΡΠ²Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° Π³ΡΠ°Π½Π° ΡΠ° ΡΠΈΡ ΠΎΠ²ΠΈΠΌ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΠΎΠ·Π½Π°ΠΊΠ°ΠΌΠ° ΠΈ Π°ΡΡΠΎΡΠΈΠΌΠ°.
- Π§ΡΠ²Π° Π‘Π₯Π ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΠΈ Π²Π΅Π·Π΅ Π΄ΠΎ ΡΠΈΡ Ρ Π΄ΠΈΡΠΊΡΡΠΈΡΠ°ΠΌΠ° ΠΎ Π·Π°Ρ ΡΠ΅Π²ΠΈΠΌΠ° Π·Π° ΠΈΠ·ΠΌΠ΅Π½Ρ.
- ΠΠ°Ρ ΡΠ΅Π²Π° ΡΠ΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΡΡΠΊΠΎΠ±Π°.
- Π§ΠΈΠ½ΠΈ ΠΏΡΠΈΡΡ Π½Π΅Π»ΠΈΠ½Π΅Π°ΡΠ½ΠΎΠΌ.
- ΠΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ ΡΠ΅ΡΠΊΠ° Π·Π° ΡΠΈΡΠ°ΡΠ΅ Π·Π±ΠΎΠ³ Π²Π΅Π»ΠΈΠΊΠΎΠ³ Π±ΡΠΎΡΠ° Π³ΡΠ°Π½Π° (ΠΏΠΎΠ΄ΡΠ΅ΡΠ° Π½Π° ΠΠΠ ΠΊΠ°Π±Π»).
- ΠΡΠ΅ΠΆΠ°Π²Π° Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°, Π½ΠΏΡ.
git bisect
ΠΌΠ°ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ - Π½Π°ΡΠΈ ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ ΡΠΏΠ°ΡΠ°ΡΠ°.
Π Π΅Π±Π°ΡΠ΅
- ΠΠΎΠ½Π°Π²ΡΠ° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΠΈΠ· ΡΡΠ΅Π½ΡΡΠ½Π΅ Π³ΡΠ°Π½Π΅ Π½Π° Π²ΡΡ
Ρ ΠΎΡΠ½ΠΎΠ²Π½Π΅ Π³ΡΠ°Π½Π΅ ΡΠ΅Π΄Π°Π½ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ.
- ΠΠ΅Π½Π΅ΡΠΈΡΡ ΡΠ΅ Π½ΠΎΠ²Π° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΡΠ° Π½ΠΎΠ²ΠΈΠΌ Π‘Π₯Π-ΠΎΠ²ΠΈΠΌΠ°, ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΠΎΠ³Π° Π΄Π° ΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° Ρ ΠΠΈΡΠ₯ΡΠ±-Ρ ΠΏΠΎΠ΄ΡΠ΄Π°ΡΠ°ΡΡ ΡΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΌ Π·Π°Ρ ΡΠ΅Π²ΠΈΠΌΠ° Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅, Π°Π»ΠΈ Π½Π΅ ΠΈ ΡΠ° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈΠΌ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΠΌΠ°.
- Π£ΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°ΡΠΈ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠΎΠ²Π°ΡΠΈ Ρ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΈΠ»ΠΈ ΡΠ°ΠΊ ΡΠΏΠΎΡΠΈΡΠΈ Ρ ΡΠ΅Π΄Π½ΠΎ.
- ΠΠΎΠΆΠ΄Π° ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ΡΠΈΡΠΈ Π²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΠ°ΡΠ°.
- ΠΠΌΠΎΠ³ΡΡΠ°Π²Π° Π²Π°ΠΌ Π΄Π° ΠΎΠ΄ΡΠΆΠΈΡΠ΅ Π»ΠΈΠ½Π΅Π°ΡΠ½Ρ ΠΏΡΠΈΡΡ.
- ΠΡΠΈΡΡ ΡΠ΅ ΠΌΠΎΠΆΠ΄Π° Π»Π°ΠΊΡΠ΅ ΡΠΈΡΠ°ΡΠΈ ΡΠ²Π΅ Π΄ΠΎΠΊ Π½ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ³Π°ΡΠΊΠ° Π±Π΅Π· ΡΠ°Π·ΡΠΌΠ½ΠΎΠ³ ΡΠ°Π·Π»ΠΎΠ³Π°.
- ΠΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° ΠΈ ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ ΠΌΠ°Π»ΠΎ Π»Π°ΠΊΡΠ΅: ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°
git bisect
, ΠΌΠΎΠΆΠ΅ ΡΡΠΈΠ½ΠΈΡΠΈ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ Π²ΡΠ°ΡΠ°ΡΠ΅ ΡΠ°ΡΠ½ΠΈΡΠΈΠΌ ΠΈ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΡΠΈΠ²ΠΈΡΠΈΠΌ.
- ΠΠ°Ρ
ΡΠ΅Π²Π° ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ΅ Π³ΡΠ°Π½Π΅ ΡΠ° ΠΌΠΈΠ³ΡΠΈΡΠ°Π½ΠΈΠΌ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ΠΌ ΡΠ° Π·Π°ΡΡΠ°Π²ΠΈΡΠΎΠΌ
--force
ΠΊΠ°Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ° Π·Π°Ρ ΡΠ΅Π²ΠΈΠΌΠ° Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅.
Π’ΠΈΠΏΠΈΡΠ½ΠΎ, ΡΠΈΠΌΠΎΠ²ΠΈ ΡΠ΅ ΡΠ»Π°ΠΆΡ Π΄Π° ΡΠ²Π΅ΠΊ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΈΡΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΡ ΠΊΠ°Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΠΏΠΎΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅. ΠΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ βΡΠΈΡΡΠΎβ ΡΡΠ°ΠΏΠ°ΡΠ΅ ΠΈΠ»ΠΈ βΡΠΈΡΡΠΎβ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ Π½Π° Π²ΡΡ
Ρ, ΠΈΠ»ΠΈ Π½Π΅ΡΡΠΎ ΠΈΠ·ΠΌΠ΅ΡΡ, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±Π°Π²ΡΠ°ΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° Π½Π° Π²ΡΡ
Ρ (git rebase -i
) Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π·Π° Π³ΡΠ°Π½Π΅ ΠΊΠΎΡΠ΅ Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π²ΡΠ΅Π½Π΅ Ρ ΡΠ°Π²Π½ΠΎΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ, Π°Π»ΠΈ ΡΠ΅ ΡΠΏΠ°ΡΠ°ΡΡ Π·Π° "ΡΠ°Π²Π½Π΅" Π³ΡΠ°Π½Π΅.
ΠΠ²Π΄Π΅ ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠΏΠ°ΡΠ°ΡΠ΅.
Π’Π°ΡΠΊ
- Π£Π²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ΄ Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎΡ Π³ΡΠ°Π½ΠΈ
master
Π°ΠΆΡΡΠΈΡΠ°Π½ΠΎ ΠΈΠ· ΡΠ΄Π°ΡΠ΅Π½ΠΎΠ³ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°. - ΠΡΠ΅Π±Π°ΡΠΈΡΠ΅ ΡΠ΅ Π½Π° Π³ΡΠ°Π½Ρ
feature
. - ΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠ°ΠΏΠ°ΡΠ΅ ΡΠ° Π³ΡΠ°Π½ΠΎΠΌ
master
. ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠΏΠ°ΡΠ°ΡΠ° Π·Π±ΠΎΠ³ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΈΡ ΠΏΡΠΎΠΌΠ΅Π½Π° Ρci.md
. - Π Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ°ΠΊΠΎ Π΄Π° Π½Π°ΡΠ° Π»ΠΈΡΡΠ° Π¦Π ΠΊΠΎΡΠ°ΠΊΠ° ΠΈ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π° ΠΎ ΡΠΎΠΌΠ΅ ΠΎΡΡΠ°Π½Ρ Ρ ΡΠ΅ΠΊΡΡΡ.
- ΠΠ±ΡΠ°Π²ΠΈΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ ΡΠΏΠ°ΡΠ°ΡΠ΅ΠΌ Π½Π° ΡΠ΄Π°ΡΠ΅Π½Ρ Π³ΡΠ°Π½Ρ
feature
. - ΠΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΡΡΠ°ΡΡΡ Π·Π°Ρ ΡΠ΅Π²Π° Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΡ ΠΠΈΡΠ₯ΡΠ±-Π° ΠΈ ΡΠ°ΡΠ΅ΠΊΠ°ΡΡΠ΅ Π΄ΠΎΠΊ ΡΠ΅ ΡΠΏΠ°ΡΠ°ΡΠ΅ Π½Π΅ ΡΠ΅ΡΠΈ.
Π’ΠΈΠΌΠΎΠ²ΠΈ
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π²Π΅ΡΠΊΠ΅ `master` ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½ ΠΈΠ· ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
git checkout master
git pull
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ feature
git checkout feature
# ΠΠ½ΠΈΡΠΈΠΈΡΡΠΉΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Ρ Π²Π΅ΡΠΊΠΎΠΉ master
git merge master
# A merge conflict related to concurrent changes to ci.md will be reported
# => Auto-merging ci.md
# CONFLICT (content): Merge conflict in ci.md
# Automatic merge failed; fix conflicts and then commit the result.
# Π Π°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈ Π½Π°Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°Π³ΠΎΠ² CI, ΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΌ ΠΎΡΡΠ°Π»ΠΈΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅.
# ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.md ΡΡΠΎΠ± ΠΎΠ½ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ
git add ci.md
git merge --continue
# ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΠΊΡ feature.
git push
# ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΠ°ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ GitHub, Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎΠΊΠ° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ.
Π‘ΡΠ°ΡΠ°Π½ ΠΏΠΎΡΠ°ΠΎ!
ΠΠ°Π²ΡΡΠΈΠ»ΠΈ ΡΡΠ΅ ΡΠ° Π»ΠΈΡΡΠΎΠΌ ΠΈ ΡΠ°Π΄Π° ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ΅ Π·Π°Ρ
ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ master
.
ΠΠ°Π΄Π°ΡΠ°ΠΊ: ΠΠ΄ΠΎΠ±ΡΠ°Π²Π°ΡΠ΅ Π·Π°Ρ ΡΠ΅Π²Π° Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ βΠΡΠ΅Π³Π»Π΅Π΄ ΠΊΠΎΡΠ°ΠΊΠ°β
- ΠΡΠ²ΠΎΡΠΈΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅.
- ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° βΠ‘ΠΏΠΎΡΠΈ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅β.
- ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° βΠΠΎΡΠ²ΡΠ΄ΠΈ ΡΠΏΠ°ΡΠ°ΡΠ΅β.
- ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° βΠΠ·Π±ΡΠΈΡΠΈ Π³ΡΠ°Π½Ρβ ΡΠ΅Ρ Π½Π°ΠΌ Π²ΠΈΡΠ΅ Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π°.
ΠΠ²ΠΎ ΡΠ΅ ΡΡΠ΅Π½ΡΡΠ½ΠΎ Π²Π°ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅
ΠΡΠ΅ΡΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π°
ΠΠ°ΠΆΠ΅ ΡΠ΅ Π΄Π° ΡΠ΅ βΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΠ²ΠΎ Π³ΡΠ΅ΡΠ°ΠΊΠ°, Π°Π»ΠΈ Π½ΠΈΠΊΠ°Π΄Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΡΠΈΡ ΠΎΠ²ΠΎ ΠΎΠ΄ΡΡΡΡΠ²ΠΎβ. ΠΠ°ΠΊΠΎ ΡΠΌΠΎ ΠΈΠΌΠ°Π»ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈ Π½ΠΈΡΡ Π½Π°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π³ΡΠ΅ΡΠΊΠ΅, ΠΏΠΎΠ΄ΠΌΡΠΊΠ»Π° Π³ΡΠ΅ΡΠΊΠ° ΡΠ΅ ΡΠ²ΡΠΊΠ»Π° Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ.
Π£ ΠΎΠ²Π°ΠΊΠ²ΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΡΡ, ΠΌΠΎΡΠ°ΠΌΠΎ Π²ΠΎΠ΄ΠΈΡΠΈ ΡΠ°ΡΡΠ½Π° ΠΎ:
- ΡΡΠ° ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΎ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΠΈ;
- ΠΊΠΎΠ΄ Ρ Π½ΠΈΡΠΈ
master
ΡΠ° Π³ΡΠ΅ΡΠΊΠΎΠΌ, ΠΎΠ΄ ΠΊΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ ΠΌΠΎΠ³Ρ Π·Π°ΠΏΠΎΡΠ΅ΡΠΈ Π½ΠΎΠ²ΠΈ ΡΠ°Π΄.
ΠΠ° Π»ΠΈ Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΠΈΠΌ Ρ ΡΠ»Π΅Π΄Π΅ΡΠΎΡ Π²Π΅ΡΠ·ΠΈΡΠΈ?
ΠΡΠ°ΡΠ°ΡΠ΅ ΡΠ½Π°Π·Π°Π΄ ΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ° ΠΏΠΎΠ·Π½Π°ΡΠ΅ Π΄ΠΎΠ±ΡΠ΅ ΡΠ°Π½ΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΡ ΠΈ Π²ΡΠ°ΡΠ°ΡΠ° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠ΅ Π³ΡΠ΅ΡΠΊΡ. βΠ€ΠΈΠΊΡΠΈΡΠ°ΡΠ΅ ΡΠ½Π°ΠΏΡΠ΅Π΄β ΡΠ΅ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠ΅ Ρ master
ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Ρ Π½ΠΎΠ²Π΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅. ΠΠΎΡΡΠΎ ΡΠ΅ ΠΠΠ-ΡΠΈ ΠΈ ΡΠ΅ΠΌΠ΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΌΠ΅ΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΡΡΠ΅ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ, ΡΠ· ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Ρ ΠΈΡΠΏΠΎΡΡΠΊΡ ΠΈ Π΄ΠΎΠ±ΡΡ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡ ΡΠ΅ΡΡΠΎΠΌ, Π²ΡΠ°ΡΠ°ΡΠ΅ ΡΠ΅ ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠ΅ ΠΈ ΡΠΈΠ·ΠΈΡΠ½ΠΈΡΠ΅ ΠΎΠ΄ ΠΏΠΎΠΏΡΠ°Π²ΡΠ°ΡΠ° Ρ ΡΠ»Π΅Π΄Π΅ΡΠΎΡ Π²Π΅ΡΠ·ΠΈΡΠΈ.
ΠΠΎΡΡΠΎ Π²ΡΠ°ΡΠ°ΡΠ΅ ΡΠ½Π°Π·Π°Π΄ Π½Π΅ Π½ΠΎΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠ°Π² ΡΠΈΠ·ΠΈΠΊ Ρ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΌΠΈ ΡΠ΅ΠΌΠΎ ΠΈΡΠΈ ΠΎΠ²ΠΈΠΌ ΠΏΡΡΠ΅ΠΌ, ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΎ Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π°
- ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Ρ ΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅;
- Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠ΄
master
ΠΎΠ΄ΠΌΠ°Ρ ΠΏΠΎΠ³ΠΎΠ΄Π°Π½ Π·Π° ΠΏΠΎΡΠ΅ΡΠ°ΠΊ Π½ΠΎΠ²ΠΎΠ³ ΠΏΠΎΡΠ»Π°.
Π’Π°ΡΠΊ
- ΠΡΠ΅Π±Π°ΡΠΈΡΠ΅ ΡΠ΅ Π½Π° Π³ΡΠ°Π½Ρ
master
Π»ΠΎΠΊΠ°Π»Π½ΠΎ. - ΠΠΆΡΡΠΈΡΠ°ΡΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΈΠ· ΡΠ΄Π°ΡΠ΅Π½ΠΎΠ³ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°.
- ΠΡΠ°ΡΠΈΡΠ΅ ΠΠ ΠΎΠ±ΡΠ΅Π΄ΠΈΡΠ°Π²Π°ΡΠ΅ ΠΡΠ΅Π³Π»Π΅Π΄ ΠΊΠΎΡΠ°ΠΊΠ° Π²
master
. - ΠΠ±ΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ Ρ ΡΠ΄Π°ΡΠ΅Π½ΠΎΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ.
ΠΠ²ΠΎ ΡΠ΅ ΠΈΡΡΠΎΡΠΈΡΠ° ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΡΠ° Π²ΡΠ°ΡΠ΅Π½ΠΈΠΌ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ΠΌ ΡΠΏΠ°ΡΠ°ΡΠ°
Π’ΠΈΠΌΠΎΠ²ΠΈ
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ master.
git checkout master
# ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠ· ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
git pull
# ΠΡΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ PR Steps review Π² master.
# ΠΡ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π²Π΅ΡΠΊΡ ΠΈΡΡΠΎΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π·Π°Ρ
ΠΎΡΠΈΠΌ ΠΎΡΡΠ°Π²ΠΈΡΡ
git show HEAD
# ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π² Π²Π΅ΡΠΊΠ΅ master Π΄ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ, Π±ΡΠ» ΠΎΡΠΎΠ±ΡΠ°ΠΆΡΠ½ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΌ
git revert HEAD -m 1
# ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
git push
Π‘Π°ΠΌΠΎΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅
Π£Π²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ci.md
Π²ΠΈΡΠ΅ Π½Π΅ ΡΠ°Π΄ΡΠΆΠΈ ΡΠ΅ΠΊΡΡ "ΡΠ½Π΅Π°ΠΊΠΈ Π±ΡΠ³" Π½Π°ΠΊΠΎΠ½ Π²ΡΠ°ΡΠ°ΡΠ° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΡΠΏΠ°ΡΠ°ΡΠ°.
ΠΠΎΠΏΡΠ°Π²ΠΈΡΠ΅ Π»ΠΈΡΡΡ ΠΊΠΎΡΠ°ΠΊΠ° Π¦Π ΠΈ Π²ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ Π½Π° ΠΌΠ°ΡΡΠ΅Ρ
ΠΠΎΡΠΏΡΠ½ΠΎ ΡΠΌΠΎ Π²ΡΠ°ΡΠΈΠ»ΠΈ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ ΡΡΠ°ΠΏΠ°ΡΠ° Π³ΡΠ°Π½Π΅. feature
. ΠΠΎΠ±ΡΠ° Π²Π΅ΡΡ ΡΠ΅ Π΄Π° ΡΠ°Π΄Π° Π½Π΅ΠΌΠ°ΠΌΠΎ Π³ΡΠ΅ΡΠΊΠ΅ master
. ΠΠΎΡΠ° Π²Π΅ΡΡ ΡΠ΅ Π΄Π° ΡΠ΅ Π½Π΅ΡΡΠ°Π»Π° ΠΈ Π½Π°ΡΠ° Π΄ΡΠ°Π³ΠΎΡΠ΅Π½Π° Π»ΠΈΡΡΠ° ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΈΡ
ΠΊΠΎΡΠ°ΠΊΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅. ΠΠ°ΠΊΠ»Π΅, Ρ ΠΈΠ΄Π΅Π°Π»Π½ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΈΡΠΏΡΠ°Π²ΠΊΡ Π½Π° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ ΠΈΠ· feature
ΠΈ Π²ΡΠ°ΡΠΈΡΠ΅ ΠΈΡ
Ρ master
Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΎΠΌ.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π½Π°ΡΠΈΠ½Π΅:
- Π²ΡΠ°ΡΠΈ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ ΠΊΠΎΡΠ΅ ΠΏΠΎΠ½ΠΈΡΡΠ°Π²Π° ΡΡΠ°ΠΏΠ°ΡΠ΅
feature
Ρmaster
; - ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΠΈΠ· ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎΠ³
feature
.
Π Π°Π·Π»ΠΈΡΠΈΡΠΈ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠΈΠΌΠΎΠ²ΠΈ Ρ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠ΅, Π°Π»ΠΈ ΠΌΠΈ ΡΠ΅ΠΌΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠΈ ΠΊΠΎΡΠΈΡΠ½Π° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° Ρ ΠΏΠΎΡΠ΅Π±Π½Ρ Π³ΡΠ°Π½Ρ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΠΏΠΎΡΠ΅Π±Π°Π½ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ Π·Π° ΠΎΠ²Ρ Π½ΠΎΠ²Ρ Π³ΡΠ°Π½Ρ.
Π’Π°ΡΠΊ
- ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½ΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ
feature-fix
ΠΈ ΠΏΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π³Π°. -
ΠΠΈΠ³ΡΠΈΡΠ°ΡΡΠ΅ ΡΠ²Π° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΠΈΠ· ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½Π΅ Π³ΡΠ°Π½Π΅
feature
Ρ Π½ΠΎΠ²Ρ Π½ΠΈΡ. Π Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ΅ ΡΠΏΠ°ΡΠ°ΡΠ° Π΄ΠΎ ΠΊΠΎΡΠΈΡ ΡΠ΅ Π΄ΠΎΡΠ»ΠΎ ΡΠΎΠΊΠΎΠΌ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ΅. -
ΠΠΎΠ΄Π°ΡΡΠ΅ ΡΠ΅ΡΡ ΡΠ΅Π³ΡΠ΅ΡΠΈΡΠ΅ Ρ
ci.test.js
:it('does not contain the sneaky bug', () => { expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false); });
- ΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π΄Π° Π±ΠΈΡΡΠ΅ Π±ΠΈΠ»ΠΈ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π° Π½Π΅ΡΠ΅ ΠΏΡΠΎΠΏΠ°ΡΡΠΈ.
- Π£ΠΊΠ»ΠΎΠ½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡ βΡΠ° ΡΠΊΡΠΈΠ²Π΅Π½ΠΎΠΌ Π³ΡΠ΅ΡΠΊΠΎΠΌβ.
ci.md
. - ΠΠΎΠ΄Π°ΡΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ ΡΠ΅ΡΡΠ° ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π΅ Π»ΠΈΡΡΠ΅ ΠΊΠΎΡΠ°ΠΊΠ° Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ ΡΡΠ΅Π·ΡΡΡΠ΅ ΠΈΡ .
- ΠΠ±ΡΠ°Π²ΠΈΡΠ΅ Π³ΡΠ°Π½Ρ Ρ ΡΠ΄Π°ΡΠ΅Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅.
Π’ΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π·Π°Π²ΡΡΠΈΡΠ΅ ΡΠ° Π½Π΅ΡΠΈΠΌ ΡΠ»ΠΈΡΠ½ΠΈΠΌ ΠΎΠ²ΠΎΠΌΠ΅:
Π’ΠΈΠΌΠΎΠ²ΠΈ
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ feature-fix ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π½Π΅Π΅.
git checkout -b feature-fix
# ΠΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΈΠ· Π±ΡΠ²ΡΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ feature Π² Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ. Π Π°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅.
# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡΡΠΎΡΠΈΡ ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Ρ
ΡΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²:
# - ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΡΡ ΡΠΏΠΈΡΠΊΠ°: C0
# - Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ°: C2
git log --oneline --graph
git cherry-pick C0..C2
# ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ
# - ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.md ΠΈ/ΠΈΠ»ΠΈ ci.test.js
# - Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΈΠ½Π΄Π΅ΠΊΡ
# - Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ "git cherry-pick --continue", ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΠ°
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡ Π² ci.test.js
# ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
# Π£Π΄Π°Π»ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡ " with a sneaky bug" Π² ci.md.
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² ΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ°Π³ΠΎΠ² ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΡ
.
git add ci.md ci.test.js
git commit -m "Fix the bug in steps list"
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ Π²Π΅ΡΠΊΡ Π² ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
git push --set-upstream origin feature-fix
ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅.
ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°Ρ
ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ ΡΠ° Π½Π°ΡΠ»ΠΎΠ²ΠΎΠΌ ΠΠΎΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅... ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ feature-fix
ΠΏΠΎΠΏΡΡ βΠ³Π»Π°Π²Π½Π΅ Π³ΡΠ°Π½Π΅β ΠΈ master
ΠΏΠΎΠΏΡΡ "ΠΎΡΠ½ΠΎΠ²Π½Π΅ Π³ΡΠ°Π½Π΅".
Π‘Π°ΡΠ΅ΠΊΠ°ΡΡΠ΅ Π΄ΠΎΠΊ ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π°Π²ΡΡΠ΅. Π‘ΡΠ°ΡΡΡ ΡΠ΅ΡΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π½Π° Π΄Π½Ρ ΠΠ Π΄ΠΈΡΠΊΡΡΠΈΡΠ΅.
Π£Π²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ
master
Ρ ΡΠ΅Π³ΠΎΠ²ΠΎΡ ΡΠΎΡΠΊ ΡΡ Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌ ΠΠ°ΠΎ βΠΎΡΠ½ΠΎΠ²Π½Π° Π³ΡΠ°Π½Π°β, Π½Π΅ΡΡ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΠΈ Π½Π° Π·Π°Ρ ΡΠ΅Π²Π΅ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° Π·Π° ΠΊΡΡΡ.
ΠΠ΄ΠΎΠ±ΡΠΈ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ βΠΠΎΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅β
Π₯Π²Π°Π»Π° Π½Π° ΠΈΡΠΏΡΠ°Π²ΡΠΈ! ΠΠΎΠ»ΠΈΠΌΠΎ Π²Π°Ρ Π΄Π° ΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρ master
ΠΈΠ· Π·Π°Ρ
ΡΠ΅Π²Π° Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅.
Π’Π°ΡΠΊ
- ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° βΠ‘ΠΏΠΎΡΠΈ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅β.
- ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° βΠΠΎΡΠ²ΡΠ΄ΠΈ ΡΠΏΠ°ΡΠ°ΡΠ΅β.
- ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° βΠΠ·Π±ΡΠΈΡΠΈ Π³ΡΠ°Π½Ρβ ΡΠ΅Ρ Π½Π°ΠΌ Π²ΠΈΡΠ΅ Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π°.
ΠΠ²ΠΎ ΡΠ΅ ΠΎΠ½ΠΎ ΡΡΠΎ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Ρ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ.
Π§Π΅ΡΡΠΈΡΠ°ΠΌΠΎ!
ΠΠ°Π²ΡΡΠΈΠ»ΠΈ ΡΡΠ΅ ΡΠ²Π΅ ΠΊΠΎΡΠ°ΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΡΠ΄ΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ·ΠΈΠΌΠ°ΡΡ ΡΠΎΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅.
ΠΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΡΠ° ΠΊΡΡΡΠΎΠΌ ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³Π° ΠΏΠΎΠ±ΠΎΡΡΠ°ΡΠ΅, ΠΌΠΎΠ»ΠΈΠΌΠΎ Π²Π°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ