πŸ”₯ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС drop commit git Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ! πŸ’‘

"drop commit git Ρ‡Ρ‚ΠΎ это?"

Π’ Git ΠΊΠΎΠΌΠ°Π½Π΄Π° git drop Π½Π΅ сущСствуСт. Однако Π΅ΡΡ‚ΡŒ git reset, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния, Π² Ρ‚ΠΎΠΌ числС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

Как ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

git reset HEAD~1

Π’Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° отмСняСт послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ опасно, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ тСряСтС сохранСнныС измСнСния.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ "drop commit" Π² Git ΠΈ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

"Drop commit" Π² Git - это опСрация, которая позволяСт ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ· истории вашСго рСпозитория. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚Π΅ измСнСния, ΠΎΠ½ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² истории навсСгда. Однако, Π΅ΡΡ‚ΡŒ случаи, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π’ Ρ‚Π°ΠΊΠΈΡ… ситуациях "drop commit" ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ инструмСнтом.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ "drop commit"?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ "drop commit" Π² Git, Π²Π°ΠΌ потрСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько шагов:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ вашСго рСпозитория.
  2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.
  3. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git log, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ скопируйтС Ρ…Π΅Ρˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ.
  4. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase -i <commit-hash>^, Π³Π΄Π΅ <commit-hash> - это Ρ…Π΅Ρˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ скопировали Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС.
  5. ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ отобраТаСтся список ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². НайдитС ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово "pick" ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ Π½Π° "drop".
  6. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.
  7. Git Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ "drop commit" ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ· истории. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² для удалСния, ΡƒΠΊΠ°Π·Π°Π² "drop" ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ….
  8. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ опСрация Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git log снова, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±Ρ‹Π» ΡƒΠ΄Π°Π»Π΅Π½.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования "drop commit"

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ "drop commit". ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:


commit abcdefg1234567 (HEAD -> master)
Author: John Smith <john@example.com>
Date:   Mon Jan 10 12:00:00 2022 +0300
    
    Add feature A
    
commit hijklmn7890123
Author: John Smith <john@example.com>
Date:   Tue Jan 11 13:00:00 2022 +0300
    
    Add feature B
    
commit opqrstu3456789
Author: John Smith <john@example.com>
Date:   Wed Jan 12 14:00:00 2022 +0300
    
    Add feature C

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ hijklmn7890123 ΠΈΠ· истории. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

  1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ…Π΅Ρˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° hijklmn7890123.
  2. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase -i hijklmn7890123^.
  3. ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ список ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π·Π°ΠΌΠ΅Π½ΠΈΠ² "pick" ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ hijklmn7890123 Π½Π° "drop".
  4. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "drop commit", ваша история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


commit abcdefg1234567 (HEAD -> master)
Author: John Smith <john@example.com>
Date:   Mon Jan 10 12:00:00 2022 +0300
    
    Add feature A
    
commit opqrstu3456789
Author: John Smith <john@example.com>
Date:   Wed Jan 12 14:00:00 2022 +0300
    
    Add feature C

Π’Π°ΠΆΠ½Ρ‹Π΅ замСчания

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ опСрация "drop commit" измСняСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ вашСго рСпозитория. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ удаляСтС, ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΡƒΠΆΠ΅ создал свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° основС этих ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΈ нСсостыковкам.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ…Π΅ΡˆΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Π²Π΅Ρ‚ΠΎΠΊ, особСнно Ссли опСрация выполняСтся Π½Π° Π²Π΅Ρ‚ΠΊΠ΅, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ Π³Π»Π°Π²Π½ΠΎΠΉ. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ послСдствия ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "drop commit".

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

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ "drop commit" Π² Git позволяСт ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ· истории вашСго рСпозитория. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ инструмСнтом, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Однако, Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΏΡ€ΠΈ использовании этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° измСняСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ рСпозитория ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ссли ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ ΠΈΠ»ΠΈ основаны Π½Π° Π½ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

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

Git: Π£Ρ€ΠΎΠΊ 7. Revert - ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

2.6 Git - ΠžΡΠ½ΠΎΠ²Ρ‹ - Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚

10.1 Git - ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· revert - ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, revert

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

πŸ”₯ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС drop commit git Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ! πŸ’‘

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ git push upstream ΠΈ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? Π£Π·Π½Π°ΠΉΡ‚Π΅ всС сСйчас!

πŸ”₯ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ git Π² GitHub: Π»Π΅Π³ΠΊΠΈΠΉ способ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов