πŸ”— Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Git Merger: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС ΠΈ инструкция

Git merger позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π² Git. Когда Π²Ρ‹ выполняСтС слияниС, Git смотрит Π½Π° измСнСния, сдСланныС Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, ΠΈ измСнСния, сдСланныС Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎ Ρ†Π΅Π»ΡŒΠ½ΠΎΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ git merger:

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ
git branch new-branch

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ
git checkout new-branch

# Вносим измСнСния Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅
# ...

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ
git checkout main

# ВыполняСм слияниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Π³Π»Π°Π²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ
git merge new-branch

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ git merger

Git merger - это ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² систСмС контроля вСрсий Git, которая позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ измСнСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Как студСнту, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ git merger для эффСктивного управлСния вСрсиями вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

1. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ понятия

Π’ Git сущСствуСт Π΄Π²Π° основных Π²ΠΈΠ΄Π° объСдинСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: слияниС (merge) ΠΈ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (rebase). Оба ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ, Π½ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… контСкстах.

  • БлияниС: Git ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ измСнСния ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с сохранСниСм истории ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ. Π­Ρ‚ΠΎ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ измСнСния ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ.
  • ΠŸΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Git пСрСносит ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. ΠŸΡ€ΠΈ этом история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ выглядит Ρ‚Π°ΠΊ, Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½Π° всСгда содСрТала измСнСния ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

2. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ слияния Π² Git

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ слияния Π² Git ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² слияния Π² зависимости ΠΎΡ‚ ситуации.

  • Fast-forward слияниС: Если Π²Π΅Ρ‚ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ»ΠΈΡ‚ΡŒ измСнСния, находится прямо ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ, Git ΠΌΠΎΠΆΠ΅Ρ‚ просто ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄ Π±Π΅Π· создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° слияния. Π­Ρ‚ΠΎ называСтся "fast-forward" слияниСм.
  • 3-way слияниС: Если Π²Π΅Ρ‚ΠΊΠΈ ΠΈΠΌΠ΅Π»ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΎΠΊ, Π½ΠΎ ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ направлСния развития, Git ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ "3-way слияния". Он Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΈ сравниваСт измСнСния Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ измСнСния, создавая Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния.

3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ слияния

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ слияния Git, рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

3.1 Fast-forward слияниС


$ git checkout main
$ git merge feature
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ тСкущая Π²Π΅Ρ‚ΠΊΠ° - "main", Π° Π²Π΅Ρ‚ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ»ΠΈΡ‚ΡŒ - "feature". Если Π²Π΅Ρ‚ΠΊΠ° "feature" находится слСдом Π·Π° Π²Π΅Ρ‚ΠΊΠΎΠΉ "main", Ρ‚ΠΎ Git Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ fast-forward слияниС ΠΈ просто пСрСмСстит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚ΠΊΠΈ "main" Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ "feature".

3.2 3-way слияниС


$ git checkout main
$ git merge feature
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° "main" ΠΈ "feature" ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°, поэтому Git Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 3-way слияниС. Он автоматичСски сравнит измСнСния Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ ΠΈ создаст Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния, содСрТащий всС измСнСния.

4. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

Иногда ΠΏΡ€ΠΈ слиянии Git ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌΠΈ. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° Git Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ измСнСния. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Git оставляСт Π·Π½Π°ΠΊΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° Π² Ρ„Π°ΠΉΠ»Π°Ρ…, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ мСста, ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ вашСго Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ внСсти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния Π² Ρ„Π°ΠΉΠ»Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ измСнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "git add". ПослС этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ слияниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "git merge --continue".

5. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Git merger - ΠΌΠΎΡ‰Π½ΠΎΠ΅ срСдство управлСния вСрсиями, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ измСнСния ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли основы Ρ€Π°Π±ΠΎΡ‚Ρ‹ git merger, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ слияний ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ². ПониманиС этих ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вашими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, сохраняя ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ объСдиняя измСнСния Π² бСзопасном ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ процСссС.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

GIT: Merge ΠΈΠ»ΠΈ Rebase? Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°?

7.1 Git - БлияниС - "Π˜ΡΡ‚ΠΈΠ½Π½ΠΎΠ΅" слияниС ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π² git merge

Git MERGE vs REBASE. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ простым языком

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸš€ Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ PyCharm Π½Π° Linux: ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция для успСха!

πŸ”Ž Как Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° VS Code πŸ“

πŸ”— Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Git Merger: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС ΠΈ инструкция

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ git extensions: пошаговая инструкция ΠΈ совСты 🌿

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² PyCharm: пошаговоС руководство