ΠŸΠ΅ΠΉΠ΄ΠΆΠ΅Ρ€

🌍 ΠŸΡ€ΠΈΠ²Π΅Ρ‚ ΠΌΠΈΡ€!

🌍 ΠŸΡ€ΠΈΠ²Π΅Ρ‚ ΠΌΠΈΡ€!

Π–Π΅Π»Π°ΡŽ Π²Π°ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π½Π΅Π΄Π΅Π»ΠΈ. А сСгодня ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ Π² ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ статСй, которая Π±ΡƒΠ΄Π΅Ρ‚ связана с Git. И Π½Π°Ρ‡Π½Π΅ΠΌ с ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cherry-pick.

πŸš€ ΠœΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΡ

Git - систСма контроля вСрсий, состоящая ΠΈΠ· мноТСства ΠΊΠΎΠΌΠ°Π½Π΄. Π—Π½Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ для вас ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ плюсом, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС программирования Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΈΠ»ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ΡΡŒ смСТным Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ. Cherry-pick ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ спСцифичСскоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎ ΠΈΠ΄Π΅ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π΅Π΄ΠΊΠΎ, ΠΊΠ°ΠΊ рСкомСндуСтся Π² наставлСниях ΠΏΠΎ использованию Git, Π½ΠΎ Π·Π½Π°Π½ΠΈΠ΅ cherry-pick ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ.

❓ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ cherry-pick?

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ простым языком - ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅.

πŸ“ Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ использования:

πŸ“Ž Ѐиксы Π±Π°Π³ΠΎΠ²: Π£ вас Π΅ΡΡ‚ΡŒ ΠΊΡƒΡ‡Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² develop branch ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… являСтся фиксом Π±Π°Π³ΠΈ, которая Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π° ΠΏΡ€ΠΎΠ΄Π΅, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ этот ΠΊΠΎΠΌΠΌΠΈΡ‚ с фиксом ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠ΄. Cherry-pick позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ содСрТащий фикс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ stable branch , Π½Π΅ вливая всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ измСнСния.

πŸ“Ž Командная коллаборация: НСсколько участников ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π°Π΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ частями Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°. Один ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² создал ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ commit, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ присутствуСт функция ΠΈ β€œΡ‡Π΅Ρ€ΠΈΠΏΠΈΠΊΠ½ΡƒΡ‚ΡŒβ€ cΠ΅Π±Π΅. Вакая манипуляция позволяСт бСсшовно ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

πŸ“Ž ВосстановлСниС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²: ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ситуация, Π³Π΄Π΅ сначала Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Π²Π΅Ρ‚ΠΊΡƒ, Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ снова Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±Ρ‹Π» ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΈ Π² этом ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ сherry-pick .

πŸ” Как ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ?

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚(Ρ‹).

1️⃣ Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git checkout:
git checkout target-branch


2️⃣ "Π§Π΅Ρ€ΠΈΠΏΠΈΠΊΠ½ΡƒΡ‚ΡŒ" ΠΊΠΎΠΌΠΌΠΈΡ‚.
git cherry-pick <commit-hash>


3️⃣ Если ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΈΡ… ΠΈ отправляСм измСнСния Π½Π° сСрвСр. Π’Π°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Новый ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ…ΡΡˆ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ исходного, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ история ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° ΠΈ Ρ‚.Π΄.).


πŸ–‡οΈ ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования cherry-pick.

πŸ’‘ Π’Ρ‹Π±ΠΎΡ€ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:
Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², просто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ…ΡΡˆΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ.
НапримСр:
git cherry-pick <commit-hash1> <commit-hash2> <commit-hash3>


πŸ’‘ Π’Ρ‹Π±ΠΎΡ€ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:
Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ <start-commit>^..<end-commit> .
НапримСр:
git cherry-pick <start-commit>^..<end-commit>

Π“Π΄Π΅ <start-commit>^ - Π½Π°Ρ‡Π°Π»ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ), Π° <end-commit> - ΠΊΠΎΠ½Π΅Ρ† Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ) ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ..(Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ) ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

git cherry-pick <start-commit>..<end-commit>

Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ.

git cherry-pick <start-commit>..<end-commit>^

Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ.

πŸ’‘ Π—Π°Π±Ρ€Π°Ρ‚ΡŒ измСнСния, Π½ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚:
МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ -n ΠΈΠ»ΠΈ --no-commit, автоматичСски Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ измСнСния ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π½ΠΎ Π±Π΅Π· создания ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. МоТно дальшС Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄ фиксациСй.
НапримСр:
git cherry-pick -n <commit-hash>


‼️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

cherry-pick Π½Π΅ являСтся Ρ‚ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ постоянно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΈ часто просто ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ merges Π΄Π΅Π»Π°ΡŽΡ‚ своС Π΄Π΅Π»ΠΎ.

πŸ“Œ Π˜Ρ‚ΠΎΠ³

Π˜Π·ΡƒΡ‡Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Git ΠΈ вашС ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π»ΠΎ =)

πŸ’¬ Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своим ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡΡ…πŸ‘‡! Если Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»Π°ΠΉΠΊ! πŸ‘

#GIT
МСдиа 1
Π₯ΠΎΡ‚ΠΈΡ‚Π΅ большС Ρ‚Π°ΠΊΠΈΡ… постов?
ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° ΠΊΠ°Π½Π°Π» ΠΈ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π² Telegram.
ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° @ivanchikovitclub ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ пост Π² Telegram