git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

ΠŸΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’ Git Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа внСсти измСнСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ: слияниС ΠΈ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… случаях этот ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ слСдуСт.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Если Π²Ρ‹ Π²Π΅Ρ€Π½Ρ‘Ρ‚Π΅ΡΡŒ ΠΊ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΈΠ· ΠžΡΠ½ΠΎΠ²Ρ‹ слияния, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ сдСлали ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ.

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ experiment ΠΈ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Ρ‘ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π΅Ρ‚ΠΊΠΈ master ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: бСрётся ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ снимок Π΄Π²ΡƒΡ… Π²Π΅Ρ‚ΠΎΠΊ (Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ, ΠΈ Ρ‚ΠΎΠΉ, ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ выполняСтС ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅), опрСдСляСтся Π΄Π΅Π»ΡŒΡ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ сохраняСтся Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», тСкущая Π²Π΅Ρ‚ΠΊΠ° устанавливаСтся Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π²Π΅Ρ‚ΠΊΠΈ, ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ выполняСтС ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π΄Π΅Π»ΡŒΡ‚Ρ‹ ΠΈΠ· Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

ПослС этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ слияниС ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠΎΠΉ.

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ снимок, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ C4′ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» C5 Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с трёхсторонним слияниСм. НСт Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Ρ‡ΠΈΡ‰Π΅. Если Π²Ρ‹ взглянСтС Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° выглядит Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ: Π±ΡƒΠ΄Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Ссли ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π»ΠΈΡΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ.

Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ снимок, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся ваш послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ β€” являСтся Π»ΠΈ ΠΎΠ½ послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ послС пСрСбазирования ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ слияния послС слияния β€” Π² ΠΎΠ±ΠΎΠΈΡ… случаях это ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ снимок, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ΠŸΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ повторяСт измСнСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эти измСнСния Π±Ρ‹Π»ΠΈ сдСланы, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ слияниС Π±Π΅Ρ€Π΅Ρ‚ Π΄Π²Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ сливаСт ΠΈΡ… вмСстС.

Π‘ΠΎΠ»Π΅Π΅ интСрСсныС пСрСмСщСния

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΡƒ (fast-forward) для Π²Π΅Ρ‚ΠΊΠΈ master (см ΠŸΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ° Π²Π΅Ρ‚ΠΊΠΈ master для добавлСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ client ):

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

ПослС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ смоТСтС Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΡƒ основной Π²Π΅Ρ‚ΠΊΠΈ ( master ):

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈ пСрСмСщСния

Но Π΄Π°ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡ€ΠΈ всСх своих достоинствах, Π½Π΅ лишСно нСдостатков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ строчкой:

НС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Если Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ этого ΠΏΡ€Π°Π²ΠΈΠ»Π°, всё Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Если Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅, люди вознСнавидят вас, Π° ваши Π΄Ρ€ΡƒΠ·ΡŒΡ ΠΈ сСмья Π±ΡƒΠ΄ΡƒΡ‚ вас ΠΏΡ€Π΅Π·ΠΈΡ€Π°Ρ‚ΡŒ.

Когда Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅, Π²Ρ‹ отмСняСтС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ создаётС Π½ΠΎΠ²Ρ‹Π΅, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° старыС, Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. Если Π²Ρ‹ ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ отправляСтС свои ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди Π·Π°Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΈΡ… сСбС ΠΈ Π² дальнСйшСм ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Π½ΠΈΡ… свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Π΅Ρ‚Π΅ эти ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git rebase ΠΈ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΈΡ… снова, Ρ‚ΠΎ ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Π·Π°Π½ΠΎΠ²ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ слияниС для своих Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ. Π’ ΠΈΡ‚ΠΎΠ³Π΅, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² свою, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ доступных Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с сСрвСра ΠΈ сдСлали ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ. И ваша история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² выглядит Ρ‚Π°ΠΊ:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ внёс свои измСнСния, слил ΠΈΡ… ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» Π½Π° сСрвСр. Π’Ρ‹ стягиваСтС ΠΈΡ… ΠΊ сСбС, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π½ΠΎΠ²ΡƒΡŽ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Ρ‡Ρ‚ΠΎ измСняСт Π²Π°ΡˆΡƒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Если Π²Ρ‹ посмотритС git log Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ, Π΄Π°Ρ‚ΠΎΠΉ ΠΈ сообщСниСм, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΡ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ. Помимо этого, Ссли Π²Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ свою ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ сСрвСр Π² Ρ‚Π°ΠΊΠΎΠΌ состоянии, Π²Ρ‹ Π²Π΅Ρ€Π½Ρ‘Ρ‚Π΅ всС эти ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π° сСрвСр, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Ρ‘ большС всСх Π·Π°ΠΏΡƒΡ‚Π°Π΅Ρ‚. Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ C4 ΠΈ C6 Π±Ρ‹Π»ΠΈ Π² истории, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому ΠΎΠ½Π° пСрСбазируСтся Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

МСняя Π±Π°Π·Ρƒ, мСняй основаниС

Если Π²Ρ‹ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Ρ‚Π°ΠΊΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Ρƒ Git Π΅ΡΡ‚ΡŒ особая магия Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ. Если ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π² вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅ форсируСт ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° сСрвСр, ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ваша Ρ€Π°Π±ΠΎΡ‚Π°, Ρ‚ΠΎ ваша Π·Π°Π΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±Ρ‹Π»ΠΎ вашС, Π° Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ пСрСписано ΠΈΠΌΠΈ.

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы ΠΊΠΎΠΌΠΌΠΈΡ‚Π° SHA-1, Git Ρ‚Π°ΠΊΠΆΠ΅ вычисляСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ΠΏΠ°Ρ‚Ρ‡Π°, входящСго Π² этот ΠΊΠΎΠΌΠΌΠΈΡ‚. Π­Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма называСтся Β«patch-idΒ».

Если Π²Ρ‹ скачаСтС ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π΅Ρ‘ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² вашСго ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Git ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ измСнСния Π±Ρ‹Π»ΠΈ внСсСны Π²Π°ΠΌΠΈ, ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ ΠΈΡ… ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, какая Ρ€Π°Π±ΠΎΡ‚Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π° для вашСй Π²Π΅Ρ‚ΠΊΠΈ (C2, C3, C4, C6, C7)

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ слияния (C2, C3, C4)

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ пСрСзаписано Π² основной Π²Π΅Ρ‚ΠΊΠ΅ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ C2 ΠΈ C3, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ C4 β€” это Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠ°Ρ‚Ρ‡, Ρ‡Ρ‚ΠΎ ΠΈ C4′)

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ эти ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΊ Π²Π΅Ρ‚ΠΊΠ΅ teamone/master

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ссли C4 ΠΈ C4′ фактичСски ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» сдСлан вашим ΠΊΠΎΠ»Π»Π΅Π³ΠΎΠΉ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС rebase Π½Π΅ смоТСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ ΠΈ создаст Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ‚Ρ‡, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ C4 (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ с большой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ удастся ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ чисто, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½Ρ‘ΠΌ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния).

Если Π²Ρ‹ рассматриваСтС ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ способ навСдСния порядка ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ локально Π΄ΠΎ ΠΈΡ… ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈΠ»ΠΈ ваши ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ β€” Ρƒ вас всё Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Однако, Ссли Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΈ Π΅ΡΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… людСй основываСтся Π½Π° этих ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…, Ρ‚ΠΎ ваши дСйствия ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сущСствСнныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π° Π²Ρ‹ β€” Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π·Ρ€Π΅Π½ΠΈΠ΅ вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ vs. БлияниС

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ слияниС Π² дСйствии, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒΡΡ вопросом, Ρ‡Ρ‚ΠΎ ΠΈΠ· Π½ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот вопрос, Π΄Π°Π²Π°ΠΉΡ‚Π΅ вСрнёмся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ история.

Одна ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ зрСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² вашСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ β€” это запись Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. Π­Ρ‚ΠΎ историчСский Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Ρ†Π΅Π½Π½Ρ‹ΠΉ сам ΠΏΠΎ сСбС, ΠΈ Π΅Π³ΠΎ нСльзя ΠΏΠΎΠ΄Π΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ. Π‘ этой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² практичСски кощунствСнно; Π²Ρ‹ Π»ΠΆΡ‘Ρ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. Но Ρ‡Ρ‚ΠΎ, Ссли ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ… слияния? Если это случаСтся, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ это для ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ².

ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° зрСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² β€” это история Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π» сдСлан ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π’Ρ‹ Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈΠ»ΠΈ инструкции ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ вашСго ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это нуТдаСтся Π² Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠΊΠΈ этого лагСря ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ использованиС инструмСнтов rebase ΠΈ filter-branch способом Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊ вопросу ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ β€” слияниС ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: надСюсь, Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ просто. Git β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²Π°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ с вашСй историСй, ΠΎΠ΄Π½Π°ΠΊΠΎ каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π΅Π½. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ±Π° эти ΠΏΡ€ΠΈΡ‘ΠΌΠ°, Π²Ρ‹Π±ΠΎΡ€ β€” ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ Π² вашСй ситуации β€” зависит ΠΎΡ‚ вас.

ΠŸΡ€ΠΈ этом, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΎΡ‚ ΠΎΠ±ΠΎΠΈΡ… ΠΌΠΈΡ€ΠΎΠ²: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для навСдСния порядка Π² истории Π²Π°ΡˆΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ для ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Руководство ΠΏΠΎ Git. Π§Π°ΡΡ‚ΡŒ β„–2: Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ основы rebase

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ выполняСтС git rebase ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

Π‘ΡƒΡ‚ΡŒ rebase

Как ΠΈΠΌΠ΅Π½Π½ΠΎ происходит rebase:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ rebase β€” это ΠΎΡ‚ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ (branch), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ, ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. Π’Π°ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ соотвСтствуСт Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅. Если Π²Ρ‹ посмотритС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ написано ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ rebase: Β«ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ (Reapply commits on top of another base tip)Β».

Π“Π»Π°Π²Π½ΠΎΠ΅ слово здСсь β€” ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ rebase β€” это Π½Π΅ просто копипаст Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Rebase ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±Π΅Ρ€Π΅Ρ‚ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ примСняСт ΠΈΡ… ΠΊ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅.

Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΄Π²ΡƒΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌ:

Π’ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ интСрпрСтация Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ rebase:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π²Π΅Ρ‚ΠΊΠ° feature содСрТит Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Как Π±Ρ‹Π»ΠΎ сказано Ρ€Π°Π½Π΅Π΅, Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Git.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим Β«Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΒ».

Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ rebase

Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ rebase Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ β€” Β«ΠΠ˜ΠšΠžΠ“Π”Π Π½Π΅ выполняйтС rebase Ρ€Π°ΡΡˆΠ°Ρ€Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ!Β». Под Ρ€Π°ΡΡˆΠ°Ρ€Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ понимаСтся Π²Π΅Ρ‚ΠΊΠ°, которая сущСствуСт Π² сСтСвом Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди, ΠΊΡ€ΠΎΠΌΠ΅ вас.

Часто это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π±Π΅Π· Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ понимания, поэтому Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΎ появилось, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Git.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈ Ρ‡Ρ‚ΠΎ происходит Π² этом случаС.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π‘ΠΎΠ± ΠΈ Анна вмСстС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ. НиТС прСдставлСно, ΠΊΠ°ΠΊ выглядят Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π‘ΠΎΠ±Π° ΠΈ Анны ΠΈ исходный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π£ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с GitHub.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π‘ΠΎΠ±, Π½Π°Ρ€ΡƒΡˆΠ°Ρ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, выполняСт rebase, ΠΈ Π² это ΠΆΠ΅ врСмя Анна, работая Π² Π²Π΅Ρ‚ΠΊΠ΅ feature, создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚?

Π‘ΠΎΠ± пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡƒΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π΅ΠΌΡƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ΠΊΠ°Π· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ содСрТания:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Git Π½Π΅ Π±Ρ‹Π»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Git Π½Π΅ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ feature Π²Π΅Ρ‚ΠΊΡƒ Π‘ΠΎΠ±Π° с feature Π²Π΅Ρ‚ΠΊΠΎΠΉ GitHub.

ЕдинствСнным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ Π‘ΠΎΠ±Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ push, станСт использованиС ΠΊΠ»ΡŽΡ‡Π° force, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ GitHub-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρƒ сСбя Π²Π΅Ρ‚ΠΊΡƒ feature ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π·Π° эту Π²Π΅Ρ‚ΠΊΡƒ Ρ‚Ρƒ, которая ΠΏΡƒΡˆΠΈΡ‚ΡΡ Π‘ΠΎΠ±ΠΎΠΌ. ПослС этого ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Анна Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ свои измСнСния, ΠΈ Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

git pull

ИспользованиС git pull

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ дСйствий

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’ этом сцСнарии ΠΊΠΎΠΌΠ°Π½Π΄Π° git pull Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ всС измСнСния, начиная с Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ Ρ€Π°Π·ΠΎΡˆΠ»ΠΈΡΡŒ локальная ΠΈ главная Π²Π΅Ρ‚ΠΊΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Ρ‚ΠΎΡ‡ΠΊΠ° E. Команда git pull ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· отходящСй Π²Π΅Ρ‚ΠΊΠΈ (Ρ‚. Π΅. Ρ‚ΠΎΡ‡ΠΊΠΈ A‑B‑C). Π—Π°Ρ‚Π΅ΠΌ Π² процСссС запуска ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pull Π±ΡƒΠ΄Π΅Ρ‚ создан Π½ΠΎΠ²Ρ‹ΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ содСрТимоС Π½ΠΎΠ²Ρ‹Ρ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· отходящСй Π²Π΅Ρ‚ΠΊΠΈ.

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

На этой схСмС Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pull Π½Π΅ Π±Ρ‹Π» создан Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ H. ВмСсто этого ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ A‑B‑C Π±Ρ‹Π»ΠΈ скопированы ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π² локальной Π²Π΅Ρ‚ΠΊΠ΅ origin/main ΠΏΠ΅Ρ€Π΅Π΄ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ E–F–G с ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒΡŽ послСдних.

РаспространСнныС ΠΎΠΏΡ†ΠΈΠΈ

Подобно Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ содСрТимоС, Π½ΠΎ Π½Π΅ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ со слитым содСрТимым.

Π’ΠΎ врСмя выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pull Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠΌ содСрТимом ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ слиянии.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ git pull

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ синхронизирован, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° git fetch ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСй ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ вСрсия origin Π²Π΅Ρ‚ΠΊΠΈ main Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°. Π—Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° git merge сразу ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ main Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

Git pull ΠΈ синхронизация

Команда git pull β€” ΠΎΠ΄Π½Π° ΠΈΠ· мноТСства ΠΊΠΎΠΌΠ°Π½Π΄, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… Π·Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ содСрТимого. Команда git remote ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ синхронизации. Команда git push ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ содСрТимого Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ pull ΠΈ rebase

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования git pull

Π’ Π½ΠΈΠΆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git pull Π² ΠΎΠ±Ρ‰ΠΈΡ… сцСнариях.

ПовСдСниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Команда git pull Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΊΠ°Ρ…

ΠŸΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git pull вмСсто слияния

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ с Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ main Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ваши Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния просто ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… участников Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Git Rebase: руководство ΠΏΠΎ использованию

Rebase β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… способов ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ измСнСния, сдСланныС Π² ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ. ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ git ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ видят смысла ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ измСнСния, ΠΊΠΎΠ³Π΄Π° ΡƒΠΆΠ΅ ΠΈ Ρ‚Π°ΠΊ прСкрасно Π²Π»Π°Π΄Π΅ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ merge. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ использования rebase.

ВСория

Π˜Ρ‚Π°ΠΊ, освСТим тСорСтичСскиС знания ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ rebase. Для Π½Π°Ρ‡Π°Π»Π° Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ β€” Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Π²Π΅Ρ‚ΠΊΠΈ β€” master ΠΈ feature, ΠΎΠ±Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅, feature Π±Ρ‹Π»Π° создана ΠΎΡ‚ master Π² состоянии A ΠΈ содСрТит Π² сСбС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ C, D ΠΈ E. Π’ Π²Π΅Ρ‚ΠΊΡƒ master послС отдСлСния ΠΎΡ‚ Π½Π΅Π΅ Π²Π΅Ρ‚ΠΊΠΈ feature Π±Ρ‹Π» сдСлан 1 ΠΊΠΎΠΌΠΌΠΈΡ‚ B.

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

ПослС примСнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ rebase master Π² Π²Π΅Ρ‚ΠΊΠ΅ feature, Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ C’, D’ ΠΈ E’ β€” Π½Π΅ Ρ€Π°Π²Π½Ρ‹ C, D ΠΈ E, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ…Π΅ΡˆΠΈ, Π½ΠΎ измСнСния (Π΄Π΅Π»ΡŒΡ‚Ρ‹), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π² сСбС нСсут, Π² ΠΈΠ΄Π΅Π°Π»Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ… обусловлСно Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π±Π°Π·Ρƒ (Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС β€” A, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” B), отличия Π² Π΄Π΅Π»ΡŒΡ‚Π°Ρ…, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, обусловлСны Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹Ρ… ситуаций, Π²ΠΎΠ·Π½ΠΈΠΊΡˆΠΈΡ… ΠΏΡ€ΠΈ rebase. Об этом Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π΄Π°Π»Π΅Π΅.

Π’Π°ΠΊΠΎΠ΅ состояниС ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΏΡ€ΠΈ слиянии Π²Π΅Ρ‚ΠΊΠΈ feature Π² master Π²Π΅Ρ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объСдинСна ΠΏΠΎ fast-forward, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ΄ Π² Π²Π΅Ρ‚ΠΊΠ΅ feature Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ измСнСния сдСланныС Π² Π²Π΅Ρ‚ΠΊΠ΅ master Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ B.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ rebase-Π° Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ разбСрСмся с ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΎΠΉ этого процСсса, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ 1 ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ 2?

Напомню, ΠΏΠ΅Ρ€Π΅Π΄ rebase Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄Ρ‚Π΅ΡΡŒ Π² Π²Π΅Ρ‚ΠΊΠ΅ feature, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ваш HEAD смотрит Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ feature, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ смотрит Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ E. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Π΅Ρ‚ΠΊΠΈ master Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚:

Для Π½Π°Ρ‡Π°Π»Π° git Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ β€” ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ этих Π΄Π²ΡƒΡ… состояний. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΊΠΎΠΌΠΌΠΈΡ‚ A. Π”Π°Π»Π΅Π΅ двигаясь Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ вашСго Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ HEAD git вычисляСт Ρ€Π°Π·Π½ΠΈΡ†Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС ΠΌΠ΅ΠΆΠ΄Ρƒ A ΠΈ Π‘, Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π΅ Ξ”AC. Π­Ρ‚Π° Π΄Π΅Π»ΡŒΡ‚Π° примСняСтся ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π²Π΅Ρ‚ΠΊΠΈ master. Если ΠΏΡ€ΠΈ этом Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½ΠΎΠ΅ состояниС, создаСтся ΠΊΠΎΠΌΠΌΠΈΡ‚ C’, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ C’ = B + Ξ”AC. Π’Π΅Ρ‚ΠΊΠΈ master ΠΈ feature ΠΏΡ€ΠΈ этом Π½Π΅ ΡΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, HEAD пСрСмСщаСтся Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ (C’), приводя ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ состояниС Β«ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²Ρ‹Β» (detached HEAD).

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

УспСшно создав ΠΊΠΎΠΌΠΌΠΈΡ‚ C’, git ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ пСрСносу ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ β€” Ξ”CD. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ этих ΠΈΠ·ΠΌΠ΅Π½Π½ΠΈΠΉ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ C’ Π²ΠΎΠ·Π½ΠΈΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚. ΠŸΡ€ΠΎΡ†Π΅ΡΡ rebase останавливаСтся (ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π½Π°Π±Ρ€Π°Π² git status Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² состоянии detached HEAD). ИзмСнСния, внСсСнныС Ξ”CD находятся Π² вашСй Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΈ (ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹Ρ…) ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ (ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€ΠΎΠΌ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° stage-Π·ΠΎΠ½Π°):

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π”Π°Π»Π΅Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

1. ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ процСсс rebase Π½Π°Π±Ρ€Π°Π² Π² консоли

ΠŸΡ€ΠΈ этом ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ HEAD, Π±ΡƒΠ΄Π΅Ρ‚ пСрСнСсСн ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ feature, Π° ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ повиснут Π² Π²ΠΎΠ·Π΄ΡƒΡ…Π΅ (Π½Π° Π½ΠΈΡ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ) ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ вскорС ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.

ΠŸΡ€ΠΈ этом, Ссли всС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹, Π±ΡƒΠ΄Π΅Ρ‚ создан ΠΊΠΎΠΌΠΌΠΈΡ‚ D’ ΠΈ rebase ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ послСднСму ΡˆΠ°Π³Ρƒ.

ПослС примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ξ”DE Π±ΡƒΠ΄Π΅Ρ‚ создан послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ E’, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚ΠΊΠΈ feature Π±ΡƒΠ΄Π΅Ρ‚ установлСн Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ E’, Π° HEAD станСт ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ feature β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² состоянии Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ рисункС, rebase ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ C, D ΠΈ E Π²Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

ΠŸΡ€ΠΈ этом ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, созданныС Π² процСссС rebase-Π°, Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΎΠ± ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π°Π²Ρ‚ΠΎΡ€Π΅ ΠΈ Π΄Π°Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Author), Ρ‚Π°ΠΊ ΠΈ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, сдСлавшСм rebase (Commiter):

Π‘ нСбСс Π½Π° зСмлю β€” rebase Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях

На самом Π΄Π΅Π»Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π΅ с двумя Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, Π° с Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ Π² самом простом случаС: master, origin/master, feature ΠΈ origin/feature. ΠŸΡ€ΠΈ этом rebase Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΊΠ°ΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠΎΠΉ ΠΈ Π΅Π΅ origin-ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ feature ΠΈ origin/feature, Ρ‚Π°ΠΊ ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ feature ΠΈ master.

Rebase Π²Π΅Ρ‚ΠΊΠΈ с origin-ΠΎΠΌ

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с rebase, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго Π½Π°Ρ‡Π°Ρ‚ΡŒ с Ρ€Π΅Π±Π΅ΠΉΠ·Π° своих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π²Π΅Ρ‚ΠΊΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Π΅ ΠΊΠΎΠΏΠΈΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ добавляСтС ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ добавляСтся ΠΊΠΎΠΌΠΌΠΈΡ‚, для объСдинСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ merge. Выглядит это ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’Ρ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ Π² 6 (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ считаСм), история ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π½Π°, информация ΠΎΠ± объСдинСнии Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ, Π½Π° ΠΌΠΎΠΉ взгляд, лишняя. Если ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π½Π° нСсколько тСматичСских Π²Π΅Ρ‚ΠΎΠΊ ΠΈ большСС количСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π³Ρ€Π°Ρ„ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Как ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π²Π΅Ρ‚ΠΊΠΎΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ rebase, с ΠΊΠΎΠ»Π»Π΅Π³ΠΎΠΉ

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’ΡƒΡ‚ всС просто, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² консоли ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Force-Ρ€Π΅ΠΆΠΈΠΌ просто ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²Π΅Ρ‚ΠΊΠΈ feature Π½Π° origin ΠΈ насильно устанавливаСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΈ ваш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ.

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹! Если Π²Ρ‹ Π·Π°Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Π΅Ρ‚ΠΊΠΈ, Ρ‚ΠΎ force-push Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ для всСх Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π». ΠŸΡ€ΠΈ этом Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π² Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии. Π’ΠΎ Π΅ΡΡ‚ΡŒ измСнСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ успСли Π·Π°Ρ‚ΡΠ½ΡƒΡ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π² origin-Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, сами ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ β€” сбросятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π²Π΅Ρ‚ΠΊΠΈ. Π­Ρ‚Π° ситуация ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌΠ° β€” достаточно для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π½Π°ΠΉΡ‚ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ послСдним ΠΏΡƒΡˆΠΈΠ» измСнСния Π² Π½Π΅Π΅ ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ успСл ΠΈΡ… Π·Π°Π±Ρ€Π°Ρ‚ΡŒ. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ push, вновь ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΠΈΡ… Π½Π° origin. Но вся эта ΠΌΠΎΡ€ΠΎΠΊΠ° Π²Π°ΠΌ Π½ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ просто Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹.

РСинтСграция тСматичСской Π²Π΅Ρ‚ΠΊΠΈ Π² master

ΠœΡ‹ рассмотрСли всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π² стилС rebase. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π² Π²Π΅Ρ‚ΠΊΡƒ master ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git merge feature. Π’Π΅Ρ‚ΠΊΠ°, подготовлСнная rebase-ΠΎΠΌ Π²ΠΎΠ»ΡŒΠ΅Ρ‚ΡΡ Π² master ΠΏΠΎ fast-forward, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ Π²ΠΏΠ΅Ρ€Π΅Π΄.

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, Π½Π° ΠΌΠΎΠΉ взгляд, merge-ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΈ нСсут Π² сСбС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅ объСдинСния Π²Π΅Ρ‚ΠΎΠΊ. Π­Ρ‚ΠΎΡ‚ Π³Ρ€Π°Ρ„ выглядит ΠΊΠ°ΠΊ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎ такая структура Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Π° ΠΏΡ€ΠΈ соблюдСнии Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… простых ΠΏΡ€Π°Π²ΠΈΠ» всСми Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

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

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ Π³Ρ€Π°Ρ„Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° Π½Π° порядок ΠΏΡ€ΠΈ соблюдСнии Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… простых ΠΏΡ€Π°Π²ΠΈΠ», хотя ΠΎΠ½ΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ сдСлано ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅. ВсС это Π²Π΅Ρ€Π½ΠΎ ΠΏΡ€ΠΈ простой ΠΌΠΎΠ΄Π΅Π»ΠΈ вСтвлСния β€” Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° главная Π²Π΅Ρ‚ΠΊΠ° master ΠΈ нСсколько тСматичСских, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π½Π΅Π΅. Когда ΠΎΡ‚ тСматичСской Π²Π΅Ρ‚ΠΊΠΈ создаСтся другая тСматичСская Π²Π΅Ρ‚ΠΊΠ°, Π΅ΡΡ‚ΡŒ свои Π½ΡŽΠ°Π½ΡΡ‹ ΠΏΡ€ΠΈ rebase-Π΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΉ ΠΈ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ. О Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ самом ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ руководствС.

Иногда споры, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ merge ΠΈΠ»ΠΈ rebase доходят Π΄ΠΎ Ρ…ΠΎΠ»ΠΈΠ²Π°Ρ€Π°. ΠžΡ‚ сСбя ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС Π²Ρ‹Π±ΠΎΡ€ Π·Π° Π²Π°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ этот Π²Ρ‹Π±ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π½ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ владСния Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ инструмСнтом. ΠžΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° для вас Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π² Ρ‚ΠΎΠΌ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ стилС. Π― Π½Π΅ Π°Π³ΠΈΡ‚ΠΈΡ€ΡƒΡŽ Π·Π° повсСмСстноС использованиС rebase-Π°, Π° просто объясняю ΠΊΠ°ΠΊ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. НадСюсь, это ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠ½ΡΡ‚ΡŒ вопросы, связанныС с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ rebase ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π² Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

PS. Π₯ΠΎΡ‡Ρƒ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ своих ΠΊΠΎΠ»Π»Π΅Π³, ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ бСсСды с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΠΌΠ½Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π² основу этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Git Merge ΠΈ Git Rebase: Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Часто Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Merge (слияниС) ΠΈ Rebase (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅). Π’ Π“ΡƒΠ³Π»Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Rebase, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я объясню, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ слияниС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ (ΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Git Merge ΠΈ Git Rebase ΠΏΡ€Π΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ†Π΅Π»ΡŒ. Они ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Π₯отя конСчная Ρ†Π΅Π»ΡŒ одинаковая, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅.

НСкоторыС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Rebase, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Merge. Π’ этом Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы.

Git Merge

БлияниС β€” обычная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… систСмы контроля вСрсий. НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, созданы Π»ΠΈ Π²Π΅Ρ‚ΠΊΠΈ для тСстирования, исправлСния ошибок ΠΈΠ»ΠΈ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, слияниС фиксируСт измСнСния Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС. БлияниС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ содСрТимоС Π²Π΅Ρ‚ΠΊΠΈ источника ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΡ… с Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ. Π’ этом процСссС измСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ цСлСвая Π²Π΅Ρ‚ΠΊΠ°. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ исходных Π²Π΅Ρ‚ΠΎΠΊ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ.
git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚
ΠŸΠ»ΡŽΡΡ‹:

Π‘Π»Π΅ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ master Π² Π²Π΅Ρ‚ΠΊΡƒ feature, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ checkout ΠΈ merge.

Π­Ρ‚ΠΎ создаст Π½ΠΎΠ²Ρ‹ΠΉ Β«Merge commitΒ» Π² Π²Π΅Ρ‚ΠΊΠ΅ feature, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΠ±Π΅ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ.

Git Rebase

Rebase β€” Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ пСрСнСсти измСнСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Rebase сТимаСт всС измСнСния Π² ΠΎΠ΄ΠΈΠ½ Β«ΠΏΠ°Ρ‚Ρ‡Β». Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ‚Ρ‡ Π² Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ слияния, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ пСрСзаписываСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Π’ процСссС устраняСтся Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ история.

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ feature Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ всю Π²Π΅Ρ‚ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π³Π»Π°Π²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° измСняСтся, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² основной Π²Π΅Ρ‚ΠΊΠ΅.

Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΏΡ€ΠΈ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ автоматичСскоС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ обСспСчиваСт ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ историСй ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для очистки истории Π΄ΠΎ слияния Π²Π΅Ρ‚ΠΊΠΈ feature Π² master.

Π­Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, пСрСчислив всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹.

Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ опрСдСляСт, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΠ° послС выполнСния пСрСмСщСния. Упорядочивая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ fixup, squash, edit, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

git pull rebase Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚

Какой ΠΈΠ· Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅? Π§Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ экспСрты?

Π’Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ СдинствСнно ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅. Всё зависит ΠΎΡ‚ потрСбностСй ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°ΠΉΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° основании ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Git. Для вас Π²Π°ΠΆΠ½Π° простота ΠΈΠ»ΠΈ пСрСзаписываниС истории, Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅?

По ΠΌΠ΅Ρ€Π΅ роста ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ становится слоТно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, примСняя слияниС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‡ΠΈΡΡ‚ΡƒΡŽ ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Rebase.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *