π₯ ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ 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, Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ²:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ.
- ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
git log
, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΠΈ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Ρ Π΅Ρ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ. - ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
git rebase -i <commit-hash>^
, Π³Π΄Π΅ <commit-hash> - ΡΡΠΎ Ρ Π΅Ρ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π»ΠΈ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π³Π΅. - ΠΡΠΊΡΠΎΠ΅ΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ². ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ, ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ "pick" ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌ Π½Π° "drop".
- Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ.
- Git Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ "drop commit" ΠΈ ΡΠ΄Π°Π»ΠΈΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΠΈΠ· ΠΈΡΡΠΎΡΠΈΠΈ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΡΠΊΠ°Π·Π°Π² "drop" ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΈΠ· Π½ΠΈΡ .
- ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
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
ΠΈΠ· ΠΈΡΡΠΎΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Ρ
Π΅Ρ ΠΊΠΎΠΌΠΌΠΈΡΠ°
hijklmn7890123
. - ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
git rebase -i hijklmn7890123^
. - ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², Π·Π°ΠΌΠ΅Π½ΠΈΠ² "pick" ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ
hijklmn7890123
Π½Π° "drop". - Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ.
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ "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 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΠΊΠΎΠΌΠΌΠΈΡ ΠΈΠ· ΠΈΡΡΠΎΡΠΈΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π±ΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡΡΠΎΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ.