πŸ”₯ Git reset: Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°? ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС ΠΈ инструкция

Команда git reset:

Команда git reset позволяСт ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния, возвращая Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ этапС.

Π’ΠΎΡ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git reset:

  • git reset --mixed <commit> - отмСняСт ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, сохраняя измСнСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ индСксС;
  • git reset --soft <commit> - отмСняСт ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, сохраняя измСнСния Π² индСксС;
  • git reset --hard <commit> - ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ отмСняСт ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ удаляСт измСнСния.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° git reset ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны ΠΏΡ€ΠΈ Π΅Π΅ использовании ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ послСдствия своих дСйствий.

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

git reset: Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°

Git являСтся распрСдСлСнной систСмой контроля вСрсий, которая позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ историСй ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Одной ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π² Git являСтся `git reset`. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ ΠΊΠ°ΠΊ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ `git reset`?

Команда `git reset` ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСнСния состояния вашСго рСпозитория Git. Она позволяСт Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ состояниям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ внСсти Π½ΡƒΠΆΠ½Ρ‹Π΅ измСнСния.

Π Π΅ΠΆΠΈΠΌΡ‹ git reset

Git reset ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ‚Ρ€ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных Ρ€Π΅ΠΆΠΈΠΌΠ°:

  • Soft reset (Мягкий сброс): Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° `git reset` пСрСносит Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (HEAD) Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ Π½Π΅ мСняСт индСкс ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π­Ρ‚ΠΎ позволяСт Π²Π°ΠΌ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдниС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, сохраняя измСнСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.
  • Mixed reset (Бброс с индСксом): ΠŸΡ€ΠΈ использовании этого Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° `git reset` пСрСносит Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ индСкс Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Однако Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния, внСсСнныС Π² послСдниС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ с чистого листа.
  • Hard reset (ЖСсткий сброс): ЖСсткий сброс ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ отмСняСт измСнСния, внСсСнныС послС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Он пСрСносит Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, индСкс ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, удаляя всС нСсохранСнныС измСнСния. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны с этим Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.

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

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `git reset`.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Мягкий сброс

git reset --soft HEAD~1

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ `git reset --soft` для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, оставив измСнСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `HEAD~1` ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Бброс с индСксом

git reset HEAD~1

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ `git reset` Π±Π΅Π· ΠΎΠΏΡ†ΠΈΠΈ для выполнСния сброса с индСксом. Π­Ρ‚ΠΎ отмСняСт послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ сбрасываСт индСкс, Π½ΠΎ оставляСт Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: ЖСсткий сброс

git reset --hard HEAD~1

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ `git reset --hard` для выполнСния ТСсткого сброса. ВсС измСнСния послС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π±Π΅Π· возмоТности восстановлСния.

Π’Ρ‹Π²ΠΎΠ΄

Команда `git reset` являСтся ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом для управлСния историСй ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Git. Она позволяСт ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ состояниям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния. Однако слСдуСт Π±Ρ‹Ρ‚ΡŒ остороТным ΠΏΡ€ΠΈ использовании ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `git reset --hard`, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ измСнСния. ВсСгда провСряйтС свои дСйствия ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

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

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

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Git. ΠžΡ‚ΠΌΠ΅Π½Π° ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. rebase, revert, reset.

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

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

Как ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² VS Code?

Как ΠΎΡ‚Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π² PyCharm ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ πŸ”§

πŸ”₯ Git reset: Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°? ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС ΠΈ инструкция

Git fixup: Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

πŸ”§ Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ VS Code для PHP πŸ’»