Π‘ΡΠΊΠΎΠ½ΠΎΠΌΡŒΡ‚Π΅ 15% Π½Π° всСх хостинговых услугах

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ свои Π½Π°Π²Ρ‹ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ скидку Π½Π° любой Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills ΠΠ°Ρ‡Π°Ρ‚ΡŒ
Π ΡƒΠ±Ρ€ΠΈΠΊΠΈ
Linux

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Git Push: ПолноС руководство для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

Git β€” это основа соврСмСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π² распрСдСлённой ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, освоСниС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π­Ρ‚ΠΎ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ руководство ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Ρ‚ вас Ρ‡Π΅Ρ€Π΅Π· всё, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ β€” ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ синтаксиса Π΄ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ своими рСпозиториями.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Git Push ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ?

Команда git push Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ вашСго локального рСпозитория Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, дСлая ваши измСнСния Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΈ доступными для ΠΊΠΎΠ»Π»Π΅Π³, CI/CD-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² ΠΈ срСд развёртывания. Π‘Π΅Π· Π½Π΅Ρ‘ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ вашС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ остаётся ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π½Π° вашСй локальной машинС.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ваш Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚:

  1. ИзмСнСниС Ρ„Π°ΠΉΠ»ΠΎΠ² локально
  2. Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
  3. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΈΡ… Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ (GitHub, GitLab, Bitbucket ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ Git-сСрвСр)

Команда git push β€” это мост ΠΌΠ΅ΠΆΠ΄Ρƒ вашСй локальной Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΈ ΠΎΠ±Ρ‰ΠΈΠΌ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌ состояниСм. Π“Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π΅Ρ‘ β€” Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π»Π°Π³ΠΈ, ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ случаи ΠΈ Ρ€Π΅ΠΆΠΈΠΌΡ‹ сбоСв β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ junior-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°.

> Π‘ΠΎΠ²Π΅Ρ‚ ΠΏΠΎ хостингу: Если Π²Ρ‹ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π½Π° основС Git Π½Π° ΠΆΠΈΠ²ΠΎΠΌ сСрвСрС, Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ срСду. VPS-хостинг AlexHost прСдоставляСт ΠΏΠΎΠ»Π½Ρ‹ΠΉ root-доступ, SSD-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ для настройки Git-Ρ…ΡƒΠΊΠΎΠ², Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… сСрвСрных срСд.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Git Push

Основной синтаксис прост:

git push <remote> <branch>
  • <remote> β€” Имя ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория. По соглашСнию, ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ называСтся origin.
  • <branch> β€” Имя Π²Π΅Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ main, master ΠΈΠ»ΠΈ любая feature-Π²Π΅Ρ‚ΠΊΠ°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

git push origin main

Π­Ρ‚ΠΎ отправляСт Π²Π°ΡˆΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ main Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ origin.

ПошаговоС руководство ΠΏΠΎ использованию Git Push

Π¨Π°Π³ 1: Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½

ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ всСгда синхронизируйтС Π²Π°ΡˆΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git pull для получСния ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ послСдних ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

git pull origin main

Π­Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ послСдниС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ main Π½Π° origin ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΡ… с вашСй Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ локальной Π²Π΅Ρ‚ΠΊΠΎΠΉ. ΠŸΡ€ΠΎΠΏΡƒΡΠΊ этого шага являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённых ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ ΠΈ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ².

Π¨Π°Π³ 2: Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ зафиксируйтС ваши измСнСния

Git Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного индСксирования ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ.

Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹:

git add .

. (Ρ‚ΠΎΡ‡ΠΊΠ°) добавляСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΉ ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ индСксирования. Для индСксирования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²:

git add path/to/specific-file.js

ЗафиксируйтС проиндСксированныС измСнСния с ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сообщСниСм:

git commit -m "Add user authentication feature with JWT support"

Π₯ΠΎΡ€ΠΎΡˆΠΎ написанноС сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ критичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Оно Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ *Ρ‡Ρ‚ΠΎ* измСнилось ΠΈ *ΠΏΠΎΡ‡Π΅ΠΌΡƒ*, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ *ΠΊΠ°ΠΊ*. Π­Ρ‚ΠΎ становится бСсцСнным ΠΏΡ€ΠΈ просмотрС истории, ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ рСгрСссий ΠΈΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π² курс Π΄Π΅Π»Π° Π½ΠΎΠ²Ρ‹Ρ… Ρ‡Π»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π¨Π°Π³ 3: ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ измСнСния Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

ПослС локального ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΈΡ… Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ сСрвСр:

git push origin main

Git Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ с ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌ сСрвСром, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ ΠΏΡ€Π°Π²Π° доступа ΠΊ Π²Π΅Ρ‚ΠΊΠ΅ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ (Π΄Π΅Π»ΡŒΡ‚Π°-сТатиС Π΄Π΅Π»Π°Π΅Ρ‚ это эффСктивным Π΄Π°ΠΆΠ΅ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²).

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄:

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 320 bytes | 320.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
To https://github.com/username/repository.git
   a1b2c3d..e4f5g6h  main -> main

Π¨Π°Π³ 4: ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ сСрвСр

Когда Π²Ρ‹ создаётС Π½ΠΎΠ²ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Сю, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‘ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ сСрвСр Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ:

git checkout -b feature/user-authentication

ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ сСрвСр:

git push origin feature/user-authentication

ПослС этого Π²Π΅Ρ‚ΠΊΠ° сущСствуСт Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрС, ΠΈ ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΅Ρ‘ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ pull request ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π½Π΅Ρ‘.

Π¨Π°Π³ 5: УстановитС ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ upstream

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ указания ΠΈΠΌΠ΅Π½ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ сСрвСра ΠΈ Π²Π΅Ρ‚ΠΊΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„Π»Π°Π³ -u (ΠΈΠ»ΠΈ --set-upstream):

git push -u origin feature/user-authentication

ПослС ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈΠ· этой Π²Π΅Ρ‚ΠΊΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ:

git push

Git Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ связь с upstream ΠΈ автоматичСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΠΌΠΈ feature-Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

Π¨Π°Π³ 6: ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ с ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ

Иногда Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ. РаспространённыС сцСнарии Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • ПослС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ rebase, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСписываСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²
  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² feature-Π²Π΅Ρ‚ΠΊΡƒ
  • Бброс Π²Π΅Ρ‚ΠΊΠΈ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ состояния

Бтандартная ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ°:

git push --force origin main

> ⚠️ ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: --force пСрСзаписываСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ. Π›ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² вашСй локальной Π²Π΅Ρ‚ΠΊΠ΅, Π±ΡƒΠ΄ΡƒΡ‚ Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ потСряны для всСх участников. Никогда Π½Π΅ выполняйтС ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π² ΠΎΠ±Ρ‰ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ main ΠΈΠ»ΠΈ develop, Π±Π΅Π· согласия ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π‘ΠΎΠ»Π΅Π΅ бСзопасная Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° β€” force with lease:

git push --force-with-lease origin main

--force-with-lease β€” Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ бСзопасный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Он Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π½ΠΈΠΊΡ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° вашСго послСднСго получСния. Если ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с ошибкой, защищая Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π¨Π°Π³ 7: ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ‚Π΅Π³ΠΎΠ² Git

Π’Π΅Π³ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅, Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² истории вашСго рСпозитория β€” ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π΅Π»ΠΈΠ·Ρ‹ вСрсий. Они Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ автоматичСски вмСстС с git push; ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ явно.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚Π΅Π³:

git tag -a v2.0.0 -m "Release version 2.0.0 β€” stable production build"

ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚Π΅Π³:

git push origin v2.0.0

ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ сразу:

git push origin --tags

ИспользованиС Ρ‚Π΅Π³ΠΎΠ² сСмантичСского вСрсионирования (v1.0.0, v1.1.0, v2.0.0) являСтся ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённой Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ, которая Ρ…ΠΎΡ€ΠΎΡˆΠΎ интСгрируСтся с CI/CD-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌΠΈ ΠΈ рССстрами ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

ΠŸΠΎΠ»Π½Ρ‹ΠΉ справочник: ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Ρ„Π»Π°Π³ΠΈ Git Push

Π€Π»Π°Π³ / ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€
-u / --set-upstreamБвязываСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΎΡ‚ΠΏΡ€Π°Π²ΠΎΠΊgit push -u origin main
--allΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ сСрвСрgit push --all origin
--tagsΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ сСрвСрgit push origin --tags
--deleteУдаляСт Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ»ΠΈ Ρ‚Π΅Π³ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрСgit push origin --delete old-feature
--forceΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ (опасно)git push --force origin main
--force-with-leaseΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ отсутствии Π½ΠΎΠ²Ρ‹Ρ… ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²git push --force-with-lease origin main
--dry-runΠ˜ΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π±Π΅Π· фактичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎgit push --dry-run origin main
--verboseΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π²ΠΎ врСмя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈgit push --verbose origin main
--no-verifyΠŸΡ€ΠΎΠΏΡƒΡΠΊΠ°Π΅Ρ‚ pre-push Ρ…ΡƒΠΊΠΈgit push --no-verify origin main

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ

Когда feature-Π²Π΅Ρ‚ΠΊΠ° Π±Ρ‹Π»Π° слита ΠΈ большС Π½Π΅ Π½ΡƒΠΆΠ½Π°, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Π΅Ρ‘ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрС:

git push origin --delete feature/user-authentication

Π­Ρ‚ΠΎ удаляСт Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория, Π½Π΅ затрагивая Π²Π°ΡˆΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ копию. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ сСрвСра Π² чистотС ΠΎΡ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ сниТаСт ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Π³ΠΈΠ³ΠΈΠ΅Π½Ρƒ рСпозитория.

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² нСсколько ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссах β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π·Π΅Ρ€ΠΊΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ рСпозитория ΠΈΠ»ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… срСдах β€” Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² ΠΎΠ΄ΠΈΠ½ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

git remote add staging ssh://user@staging-server.com/repo.git

ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π² ΠΎΠ±Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… рСпозитория:

git push origin main
git push staging main

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ настройтС Git для ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π² нСсколько ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ push URL Π² .git/config.

> Π‘ΠΎΠ²Π΅Ρ‚ ΠΏΠΎ инфраструктурС: Для ΠΊΠΎΠΌΠ°Π½Π΄, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… нСсколькими срСдами развёртывания, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ сСрвСры AlexHost ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ инфраструктуру, идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ для staging- ΠΈ production-Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² с ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ Π½Π°Π΄ доступом, ΡΠ΅Ρ‚ΡŒΡŽ ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ.

РаспространённыС ошибки Git Push ΠΈ способы ΠΈΡ… устранСния

Ошибка: Β«rejected β€” non-fast-forwardΒ»

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Удалённая Π²Π΅Ρ‚ΠΊΠ° содСрТит ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² вашСй локальной Π²Π΅Ρ‚ΠΊΠ΅.

РСшСниС: Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ pull, Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ всС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ push:

git pull origin main
# Resolve conflicts if any
git push origin main

Ошибка: «Permission denied (publickey)»

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Π’Π°Ρˆ SSH-ΠΊΠ»ΡŽΡ‡ настроСн Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ сСрвис.

РСшСниС: Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваш SSH-ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π²Π°ΡˆΡƒ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись GitHub/GitLab ΠΈ Ρ‡Ρ‚ΠΎ ваш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ SSH-Π°Π³Π΅Π½Ρ‚ Π΅Π³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»:

ssh-add ~/.ssh/id_ed25519
ssh -T git@github.com

Ошибка: «remote: Repository not found»

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: URL ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория Π½Π΅Π²Π΅Ρ€Π΅Π½ ΠΈΠ»ΠΈ Ρƒ вас нСдостаточно ΠΏΡ€Π°Π² доступа.

РСшСниС: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ URL ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория:

git remote -v
git remote set-url origin https://github.com/correct-username/correct-repo.git

Ошибка: «Updates were rejected because the tip of your current branch is behind»

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Аналогично non-fast-forward; ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π² Π²Π΅Ρ‚ΠΊΡƒ послС вашСго послСднСго pull.

РСшСниС: ВсСгда выполняйтС pull ΠΏΠ΅Ρ€Π΅Π΄ push:

git fetch origin
git rebase origin/main
git push origin main

ИспользованиС rebase вмСсто merge сохраняСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΈ чистой.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Git Push Π² ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… срСдах

1. ВсСгда выполняйтС pull ΠΏΠ΅Ρ€Π΅Π΄ push

Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ git pull --rebase origin main ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ любой ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ. Π­Ρ‚ΠΎ сохраняСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ чистой ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ слияния.

2. ΠŸΠΈΡˆΠΈΡ‚Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ спСцификации Conventional Commits:

feat: add JWT-based user authentication
fix: resolve null pointer exception in payment module
docs: update API endpoint documentation

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π²Π΅Ρ‚ΠΎΠΊ

На GitHub, GitLab ΠΈΠ»ΠΈ Bitbucket настройтС Π·Π°Ρ‰ΠΈΡ‚Ρƒ Π²Π΅Ρ‚ΠΎΠΊ для main ΠΈ develop, Ρ‡Ρ‚ΠΎΠ±Ρ‹:

  • Π’Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ pull request ΠΏΠ΅Ρ€Π΅Π΄ слияниСм
  • ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ прямыС ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ
  • Π’Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ прохоТдСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ CI/CD

4. ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ --force-with-lease вмСсто --force

Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ --force-with-lease, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСзаписи Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ»Π»Π΅Π³.

5. Часто выполняйтС push Π² feature-Π²Π΅Ρ‚ΠΊΠ°Ρ…

НСбольшиС, частыС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вашСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅, Ρ€Π΅Π΄ΠΊΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ провСряСмыС pull request’ы.

6. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ

ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ β€” особСнно Π² production-Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссах β€” ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ:

git branch --show-current

Блучайная ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² main вмСсто feature-Π²Π΅Ρ‚ΠΊΠΈ Π² production-срСдС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ послСдствия.

7. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Git-Ρ…ΡƒΠΊΠΈ для автоматичСских ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ

Pre-push Ρ…ΡƒΠΊΠΈ (.git/hooks/pre-push) ΠΌΠΎΠ³ΡƒΡ‚ автоматичСски Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ тСсты, Π»ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ бСзопасности ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ любой ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ, выявляя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ достигнут ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ сСрвСра.

Git Push Π² CI/CD ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссах развёртывания

Π’ соврСмСнных DevOps-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… git push часто являСтся Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки, тСсты ΠΈ развёртывания. Когда Π²Ρ‹ выполняСтС push Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ:

  • Feature-Π²Π΅Ρ‚ΠΊΠΈ β†’ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСсты
  • Π’Π΅Ρ‚ΠΊΠ° develop β†’ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² staging-срСду
  • Π’Π΅Ρ‚ΠΊΠ° main β†’ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² production

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, извСстный ΠΊΠ°ΠΊ GitOps, Π΄Π΅Π»Π°Π΅Ρ‚ ваш Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ СдинствСнным источником истины для состояния вашСй инфраструктуры ΠΈ прилоТСния.

> Для ΠΊΠΎΠΌΠ°Π½Π΄, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… собствСнной CI/CD-инфраструктурой, VPS AlexHost с cPanel ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния VPS ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ доступный способ управлСния сСрвСрными срСдами, настройки ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² развёртывания ΠΈ размСщСния ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² с ΠΏΠΎΠ»Π½Ρ‹ΠΌ административным ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ.

Если ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Π΅Π±-сайт ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, сочСтаниС вашСго Git-Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса с Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π΅Π±-хостингом Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ваш Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ β€” с ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² AlexHost для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ вашСй production-настройки.

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ справочник ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Git Push

# Basic push
git push origin main

# Push and set upstream tracking
git push -u origin feature-branch

# Push all branches
git push --all origin

# Push all tags
git push origin --tags

# Delete a remote branch
git push origin --delete old-branch

# Safe force push
git push --force-with-lease origin main

# Dry run (simulate without uploading)
git push --dry-run origin main

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Команда git push Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд ΠΎΠ±ΠΌΠ°Π½Ρ‡ΠΈΠ²ΠΎ проста, Π½ΠΎ Π±ΠΎΠ³Π°Ρ‚Π° нюансами ΠΏΡ€ΠΈ использовании Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… совмСстных срСдах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Понимая вСсь Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΅Ρ‘ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” ΠΎΡ‚ отслСТивания upstream ΠΈ управлСния Ρ‚Π΅Π³Π°ΠΌΠΈ Π΄ΠΎ force-with-lease ΠΈ ΠΏΡ€ΠΎΠ±Π½Ρ‹Ρ… запусков β€” Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивно, ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ дорогостоящих ошибок ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π²ΠΊΠ»Π°Π΄ Π² Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡΡ‚ΡƒΡŽ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ.

ΠžΡΠ²ΠΎΠΉΡ‚Π΅ основы: выполняйтС pull ΠΏΠ΅Ρ€Π΅Π΄ push, ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π·Π°Ρ‰ΠΈΡ‰Π°ΠΉΡ‚Π΅ основныС Π²Π΅Ρ‚ΠΊΠΈ ΠΈ часто выполняйтС push Π² feature-Π²Π΅Ρ‚ΠΊΠ°Ρ…. Π­Ρ‚ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠΈ Π² сочСтании с Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠΉ хостинговой инфраструктурой Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ основу ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ Π»ΠΈ Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ-ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠΎΠΉ ΠΈΠ»ΠΈ Ρ‡Π°ΡΡ‚ΡŒΡŽ большой ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ сСрвСрная срСда усиливаСт ΠΌΠΎΡ‰ΡŒ вашСго Git-Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса. Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ VPS-хостинг AlexHost, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ваши ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π½Π° Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² инфраструктурС, созданной для скорости, надёТности ΠΈ бСзопасности.