Git: ΠΠΎΠ»Π½ΠΎΠ΅ Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΠ°ΡΠΈΠ½Π°ΡΡΠΈΡ
π ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Git
Git - ΡΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ.
π ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ
Π§ΡΠΎ Π’Π°ΠΊΠΎΠ΅ Git?
Git - ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ during software development. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
- Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΡ: ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
- ΠΠ΅ΡΠ²Π»Π΅Π½ΠΈΠ΅: ΠΠ΅Π³ΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π»ΠΈΠ½ΠΈΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
- ΠΡΠΊΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ Π²Π΅ΡΡΠΈΡΠΌ ΠΊΠΎΠ΄Π°
π§ ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΠΎΠΌΠ°Π½Π΄Ρ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
git --version
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°
git config --global user.name "ΠΠ°ΡΠ΅ ΠΠΌΡ"
git config --global user.email "email@example.com"
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΠΎΠ²ΠΎΠ³ΠΎ Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
git init
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
git clone https://github.com/username/repository.git
π ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ
Π Π°Π±ΠΎΡΠ° Ρ ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π‘ΡΠ°ΡΡΡΠ°
git status
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π€Π°ΠΉΠ»ΠΎΠ²
git add filename.txt # ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»
git add . # ΠΠΎΠ±Π°Π²ΠΈΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
ΠΠΎΠΌΠΌΠΈΡ ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
git commit -m "ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ"
πΏ Π Π°Π±ΠΎΡΠ° Ρ ΠΠ΅ΡΠΊΠ°ΠΌΠΈ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΠ΅ΡΠΎΠΊ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΠΎΠ²ΠΎΠΉ ΠΠ΅ΡΠΊΠΈ
git branch new-feature
ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΠ΅ΠΆΠ΄Ρ ΠΠ΅ΡΠΊΠ°ΠΌΠΈ
git checkout new-feature
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ
git checkout -b another-feature
π Π£Π΄Π°Π»Π΅Π½Π½ΡΠ΅ Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ GitHub
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π£Π΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
git remote add origin https://github.com/username/repository.git
ΠΡΠΏΡΠ°Π²ΠΊΠ° ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
git push origin main
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
git pull origin main
π€ Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ Π Π°Π±ΠΎΡΠ°
Π‘Π»ΠΈΡΠ½ΠΈΠ΅ ΠΠ΅ΡΠΎΠΊ
Π‘Π»ΠΈΡΠ½ΠΈΠ΅ Π’Π΅ΠΊΡΡΠ΅ΠΉ ΠΠ΅ΡΠΊΠΈ
git merge feature-branch
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²
ΠΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²:
- ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ»Ρ Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌΠΈ
- Π Π΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ Π²ΡΡΡΠ½ΡΡ
- ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
- ΠΠ°Π²Π΅ΡΡΠ°Π΅ΠΌ ΡΠ»ΠΈΡΠ½ΠΈΠ΅
π‘οΈ ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
ΠΡΠΎΡΠΌΠΎΡΡ ΠΡΡΠΎΡΠΈΠΈ
Π‘ΠΏΠΈΡΠΎΠΊ ΠΠΎΠΌΠΌΠΈΡΠΎΠ²
git log
ΠΡΠ°ΡΠΊΠ°Ρ ΠΡΡΠΎΡΠΈΡ
git log --oneline
ΠΡΠΊΠ°Ρ ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΠΡΠΌΠ΅Π½Π° ΠΠ΅Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
git checkout -- filename
ΠΡΠΌΠ΅Π½Π° ΠΠΎΠΌΠΌΠΈΡΠ°
git reset --soft HEAD~1
π ΠΡΡΡΠΈΠ΅ ΠΡΠ°ΠΊΡΠΈΠΊΠΈ
- Π§Π°ΡΡΡΠ΅ ΠΠΎΠΌΠΌΠΈΡΡ: ΠΠ΅Π»Π°ΠΉΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅, Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ
- ΠΠΏΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ: ΠΠΈΡΠΈΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°Ρ
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ΅ΡΠΎΠΊ: Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΊΠΈ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
- Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ²ΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ
π ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π Π΅ΡΡΡΡΡ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ ΠΈΠ·ΡΡΠ°ΡΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡΡΡ!