πŸ”§ΠšΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Git: ΠΏΠΎΠ»Π½Ρ‹ΠΉ руководство

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Git, Π²Π°ΠΌ потрСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git commit --amend. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° позволяСт внСсти измСнСния Π² послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ исправив ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

git commit --amend

ПослС выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Git ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ вашСй систСмы (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Vim ΠΈΠ»ΠΈ Nano), Π³Π΄Π΅ Π²Ρ‹ смоТСтС внСсти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ссли ΠΊΠΎΠΌΠΌΠΈΡ‚ ΡƒΠΆΠ΅ Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Π»ΠΈΡΡŒ Π½Π° Π½Π΅ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны ΠΏΡ€ΠΈ использовании этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ обсудитС свои дСйствия с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ.

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

Git: Как ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚

Git - это распрСдСлСнная систСма контроля вСрсий, которая позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² исходном ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Иногда Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ внСсти измСнСния Π² ΡƒΠΆΠ΅ сдСланный ΠΊΠΎΠΌΠΌΠΈΡ‚. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим способы пСрСзаписи ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Git.

1. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π°, Ссли Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлали ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² сообщСнии ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΠ»ΠΈ вносимых измСнСниях. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git commit --amend. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π³Π΄Π΅ Π²Ρ‹ смоТСтС внСсти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния.

git commit --amend

2. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase -i. Она ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

git rebase -i HEAD~3

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ пСрСзаписываСм послСдниС Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. ПослС выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Git ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π³Π΄Π΅ Π²Ρ‹ смоТСтС Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

Для пСрСзаписи ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ "pick" Π½Π° "edit" ΠΏΠ΅Ρ€Π΅Π΄ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git commit --amend для внСсСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ пСрСзаписи ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π²Ρ‹ измСняСтС ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², поэтому Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ это Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

3. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ Π±ΠΎΠ»Π΅Π΅ старых ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ внСсти измСнСния Π² Π±ΠΎΠ»Π΅Π΅ старыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase -i с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ…Π΅ΡˆΠ° ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. НапримСр:

git rebase -i 4567890

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ пСрСзаписываСм ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, начиная с ΠΊΠΎΠΌΠΌΠΈΡ‚Π° с Ρ…Π΅ΡˆΠ΅ΠΌ "4567890". ПослС открытия Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ.

4. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Если Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. Π’ этом случаС рСкомСндуСтся ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ измСнСния с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

Если измСнСния всС ΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ внСсти, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git push --force для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Однако ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡƒΠΆΠ΅ зависят ΠΎΡ‚ старых ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

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

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

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

Git: ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ (git commit --amend)

5.1 Git - Reset - ЖСсткий reset --hard: ΠΎΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

9.7 Git - ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² - Π˜ΡΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ посСрСдинС Π²Π΅Ρ‚ΠΊΠΈ: autosquash

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

⌨️ Как ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строчку Π² VS Code?

Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ Git: шаг Π·Π° шагом инструкция с использованиСм ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

πŸ”½ Как ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² PyCharm: пошаговая инструкция

πŸ”§ΠšΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Git: ΠΏΠΎΠ»Π½Ρ‹ΠΉ руководство

πŸ”₯ Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git clone Π½Π° виндовс: Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ руководство ΠΈ совСты