🌐 Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² БистСму ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Ρ ВСрсий

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Git?

Git - распрСдСлСнная систСма контроля вСрсий (DVCS), созданная Линусом Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄ΡΠΎΠΌ Π² 2005 Π³ΠΎΠ΄Ρƒ. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности:

  • Π Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ: ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ копию рСпозитория
  • Π¦Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ: НСвозмоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π΅Π· Π²Π΅Π΄ΠΎΠΌΠ° систСмы
  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠœΠΎΠ»Π½ΠΈΠ΅Π½ΠΎΡΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
  • Π’Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅: Π›Π΅Π³ΠΊΠΎΠ΅ созданиС ΠΈ слияниС Π²Π΅Ρ‚ΠΎΠΊ

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° РаспрСдСлСнной БистСмы ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Ρ ВСрсий

РаспрСдСлСнная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Git прСдоставляСт ряд сущСствСнных прСимущСств:

  1. Полная локальная история: ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ копию истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ обСспСчиваСт:

    • ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСрвСра
    • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ„Ρ„Π»Π°ΠΉΠ½
    • БыстрыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π΅Π· нСобходимости постоянного ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ
  2. ΠžΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ:

    • КаТдая копия рСпозитория являСтся ΠΏΠΎΠ»Π½Ρ‹ΠΌ бэкапом
    • ΠŸΠΎΡ‚Π΅Ρ€Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ рСпозитория Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ всСй истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
  3. Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса:

    • Π›Π΅Π³ΠΊΠΎΠ΅ созданиС Π²Π΅Ρ‚ΠΎΠΊ ΠΈ экспСримСнтированиС
    • ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ совмСстноС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
    • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ модСлями Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Git?

  1. БовмСстная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
  2. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
  3. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚Π°
  4. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

πŸ”§ Установка ΠΈ Настройка

Установка Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…

macOS

# ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Homebrew для простоты ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ
brew install git

# ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ установщик
https://git-scm.com/download/mac

Linux (Ubuntu/Debian)

sudo apt update
sudo apt install git

Windows

# РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Git Bash для ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ интСрфСйса
# Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта: https://git-scm.com/download/win

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Π°Ρ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

Настройка ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

# Установка ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
git config --global user.name "Π’Π°ΡˆΠ΅ Имя"

# Установка элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹
git config --global user.email "your.email@example.com"

Настройка Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

# Для Vim
git config --global core.editor "vim"

# Для Nano
git config --global core.editor "nano"

# Для VS Code
git config --global core.editor "code --wait"

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

# ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
git config --list

πŸ—οΈ ΠžΡΠ½ΠΎΠ²Ρ‹ Π Π°Π±ΠΎΡ‚Ρ‹ с Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ РСпозитория

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ рСпозитория
mkdir my_project
cd my_project
git init

# ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ
git clone https://github.com/username/repository.git

# ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π΅Ρ‚ΠΊΠΈ
git clone -b develop https://github.com/username/repository.git

Бостояния Π€Π°ΠΉΠ»ΠΎΠ²

  1. Untracked: Новый Ρ„Π°ΠΉΠ»
  2. Unmodified: Π€Π°ΠΉΠ» Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½
  3. Modified: Π€Π°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½
  4. Staged: Π€Π°ΠΉΠ» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° статуса
git status

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²
git add file.txt       # Один Ρ„Π°ΠΉΠ»
git add .              # ВсС Ρ„Π°ΠΉΠ»Ρ‹
git add *.txt          # ВсС txt-Ρ„Π°ΠΉΠ»Ρ‹

# ΠšΠΎΠΌΠΌΠΈΡ‚
git commit -m "ОписаниС измСнСний"
git commit -am "ΠšΠΎΠΌΠΌΠΈΡ‚ с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ"

# Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²
git log
git log --oneline      # ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ Π²ΠΈΠ΄
git log -p             # Б измСнСниями

πŸ—‚οΈ ΠžΡΠ½ΠΎΠ²Ρ‹ Π Π°Π±ΠΎΡ‚Ρ‹ с Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ

ИспользованиС .gitignore

Π€Π°ΠΉΠ» .gitignore позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ· систСмы контроля вСрсий:

# Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²
*.tmp
*.log

# Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ
node_modules/
build/
dist/

# Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²
.env
*.secret

# Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² IDE
.vscode/
.idea/

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git diff

# ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния Π² Π½Π΅Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…
git diff

# Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ staged измСнСния
git diff --staged

# Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ
git diff main feature-branch

🌿 Π Π°Π±ΠΎΡ‚Π° с Π’Π΅Ρ‚ΠΊΠ°ΠΌΠΈ

ΠžΡΠ½ΠΎΠ²Ρ‹ ВСтвлСния

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ
git branch feature/login

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ
git checkout feature/login

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
git checkout -b feature/registration

# Бписок Π²Π΅Ρ‚ΠΎΠΊ
git branch
git branch -a           # Π’ΠΊΠ»ΡŽΡ‡Π°Ρ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠ΅ Π’Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅

# ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ
git branch -m old_name new_name

# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ
git branch -d feature/login
git branch -D feature/login  # ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ

# БлияниС Π²Π΅Ρ‚ΠΎΠΊ
git merge feature/login
git merge --no-ff feature/login  # Π‘Π΅Π· fast-forward

Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ ВСтвлСния

Git Flow

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Π°Ρ модСль вСтвлСния для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²:

  • main: Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия
  • develop: Π’Π΅Ρ‚ΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
  • feature/*: Π’Π΅Ρ‚ΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
  • release/*: ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ€Π΅Π»ΠΈΠ·ΠΎΠ²
  • hotfix/*: ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ исправлСния
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ
git checkout -b feature/new-authentication

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ
git checkout main
git checkout feature/new-authentication

# БлияниС Π²Π΅Ρ‚ΠΎΠΊ
git checkout main
git merge feature/new-authentication

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ Блиянии

# ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²
git merge feature-branch

# ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²
# Π ΡƒΡ‡Π½ΠΎΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΡ… участков
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² (<<<<<<<, =======, >>>>>>>)

# ПослС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²
git add .
git commit

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π Π°Π±ΠΎΡ‚Π΅ с Π’Π΅Ρ‚ΠΊΠ°ΠΌΠΈ

  1. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ логичСски Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ осмыслСнныС названия Π²Π΅Ρ‚ΠΎΠΊ
  3. РСгулярно синхронизируйтС свою Π²Π΅Ρ‚ΠΊΡƒ с основной Π²Π΅Ρ‚ΠΊΠΎΠΉ
  4. УдаляйтС Π²Π΅Ρ‚ΠΊΠΈ послС ΠΈΡ… слияния

🌍 Π Π°Π±ΠΎΡ‚Π° с Π£Π΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ РСпозиториями

ΠžΡΠ½ΠΎΠ²Ρ‹ Π Π°Π±ΠΎΡ‚Ρ‹ с Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ РСпозиториями

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория
git remote add origin https://github.com/username/repository.git

# Бписок ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²
git remote -v

# Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±Π΅Π· слияния
git fetch origin

# Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ слияниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
git pull origin main

Различия ΠΌΠ΅ΠΆΠ΄Ρƒ git fetch ΠΈ git pull

  • git fetch: Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ измСнСния ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория Π‘Π•Π— автоматичСского слияния
  • git pull: Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ БРАЗУ Π‘Π›Π˜Π’ΠΠ•Π’ измСнСния с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ

Π Π°Π±ΠΎΡ‚Π° с НСсколькими Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ РСпозиториями

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… источников
git remote add upstream https://github.com/original/repository.git
git remote add fork https://github.com/myusername/repository.git

🧩 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ВозмоТности Git

Π Π°Π±ΠΎΡ‚Π° с ΠŸΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡΠΌΠΈ

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ подмодуля
git submodule add https://github.com/example/library.git libs/library

# Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ
git submodule init
git submodule update

# ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория с подмодулями
git clone --recursive https://github.com/example/project.git

ИспользованиС ВСгов

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ лСгковСсного Ρ‚Π΅Π³Π°
git tag v1.0.0

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚Π΅Π³Π°
git tag -a v1.1.0 -m "Π Π΅Π»ΠΈΠ· вСрсии 1.1.0"

# ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Ρ‚Π΅Π³ΠΎΠ²
git tag

# ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ‚Π΅Π³ΠΎΠ² Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
git push origin v1.0.0
git push origin --tags

πŸ”„ ОбновлСниС Π’Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Основной Π’Π΅Ρ‚ΠΊΠΈ

# Π’ локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ
git branch -m master main

# На ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (GitHub)
# 1. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки рСпозитория Π² Π²Π΅Π±-интСрфСйсС
# 2. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
git branch -m master main
git fetch origin
git branch -u origin/main main

πŸ’‘ Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠšΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ

  1. Частота ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:

    • ΠšΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ логичСски Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
    • Один ΠΊΠΎΠΌΠΌΠΈΡ‚ = ΠΎΠ΄Π½Π° Π·Π°Π΄Π°Ρ‡Π°
  2. БообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:

    # Π¨Π°Π±Π»ΠΎΠ½ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚Π°
    <Ρ‚ΠΈΠΏ>: <ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС>
    
    <Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ΅ описаниС (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ)>
    
    ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:
    feat: Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
    fix: ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΡƒ памяти Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
    docs: ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ README с инструкциями ΠΏΠΎ установкС
    

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ РСсурсы

πŸ“š Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ РСсурсы

πŸŽ“ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Git - это Π½Π΅ просто инструмСнт, это философия совмСстной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π§Π΅ΠΌ большС Π²Ρ‹ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠ΅Ρ‚Π΅ΡΡŒ, Ρ‚Π΅ΠΌ Π»Π΅Π³Ρ‡Π΅ становится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° - ΠΊΠ»ΡŽΡ‡ ΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Ρƒ!