Git Cherry-pick β
π§ Π‘ΡΡΡ β
ΠΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π² Π΄ΡΡΠ³ΡΡ β Π±Π΅Π· ΠΌΠ΅ΡΠΆΠ° Π²ΡΠ΅Π³ΠΎ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ.
ΠΠΎΠ³Π΄Π° Π½ΡΠΆΠ΅Π½:
- Π₯ΠΎΡΡΠΈΠΊΡ ΠΈΠ·
featureΠ½ΡΠΆΠ΅Π½ Π²masterΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ PR - ΠΠΎΠΌΠΌΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠΎΠΏΠ°Π» Π½Π΅ Π² ΡΡ Π²Π΅ΡΠΊΡ
- ΠΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΊΡ ΠΈΠ·
preprodΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π²master
π» ΠΠ°Π·ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ β
bash
# ΠΠ°ΠΉΡΠΈ hash Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°
git log --oneline feature/some-branch
# ΠΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ Π² ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠΊΡ
git cherry-pick a1b2c3π» ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² β
bash
# ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² (a1b2c3 Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ, f4e5d6 Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ)
git cherry-pick a1b2c3..f4e5d6
# ΠΡΠ°Π·Π±ΡΠΎΡ
git cherry-pick a1b2c3 d4e5f6 g7h8i9π» ΠΠ΅ΡΠ΅Π½ΠΎΡ Π±Π΅Π· Π°Π²ΡΠΎΠΊΠΎΠΌΠΌΠΈΡΠ° β
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ:
bash
git cherry-pick a1b2c3 --no-commit
git status # ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ ΠΏΠΎΠΏΠ°Π»ΠΎ Π² ΠΈΠ½Π΄Π΅ΠΊΡ
git diff --staged
git commitπ» ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΡΠΈ cherry-pick β
bash
# Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π²ΡΡΡΠ½ΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ
, Π·Π°ΡΠ΅ΠΌ:
git add .
git cherry-pick --continue
# ΠΡΠΌΠ΅Π½ΠΈΡΡ β Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄ΠΎ cherry-pick:
git cherry-pick --abortβ οΈ ΠΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ β
- Cherry-pick ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ, Π½ΠΎ Π΄ΡΡΠ³ΠΈΠΌ hash β ΠΎΡΠΈΠ³ΠΈΠ½Π°Π» Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ ΠΎΡΡΠ°ΡΡΡΡ
- ΠΡΠ»ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠΎΠΏΠ°Π΄ΡΡ ΡΠ΅ΡΠ΅Π· merge β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π΄ΡΠ±Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ
- ΠΠ΅ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»ΡΠΉ: Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² β Π»ΡΡΡΠ΅ merge ΠΈΠ»ΠΈ rebase