π ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π‘ΠΈΡΡΠ΅ΠΌΡ ΠΠΎΠ½ΡΡΠΎΠ»Ρ ΠΠ΅ΡΡΠΈΠΉ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Git?
Git - ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ (DVCS), ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΠΠΈΠ½ΡΡΠΎΠΌ Π’ΠΎΡΠ²Π°Π»ΡΠ΄ΡΠΎΠΌ Π² 2005 Π³ΠΎΠ΄Ρ. ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΡ: ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
- Π¦Π΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ: ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΉΠ» Π±Π΅Π· Π²Π΅Π΄ΠΎΠΌΠ° ΡΠΈΡΡΠ΅ΠΌΡ
- ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ: ΠΠΎΠ»Π½ΠΈΠ΅Π½ΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΠ΅ΡΠ²Π»Π΅Π½ΠΈΠ΅: ΠΠ΅Π³ΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π²Π΅ΡΠΎΠΊ
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π‘ΠΈΡΡΠ΅ΠΌΡ ΠΠΎΠ½ΡΡΠΎΠ»Ρ ΠΠ΅ΡΡΠΈΠΉ
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΏΡΠΈΡΠΎΠ΄Π° Git ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΄ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²:
ΠΠΎΠ»Π½Π°Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ: ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ:
- ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΎΡΡΠ»Π°ΠΉΠ½
- ΠΡΡΡΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
ΠΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ:
- ΠΠ°ΠΆΠ΄Π°Ρ ΠΊΠΎΠΏΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΡΠΌ Π±ΡΠΊΠ°ΠΏΠΎΠΌ
- ΠΠΎΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ Π²ΡΠ΅ΠΉ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠΈΠ±ΠΊΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°:
- ΠΠ΅Π³ΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅ΡΠΎΠΊ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΡΠΎΡΡΠΎΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΠΎΡΠ΅ΠΌΡ Git?
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
- ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΊΠ°ΡΠ°
- ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°
π§ Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ
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
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΡ Π€Π°ΠΉΠ»ΠΎΠ²
- Untracked: ΠΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ»
- Unmodified: Π€Π°ΠΉΠ» Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½
- Modified: Π€Π°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½
- 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
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ Π Π°Π±ΠΎΡΠ΅ Ρ ΠΠ΅ΡΠΊΠ°ΠΌΠΈ
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ Π²Π΅ΡΠΎΠΊ
- Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ
- Π£Π΄Π°Π»ΡΠΉΡΠ΅ Π²Π΅ΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅ ΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ
π Π Π°Π±ΠΎΡΠ° Ρ Π£Π΄Π°Π»ΡΠ½Π½ΡΠΌΠΈ Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ
ΠΡΠ½ΠΎΠ²Ρ Π Π°Π±ΠΎΡΡ Ρ Π£Π΄Π°Π»Π΅Π½Π½ΡΠΌΠΈ Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ
# ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
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
π‘ ΠΡΡΡΠΈΠ΅ ΠΡΠ°ΠΊΡΠΈΠΊΠΈ
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΠΎΠΌΠΌΠΈΡΠ°ΠΌ
Π§Π°ΡΡΠΎΡΠ° ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²:
- ΠΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
- ΠΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ = ΠΎΠ΄Π½Π° Π·Π°Π΄Π°ΡΠ°
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²:
# Π¨Π°Π±Π»ΠΎΠ½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠ° <ΡΠΈΠΏ>: <ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅> <ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ)> ΠΡΠΈΠΌΠ΅ΡΡ: feat: Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ fix: ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ΅ΡΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ docs: ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ README Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ Π Π΅ΡΡΡΡΡ
π ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π Π΅ΡΡΡΡΡ
π ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Git - ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΡΠΎ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΠ΅ΡΠ΅ΡΡ, ΡΠ΅ΠΌ Π»Π΅Π³ΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΡΠ°ΠΊΡΠΈΠΊΠ° - ΠΊΠ»ΡΡ ΠΊ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²Ρ!
