Skip to content

Git Flow ​

🧠 Π‘ΡƒΡ‚ΡŒ ​

БтратСгия Π²Π΅Ρ‚ΠΎΠΊ для чистой истории: Ρ„ΠΈΡ‡ΠΈ β†’ staging β†’ preprod β†’ master.


πŸ’» Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π²Π΅Ρ‚ΠΎΠΊ ​

master          ← ΠΏΡ€ΠΎΠ΄, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· PR
preprod         ← Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ ΠΌΠ΅Ρ€ΠΆΠ΅ΠΌ Π² master
staging         ← ΠΎΠ±Ρ‰ΠΈΠΉ тСст, сюда мСрТатся всС Ρ„ΠΈΡ‡ΠΈ
feature/xxx     ← Ρ„ΠΈΡ‡Π°
fix/xxx         ← Π±Π°Π³
task/xxx        ← Π·Π°Π΄Π°Ρ‡Π° Π±Π΅Π· явной Ρ„ΠΈΡ‡ΠΈ ΠΈΠ»ΠΈ Π±Π°Π³Π°

πŸ’» Π Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс ​

bash
# 1. Новая Π·Π°Π΄Π°Ρ‡Π° β€” Π²Π΅Ρ‚Π²ΠΈΡΡŒ ΠΎΡ‚ master (всСгда свСТая Π±Π°Π·Π°)
git checkout master
git pull origin master
git checkout -b feature/add-auth

# 2. Π Π°Π±ΠΎΡ‚Π°Π΅ΡˆΡŒ β€” ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½ΡƒΡŽ Ρ„ΠΈΡ‡Ρƒ (см. Π½ΠΈΠΆΠ΅)

# 3. Π“ΠΎΡ‚ΠΎΠ²ΠΎ β€” ΠΏΡƒΡˆ ΠΈ PR Π² staging
git push origin feature/add-auth
# GitHub: PR feature/add-auth β†’ staging

# 4. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» Π½Π° staging β†’ PR staging β†’ preprod β†’ master

πŸ’» Когда ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ ​

ΠšΠΎΠΌΠΌΠΈΡ‚ΡŒ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½ΠΎΠΉ смысловой Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ β€” Π½Π΅ ΠΆΠ΄ΠΈ ΠΏΠΎΠΊΠ° накопится ΠΊΡƒΡ‡Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

βœ… Π”ΠΎΠ±Π°Π²ΠΈΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β†’ ΠΊΠΎΠΌΠΌΠΈΡ‚
βœ… ΠŸΠΎΡ‡ΠΈΠ½ΠΈΠ» Π±Π°Π³ β†’ ΠΊΠΎΠΌΠΌΠΈΡ‚
βœ… Обновил Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ β†’ ΠΊΠΎΠΌΠΌΠΈΡ‚
βœ… ΠŸΠΎΠΏΡ€Π°Π²ΠΈΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ β†’ ΠΊΠΎΠΌΠΌΠΈΡ‚

❌ "Π‘Π΄Π΅Π»Π°Π» всё Π·Π° дСнь" β†’ ΠΎΠ΄ΠΈΠ½ ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚
❌ WIP Π½Π° вСсь дСнь Π±Π΅Π· ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ:

  • Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сломаСтся β€” ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π° Π½Π΅ вСсь дСнь Ρ€Π°Π±ΠΎΡ‚Ρ‹
  • git bisect Π½Π°ΠΉΠ΄Ρ‘Ρ‚ сломанный ΠΊΠΎΠΌΠΌΠΈΡ‚ Π·Π° сСкунды
  • Π˜ΡΡ‚ΠΎΡ€ΠΈΡ читаСтся ΠΊΠ°ΠΊ ΠΆΡƒΡ€Π½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

πŸ’» Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ​

[SCOPE] Title β€” Ρ‡Ρ‚ΠΎ сдСлано                ← Π΄ΠΎ 72 символов

Motivation:
Одно-Π΄Π²Π° прСдлоТСния β€” Π·Π°Ρ‡Π΅ΠΌ, Π° Π½Π΅ Ρ‡Ρ‚ΠΎ.

Changes:
- Fixed ...
- Added ...
- Updated ...
- Removed ...

[SCOPE] β€” контСкст измСнСния: [CMS], [Auth], [API], [UI], [Config], [Deps]

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ:

  • Π”ΠΎ 72 символов β€” GitHub ΠΎΠ±Ρ€Π΅Π·Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Π½Π΅Π΅
  • Π“Π»Π°Π³ΠΎΠ» с большой Π±ΡƒΠΊΠ²Ρ‹: Fix, Add, Update, Remove
  • Π‘Π΅Π· Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅

Motivation:

  • Π—Π°Ρ‡Π΅ΠΌ сдСлано β€” ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, Π° Π½Π΅ описаниС ΠΊΠΎΠ΄Π°
  • 1–2 прСдлоТСния

Changes:

  • ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ список: Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ, исправлСно, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΡƒΠ΄Π°Π»Π΅Π½ΠΎ

πŸ’» ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ​

ΠŸΠ»ΠΎΡ…ΠΎ:

fix
changes
wip
update stuff

Π₯ΠΎΡ€ΠΎΡˆΠΎ β€” простой:

[Auth] Fix redirect loop after login

Π₯ΠΎΡ€ΠΎΡˆΠΎ β€” с Ρ‚Π΅Π»ΠΎΠΌ:

[CMS] Fix icon rendering and update plugin version

Motivation:
Resolve incorrect icon display caused by outdated plugin behavior.

Changes:
- Fixed icon rendering issue
- Updated plugin dependency version
- Synced composer configuration

πŸ’» Π’ΠΈΠΏΡ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Changes ​

Π“Π»Π°Π³ΠΎΠ»ΠšΠΎΠ³Π΄Π°
AddedНовый Ρ„Π°ΠΉΠ», функция, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚
FixedΠ˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π³Π° ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ повСдСния
UpdatedИзмСнСниС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° / зависимости
RemovedΠ£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Ρ„Π°ΠΉΠ»Π°, зависимости
RefactoredΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Π½ Π±Π΅Π· измСнСния повСдСния
SyncedОбновлСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° / Π»ΠΎΠΊΠΊΠΈ ΠΏΠΎΠ΄ измСнСния

πŸ’» Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ настройка git ​

bash
# Имя ΠΈ email (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

# Для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ рСпозитория (Π±Π΅Π· --global) β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚
git config user.name "Work Name"
git config user.email "work@company.com"

# Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ для commit-сообщСний
git config --global core.editor "nano"     # ΠΈΠ»ΠΈ: code --wait, nvim, vim

# ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ diff ΠΏΡ€ΠΈ написании ΠΊΠΎΠΌΠΌΠΈΡ‚Π°
git config --global commit.verbose true

Π¨Π°Π±Π»ΠΎΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° β€” структура всСгда ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π·Π°ΠΌΠΈ ΠΏΡ€ΠΈ git commit:

bash
cat > ~/.git-commit-template << 'EOF'
# [SCOPE] Title β€” Π΄ΠΎ 72 символов
# |<---- 72 символа ---------------------------------------------------->|

Motivation:


Changes:
- 
EOF

git config --global commit.template ~/.git-commit-template

Π’Π΅ΠΏΠ΅Ρ€ΡŒ git commit (Π±Π΅Π· -m) ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с шаблоном.


⚠️ ΠŸΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ ​

  • Никогда Π½Π΅ rebase master, preprod, staging β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ feature-Π²Π΅Ρ‚ΠΊΠΈ
  • staging / preprod Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΏΠ΅Ρ€Ρ‘Π΄ master β€” синхронизируй послС ΠΌΠ΅Ρ€ΠΆΠ°
  • Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (>72 символов) GitHub ΠΎΠ±Ρ€Π΅Π·Π°Π΅Ρ‚ Π² спискС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²
  • git commit -m "..." Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для многострочных β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ git commit Π±Π΅Π· Ρ„Π»Π°Π³Π°

Built with VitePress and ❀️