Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull

Git для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π£Ρ€ΠΎΠΊ 6.
git push ΠΈ git pull

Π’ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ

ΠšΠΎΠ½ΡΠΏΠ΅ΠΊΡ‚ ΡƒΡ€ΠΎΠΊΠ°

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ содСрТаниС ΡƒΡ€ΠΎΠΊΠ°, основныС инструкции для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки ΠΈ совСты.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ создавали Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° github ΠΈ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…. ПослС этого ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ, Π½Π° своСй машинС. БСгодня ΠΌΡ‹ рассмотрим взаимодСйствиС с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ push (ΠΏΡƒΡˆ)

Π—Π°Ρ‡Π΅ΠΌ ΠΏΡƒΡˆΠΈΡ‚ΡŒ Π½Π° сСрвСр

Когда ΠΏΡƒΡˆΠΈΡ‚ΡŒ Π½Π° сСрвСр

Когда сдСлали Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ»ΠΈ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅Π·Π°ΠΏΡƒΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹

Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½Π°Π±Ρ€Π°Ρ‚ΡŒ git status

ΠšΠ»ΡŽΡ‡Π΅Π²Π°Ρ Ρ„Ρ€Π°Π·Π° здСсь «Your branch is ahead of ‘origin/master’ by 5 commits.». Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ 5 Π½Π΅ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° сСрвСр ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Если Π½Π΅Π·Π°ΠΏΡƒΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ такая

«is up-to-date» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ нас Π½Π΅Ρ‚ Π½Π΅Π·Π°ΠΏΡƒΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

master ΠΈ origin/master

git push Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅

Как ΠΏΡƒΡˆΠΈΡ‚ΡŒ Π² PhpStorm

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ pull (ΠΏΡƒΠ»Π»)

Π­Ρ‚ΠΎ скачиваниС Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСра. ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория, Π½ΠΎ с Ρ‚ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠ²Ρ‹Π΅.

Π—Π°Ρ‡Π΅ΠΌ ΠΏΡƒΠ»ΠΈΡ‚ΡŒΡΡ с сСрвСра

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ измСнСния ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³. Или ΠΎΡ‚ сСбя самого, Ссли Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…

git pull Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅

Как ΠΏΡƒΠ»ΠΈΡ‚ΡŒ Π² PhpStorm

Когда Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ.

Иногда ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git push ΠΈ git pull ΠΌΠΎΠ³ΡƒΡ‚ вСсти сСбя Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΈΡˆΡƒΡ‚ Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°Ρ…. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

git push rejected

Π’Ρ‹ сдСлали Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π° git Π² ΠΎΡ‚Π²Π΅Ρ‚ Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅

Написано ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΡΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½, ΠΏΡƒΡˆ Π½Π΅ ΠΏΡ€ΠΎΡˆΠ΅Π». ΠŸΠΎΡ‡Π΅ΠΌΡƒ?

Git устроСн Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ локально ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свои ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π° сСрвСр, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с сСрвСра. Π’Π΅ самыС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ успСли ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ наши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git pull.

ВсС, наши ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π° сСрвСрС. ΠŸΡ€ΠΈ этом появится странный ΠΊΠΎΠΌΠΌΠΈΡ‚ «Merge branch ‘master’ of github.com:Webdevkin/site-git». Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ€Π΄ΠΆ-ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΎ Π½Π΅ΠΌ Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅.

Если ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΡƒΡˆΠ° Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½Π° сСрвСрС Π½Π΅Ρ‚, Ρ‚ΠΎ git push ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ сразу ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ наши ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π° сСрвСр.

Как ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΠ΅Ρ€Π΄ΠΆ-ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

ΠœΠ΅Ρ€Π΄ΠΆ-ΠΊΠΎΠΌΠΌΠΈΡ‚ появляСтся, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ сдСлали Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π° послС этого подтянули Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с сСрвСра. ΠœΠ΅Ρ€Π΄ΠΆ-ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ нСсСт смысловой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ самого Ρ„Π°ΠΊΡ‚Π° ΠΌΠ΅Ρ€Π΄ΠΆΠ°. Π‘Π΅Π· Π½Π΅Π³ΠΎ история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² выглядит Ρ‡ΠΈΡ‰Π΅.

ΠŸΡ€ΠΈ этом ваш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ окаТСтся «ΠΏΠΎΠ²Π΅Ρ€Ρ…» Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° с сСрвСра, Π° ΠΌΠ΅Ρ€Π΄ΠΆ-ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. И Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ послС этого Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ свой ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π° сСрвСр.

ΠœΠ΅Ρ€Π΄ΠΆ-ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² PhpStorm

PhpStorm ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΠ΅Ρ€Π΄ΠΆ-ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· мСньшСС количСство дСйствий. Если ΠΌΡ‹ Π·Π°ΠΏΡƒΡˆΠΈΠΌ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ rejected ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° сСрвСрС Π΅ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Ρ‚ΠΎ PhpStorm выдаст ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, с ΠΌΠ΅Ρ€ΠΆΠ΄Π΅ΠΌ ΠΈΠ»ΠΈ Ρ€Π΅Π±Π΅ΠΉΠ·ΠΎΠΌ. Π–ΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Rebase», ΠΌΠ΅Ρ€Π΄ΠΆ-ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΈ этом Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ сразу Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡΡ Π½Π° сСрвСр.

Π§Ρ‚ΠΎ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ

Если ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΡƒ, Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сохранСния Ρ€Π΅Π·Π΅Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π² Π½Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΡˆΠΈΡ‚ΡŒ.

Но ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π½Π°Π΄ Ρ‚Π°ΠΊΠΈΠΌΠΈ Π²Π΅Ρ‰Π°ΠΌΠΈ:

НС ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅, Ссли ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ сСбя, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ·ΡŒΡ Π½ΠΈΠΆΠ΅. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎΠ²Ρ‹ΠΉ инструмСнт Π½Π΅ осваиваСтся Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚. НСмного ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, ΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° git Π²Π΅Π΄Π΅Ρ‚ сСбя Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ хочСтся, ΠΈ Π³Π»Π°Π²Π½ΠΎΠ΅, Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ. Π’Π°ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git push ΠΈ git pull, ΠΈ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

September 01, 2014

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ для сСбя возмоТности систСмы Git ΠΈ сСрвиса GitHub.

Π£ΠΆΠ΅ сСйчас, обладая ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ знаниями Git ΠΈ владСя ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью Π½Π° сСрвСрС GitHub, я Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ, ΠΊΠ°ΠΊ я ΠΌΠΎΠ³ ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅ Π±Π΅Π· ΠΎΠ±ΠΎΠΈΡ… этих Π²Π΅Ρ‰Π΅ΠΉ. Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ!

Напомню, Ρ‡Ρ‚ΠΎ Π² Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Для этой Ρ†Π΅Π»ΠΈ сущСствуСт (ΠΈ я Сю воспользовался) ΠΊΠΎΠΌΠ°Π½Π΄Π° push (ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ). К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ я внСсу Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽ ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽ ΠΈΡ…, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡŽ Π½Π° GitHub:

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΊΠΎΠΌΠ°Π½Π΄Π° pull Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull

Π’ Π²Ρ‹Π²ΠΎΠ΄Π΅ консоли (Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅) Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ README.md, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΄Π²Π΅ строки.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² считанныС сСкунды я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ копию Ρ‚ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π΄ΠΎΠΌΠ°. И ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ с Ρ‚ΠΎΠ³ΠΎ мСста, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ остановился.

Команда pull ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ patch рСпозитория ΠΈ автоматичСски ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ слияниС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΈ локальной Π²Π΅Ρ‚Π²Π΅ΠΉ рСпозитория. Если ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ слияния, Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² этом случаС слияния Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ придСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Команда fetch Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ patch ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория. Но ΠΏΡ€ΠΈ этом автоматичСского слияния Π²Π΅Ρ‚Π²Π΅ΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ локального Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π½Π΅ происходит:

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ слияниС ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ слиянии я Π΅Ρ‰Π΅ Π½Π΅ ΡƒΠΌΠ΅ΡŽ, поэтому вопрос, ΠΊΠ°ΠΊ произвСсти слияниС Π²Π΅Ρ‚Π²Π΅ΠΉ послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git fetch я ΠΎΠΏΡƒΡ‰Ρƒ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚. БСгодня ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ с Π²Π°ΠΌΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git pull ΠΈ git push. Π‘Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ git pull. Π”ΠΎ этого ΠΌΡ‹ с Π²Π°ΠΌΠΈ писали ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git pull ΠΈ всС Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ эта ΠΊΠΎΠΌΠ°Π½Π΄Π°? Π’Π½ΡƒΡ‚Ρ€ΠΈ сСбя Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ½Π° выполняСт Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Команда git fetch сливаСт всС Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² нашСм remote Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. ВсС Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρƒ нас Π½Π΅Ρ‚ ΠΎΠ½Π° сливаСт, Π½ΠΎ Π½Π΅ примСняСт Π² наши Π²Π΅Ρ‚ΠΊΠΈ. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСзбоязнСнно Π΄Π°ΠΆΠ΅ Π½Π΅ думая, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ поломаСтся. И ΠΏΠΎΡ‚ΠΎΠΌ git merge ΠΌΠ΅Ρ€Π΄ΠΆΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠΎΠΉ ΠΈΠ· рСпозитория.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π² ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅ΠΌΠΎΡƒΡ‚ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ ΠΈ Π½Π° ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π³ΠΈΡ‚ настроСн Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° git push ΠΏΡƒΡˆΠΈΡ‚ Π² Π²Π΅Ρ‚ΠΊΡƒ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π° сСрвСрС, Π° Ссли Π΅Π΅ Π½Π΅Ρ‚ Ρ‚ΠΎ создаСт Π΅Π΅.

ΠžΡ‡Π΅Π½ΡŒ часто с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ записью pull ΠΈ push Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° вываливаСтся с ошибкой, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ Π·Π½Π°Π΅Ρ‚ с ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅ΠΌΠΎΡƒΡ‚ Π²Π΅Ρ‚ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ

Π’Π΅Ρ‚ΠΊΠ° Π·Π°ΠΏΡƒΡˆΠΈΠ»Π°ΡΡŒ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ссли ΠΌΡ‹ напишСм git pull, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π³ΠΈΡ‚ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅ΠΌΠΎΡƒΡ‚ Π²Π΅Ρ‚ΠΊΠ΅ соотвСтствуСт эта локальная Π²Π΅Ρ‚ΠΊΠ°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ это всСгда ΠΏΠΈΡΠ°Ρ‚ΡŒ

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ это ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для этой Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ всСгда Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡƒΠ»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

ПослС выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ спокойно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git pull ΠΈ ошибок Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

GitOps: сравнСниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Pull ΠΈ Push

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Π’ сообщСствС Kubernetes ΡΠ²Π½ΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚Ρ€Π΅Π½Π΄ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ GitOps, Π² Ρ‡Ρ‘ΠΌ ΠΌΡ‹ Π»ΠΈΡ‡Π½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, посСтив KubeCon Europe 2019. Π­Ρ‚ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π±Ρ‹Π» ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ Π³Π»Π°Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Weaveworks β€” Alexis Richardson β€” ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² инструмСнтов (Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ β€” Git, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΈ само Π½Π°Π·Π²Π°Π½ΠΈΠ΅) для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ эксплуатации. Π’ частности, Ρ€Π΅Ρ‡ΡŒ ΠΎΠ± эксплуатации Kubernetes Ρ‡Π΅Ρ€Π΅Π· Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π² Git ΠΈ автоматичСского Π²Ρ‹ΠΊΠ°Ρ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² кластСр. О Π΄Π²ΡƒΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°Ρ… ΠΊ этому Π²Ρ‹ΠΊΠ°Ρ‚Ρƒ ΠΈ рассказываСт Matthias Jg Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρƒ (Π½Π° самом Π΄Π΅Π»Π΅, Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π² августС 2017 Π³. β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².) появился Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes. Он называСтся GitOps, Π° Π² Π΅Π³ΠΎ основС Π»Π΅ΠΆΠΈΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ отслСТиваниС вСрсий deployment’ΠΎΠ² вСдСтся Π² бСзопасной срСдС Git-рСпозитория.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСимущСства Ρƒ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

Бпособы развСртывания

Π—Π° послСдниС Π³ΠΎΠ΄Ρ‹ Π² Kubernetes ΡƒΡΡ‚ΠΎΡΠ»ΠΈΡΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΈ инструмСнты для Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ:

Pull & Push

Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· своих Π½Π΅Π΄Π°Π²Π½ΠΈΡ… ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Π±Π»ΠΎΠ³Π΅ я прСдставил инструмСнт Weave Flux, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ deployment послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΠ»ΠΈ push’Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Мой ΠΎΠΏΡ‹Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ этот инструмСнт β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· основных Π² Π΄Π΅Π»Π΅ продвиТСния pull-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, поэтому Π±ΡƒΠ΄Ρƒ часто ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ. Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π²ΠΎΡ‚ ссылка Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡŽ.

NB! ВсС прСимущСства использования GitOps ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ для ΠΎΠ±ΠΎΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ².

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π° основС Pull

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull

Π’ основС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° pull Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ всС измСнСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ кластСра. Π’Π½ΡƒΡ‚Ρ€ΠΈ кластСра Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рСгулярно провСряСт связанныС Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Git ΠΈ Docker Registry. Если Π² Π½ΠΈΡ… происходят ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ измСнСния, состояниС кластСра обновляСтся ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ считаСтся, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ процСсс вСсьма бСзопасСн, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΈ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ внСшнСго ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π΅Ρ‚ доступа ΠΊ ΠΏΡ€Π°Π²Π°ΠΌ администратора кластСра.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π° основС Push

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull

Π’ push-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ внСшняя систСма (прСимущСствСнно CD-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹) запускаСт развСртывания Π² кластСр послС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ»ΠΈ Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ CI-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°. Π’ этом ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ систСма ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ доступом Π² кластСр.

Π˜Ρ‚ΠΎΠ³ΠΈ: Push ΠΈΠ»ΠΈ Pull?

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Π±Ρ‹Π²Π°Π΅Ρ‚, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы. НСкоторыС Π·Π°Π΄Π°Ρ‡ΠΈ Π»Π΅Π³Ρ‡Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ слоТнСС β€” с Π΄Ρ€ΡƒΠ³ΠΈΠΌ. ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ я ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ» развСртывания Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½ΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ наткнулся Π½Π° нСсколько статСй ΠΎ Weave Flux, Ρ€Π΅ΡˆΠΈΠ» Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ GitOps-процСссы для всСх ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Для Π±Π°Π·ΠΎΠ²Ρ‹Ρ… шаблонов это оказалось Π»Π΅Π³ΠΊΠΎ, Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ я Π½Π°Ρ‡Π°Π» ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ с трудностями Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Helm-Ρ‡Π°Ρ€Ρ‚Π°ΠΌΠΈ. Π’ Ρ‚ΠΎ врСмя Weave Flux ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‡Π°Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Helm Chart Operator, Π½ΠΎ Π΄Π°ΠΆΠ΅ сСйчас Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ слоТнСС ΠΈΠ·-Π·Π° нСобходимости Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сСкрСты ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ pull-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ кластСра нСдоступны Π·Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ, Π° это Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ стоит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий.

ΠŸΠΎΡ€Π°Π·ΠΌΡ‹ΡΠ»ΠΈΠ² Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, я ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ. Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… максимальной Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Π² Ρ‚Π°ΠΊΠΎΠΉ список Π²ΠΎΠΉΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° сСкрСтов ΠΈ CI/CD-систСмы, Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΈΡ… вСсьма уязвима ΠΈ нуТдаСтся Π² максимальной Π·Π°Ρ‰ΠΈΡ‚Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½Π΅Ρ‚ Π² ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git ΠΈ смоТСт push’ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° ΠΊΠΎΠ΄, Ρ‚ΠΎ ΠΎΠ½ смоТСт Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΆΠ΅Π»Π°Π΅Ρ‚ (нСзависимо ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, Π±ΡƒΠ΄Π΅Ρ‚ это pull ΠΈΠ»ΠΈ push), ΠΈ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒΡΡ Π² систСмы кластСра. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ CI/CD-систСмы, Π° Π½Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ кластСра. Если Ρƒ вас Ρ…ΠΎΡ€ΠΎΡˆΠΎ настроСны ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ ΠΌΠ΅Ρ€Ρ‹ бСзопасности для систСм Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π° ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ кластСра ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π²ΠΈΠ΄Π΅ сСкрСтов, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ pull-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ Ρ†Π΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ.

Π˜Ρ‚Π°ΠΊ, Ссли pull-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ ΠΈ Π½Π΅ Π΄Π°Π΅Ρ‚ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ° Π² бСзопасности, Π½Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ push-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄? Но вСдь ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΡΠ²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² push-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π²Ρ‹ слишком завязаны Π½Π° CD-систСму ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ.

На ΠΌΠΎΠΉ взгляд (ΠΊΠ°ΠΊ ΠΈ всСгда), слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π›ΠΈΡ‡Π½ΠΎ я ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ ΠΎΠ±ΠΎΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ: Weave Flux для deployment’ΠΎΠ² Π½Π° основС pull, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² основном Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ наши собствСнныС сСрвисы, ΠΈ push-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с Helm’ΠΎΠΌ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Helm-Ρ‡Π°Ρ€Ρ‚ΠΎΠ² ΠΊ кластСру ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сСкрСты. Π”ΡƒΠΌΠ°ΡŽ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, подходящСго для всСх случаСв, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ нюансов всСгда ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΠ½ΠΈ зависят ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° примСнСния. ΠŸΡ€ΠΈ этом я Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ GitOps β€” ΠΎΠ½ сильно ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Тизнь ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

НадСюсь, ΠΌΠΎΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСго Ρ‚ΠΈΠΏΠ° deployment’ΠΎΠ², Π° я Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΡƒΠ·Π½Π°Ρ‚ΡŒ вашС ΠΌΠ½Π΅Π½ΠΈΠ΅.

P.S. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

Π’ минусах pull-ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ ΠΏΡ€ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ слоТно ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² Git ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ манифСсты, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅Ρ‚ минуса, Ρ‡Ρ‚ΠΎ CD-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π² pull-ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΆΠΈΠ²Ρ‘Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Π²Ρ‹ΠΊΠ°Ρ‚Π° ΠΈ ΠΏΠΎ сути становится ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠΌ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Continuous Apply. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ потрСбуСтся Π΅Ρ‰Ρ‘ большС усилий для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ со всСх deployment’ΠΎΠ² ΠΈΡ… статус ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π΄Π°Π²Π°Ρ‚ΡŒ доступ ΠΊ Π»ΠΎΠ³Π°ΠΌ/статусу, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с привязкой ΠΊ CD систСмС.

Π’ этом смыслС push-модСль позволяСт Π΄Π°Ρ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Π²Ρ‹ΠΊΠ°Ρ‚Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ врСмя ΠΆΠΈΠ·Π½ΠΈ pipeline’Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π²Π½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ Π²Ρ‹ΠΊΠ°Ρ‚Π°.

ΠœΡ‹ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΎΠ±Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Π°Π²Ρ‚ΠΎΡ€ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Git push, git pull, git fetch β€” Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°? Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ git-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΈ git pull

Git β€” это распрСдСлСнная систСма контроля вСрсий. Она позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΠΎ всСх измСнСниях ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠ°ΠΏΠΊΠ°Ρ… Π½Π° ТСстком дискС ΠΈ обСспСчиваСт ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Git push

Команда git push Π² Ρ…ΠΎΠ΄Π΅ выполнСния пСрСносит всС измСнСния, внСсСнныС ΡŽΠ·Π΅Ρ€ΠΎΠΌ, Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ GitHub):

ВынуТдСнная ΠΊΠΎΠΌΠ°Π½Π΄Π° push ΠΏΡ€ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:

Git pull

Команда git pull ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° скачиваниС Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСра. ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория, Π½ΠΎ здСсь ΡΠΊΠ°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠ²Ρ‹Π΅.

По сути, git pull β€” это сочСтаниС ΠΊΠΎΠΌΠ°Π½Π΄ git fetch (Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ссылки, Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ) ΠΈ git merge (ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ).

Git pull для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ

Git fetch

Бинхронизация с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git fetch origin

Π­Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Π²Π΅Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹:

Git merge

Команда git merge связываСт ряд ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ git создаСт ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния, Π³Π΄Π΅ ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ измСнСния ΠΎΠ±Π΅ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ.

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π² слиянии

По Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ слияния, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git add : Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ ΠΏΡ€ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π°. Π’Π°ΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ допустимы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² трСхслойном слиянии ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ ускорСнном.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ git

Условно говоря, git pull – это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠ°Π½Π΄: git fetch (ΠΏΡ€ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚ сСрвСра) ΠΈ git merge (слияниС).

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, git push пСрСносит Π²Π΅Ρ‚Π²ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, Π° git merge β€” ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ измСнСния ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ git-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ

git init β€” созданиС Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²;

git clone β€” ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория;

git rm β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°;

git log β€” просмотр истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²;

git branch
β€” созданиС Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ;

git branch –d
β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ;

git merge
β€” слияниС Π²Π΅Ρ‚ΠΎΠΊ;

git push
β€” ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π²Π΅Ρ‚ΠΊΠΈ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр;

git push :
β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС;

git tag β€” просмотр ΠΌΠ΅Ρ‚ΠΎΠΊ;

git push β€” ΠΎΠ±ΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ;

git remote β€” ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²;

git pull
β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΈ слияниС с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ;

git push
β€” ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *