πΏ ΠΠ΅ΡΠΊΠΈ Π² git: ΡΡΠΎ ΡΡΠΎ ΠΈ ΠΊΠ°ΠΊ ΠΈΠΌΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ? βοΈ
ΠΠ΅ΡΠΊΠΈ Π² Git - ΡΡΠΎ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΠ°ΠΆΠ΄Π°Ρ Π²Π΅ΡΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠ΅ΡΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π° Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ (ΠΎΠ±ΡΡΠ½ΠΎ "master" ΠΈΠ»ΠΈ "main") Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ.
ΠΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π΅ΡΠΎΠΊ Π² Git:
# ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ "feature"
git branch feature
# ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π½Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ
git checkout feature
# Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΡΠΈΠΊΡΠ°ΡΠΈΡ ΠΈΡ
git add .
git commit -m "ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ"
# ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π²Π΅ΡΠΎΠΊ
git checkout master
git merge feature
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π΅ΡΠΊΠΈ Π² Git ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π»Π΅Π³ΠΊΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ΅ΡΠΊΠΈ Π² Git: ΡΡΠΎ ΡΡΠΎ?
Git - ΡΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅. Git ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π½Π°Π΄ ΡΠ°Π·Π½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΊΠΎΠ΄Π°. ΠΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ· ΡΠ΅Π±Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ.
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π² Git, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° Π²Π΅ΡΠΊΠ° - ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π²Π΅ΡΠΊΠ° ΠΈΠ»ΠΈ "ΠΌΠ°ΡΡΠ΅Ρ". ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π²Π΅ΡΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΠΊΠΈ.
Git ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π±Π΅Π· Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ. ΠΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² ΡΠΈΡΡΠ°ΡΠΈΡΡ , ΠΊΠΎΠ³Π΄Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄, Π½ΠΎ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΌΠ΅ΡΠ°Π»ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°ΡΡΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git branch
Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΈ:
git branch new_feature
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ "new_feature", ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π²Π°ΡΠ΅ΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ. ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ, Git ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ, ΡΡΠΎΠ±Ρ Π²Ρ Π·Π½Π°Π»ΠΈ, Π³Π΄Π΅ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠ΅.
Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git checkout
Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²Π΅ΡΠΊΠΈ:
git checkout new_feature
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΠ΅ "new_feature" ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄. ΠΠΎΠΌΠΌΠΈΡΡ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠ΅, Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΠΊΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ.
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π² Π²Π΅ΡΠΊΠ΅ "new_feature" Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²Π΅ΡΠΊΡ "new_feature" Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ:
git checkout master
git merge new_feature
ΠΠΎΠΌΠ°Π½Π΄Π° git checkout master
ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΠΊΡ "ΠΌΠ°ΡΡΠ΅Ρ", Π° git merge new_feature
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π²Π΅ΡΠΊΠΈ "new_feature" Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ.
Π Π±ΡΠ΄ΡΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ Π²Π΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git branch -d
:
git branch -d new_feature
ΠΡΠΎ ΡΠ΄Π°Π»ΠΈΡ Π²Π΅ΡΠΊΡ "new_feature" ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ Π²Π΅ΡΠΊΡ, Π½ΠΎ Π½Π΅ ΡΠ»ΠΈΡΡ Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π°Π³ "-D" Π²ΠΌΠ΅ΡΡΠΎ "-d":
git branch -D new_feature
ΠΠ΅ΡΠΊΠΈ Π² Git ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡ Ρ ΡΠΌΠΎΠΌ, ΡΠ»Π΅Π΄ΡΡ Π»ΡΡΡΠΈΠΌ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ.