Π Π°Π·Π½ΠΎΠ΅

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° git: ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² — Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Git

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² — Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Git

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Git

Π“ΠΈΡ‚ β€” систСма, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΠΎΡΡ‚ΡŒΡΡ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ошибки. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это СдинствСнный способ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π’ git практичСски всСгда Π΅ΡΡ‚ΡŒ способ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. На ΠΊΡ€Π°ΠΉΠ½ΠΈΠΉ случай спасСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ git clone.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ΠΊΠΎΠΌΠΌΠΈΡ‚ ΡƒΠΆΠ΅ сдСлан, Π½ΠΎ ΠΎΠ½ нас ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π½Π΅ устраиваСт? Π‘ΠΈΡ‚ΡƒΠ°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ всС ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ рСгулярно Π΄Π°ΠΆΠ΅ Ρƒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²:

  • Π—Π°Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹
  • ИзмСнСния Π½ΡƒΠΆΠ½ΠΎ Β«ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
  • ИзмСнСния большС Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹, ΠΈ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ
  • ИзмСнСния Π±Ρ‹Π»ΠΈ сдСланы ΠΏΠΎ ошибкС, ΠΈ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

Git ΠΏΠΎ большСй части систСма Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΏΠ΅Ρ€Ρ‘Π΄Β». ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π³ΠΈΡ‚ΠΎΠΌ β€” созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ, Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ старого. ВсС ситуации, описанныС Π²Ρ‹ΡˆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ ΠΈ бСзопасно. ИзмСнСниС истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² β€” опСрация опасная ΠΈ Ρ‡Ρ€Π΅Π²Π°Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ синхронизации с ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ рСпозиториями. Об этом ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅.

НСсмотря Π½Π° сказанноС Π²Ρ‹ΡˆΠ΅, Π²Π½ΡƒΡ‚Ρ€ΠΈ git ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Ρƒ, Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π‘ ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² понятной, Π° сам процСсс Β«ΠΎΡ‚ΠΊΠ°Ρ‚Π°Β» быстрым.

Git revert

Бамая простая ситуация β€” ΠΎΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ЀактичСски ΠΎΠ½Π° сводится ΠΊ созданию Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт измСнСния ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Π΅ Ρ‚ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отмСняСтся. Π ΡƒΠΊΠ°ΠΌΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ довольно слоТно, поэтому Π² git Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡ‚ΠΊΠ°Ρ‚. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° называСтся git revert:

# Π­Ρ‚ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°
# Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» PEOPLE.md
hexlet-git$: git revert aa600a43cb164408e4ad87d216bc679d097f1a6c
# ПослС этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ откроСтся Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΉ Π²Π²ΠΎΠ΄Π° описания ΠΊΠΎΠΌΠΌΠΈΡ‚Π°
# ΠžΠ±Ρ‹Ρ‡Π½ΠΎ сообщСниС revert Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚, поэтому достаточно просто Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€
[main 65a8ef7] Revert "remove PEOPLE. md"
 1 file changed, 1 insertion(+)
 create mode 100644 PEOPLE.md
# Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ вСрнулся Ρ„Π°ΠΉΠ» PEOPLE.md

hexlet-git$ git log -p

commit 65a8ef7fd56c7356dcee35c2d05b4400f4467ca8
Author: tirion <[email protected]>
Date:   Sat Sep 26 15:32:46 2020 -0400

    Revert "remove PEOPLE.md"

    This reverts commit aa600a43cb164408e4ad87d216bc679d097f1a6c.

diff --git a/PEOPLE.md b/PEOPLE.md
new file mode 100644
index 0000000..4b34ba8
--- /dev/null
+++ b/PEOPLE.md
@@ -0,0 +1 @@
+Haskell Curry

Команда revert «ΠΎΡ‚мСняСт» Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ· истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, это ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΡ‚ΠΎ. Π‘Π΅Π· систСмы контроля вСрсий ΠΎ Ρ‚Π°ΠΊΠΎΠΌ нСльзя Π±Ρ‹Π»ΠΎ ΠΈ ΠΌΠ΅Ρ‡Ρ‚Π°Ρ‚ΡŒ.

Git reset

Иногда ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСланный ΠΏΠΎ ошибкС ΠΊΠΎΠΌΠΌΠΈΡ‚. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈ Π² этом случаС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ git revert, Π½ΠΎ Ρ‚Π°ΠΊ загрязняСтся история. Если этот ΠΊΠΎΠΌΠΌΠΈΡ‚ сдСлан Π±Ρ‹Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСйчас ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ отправлялся Π½Π° Github, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π±Ρ‹ этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π΅ сущСствовало Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅.

Git позволяСт ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π­Ρ‚ΠΎ опасная опСрация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π½ΠΈ Ρƒ ΠΊΠΎΠ³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ вас.

Если ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±Ρ‹Π» ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π²ΠΎ внСшний Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Github, Ρ‚ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС нСльзя, это сломаСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρƒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π²Π°ΠΌΠΈ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.

Для удалСния ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° git reset. ДСлаСтся это Ρ‚Π°ΠΊ:

# добавляСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ сразу ΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΈΠΌ
hexlet-git$ echo 'test' >> INFO.md
hexlet-git$ git add INFO.md
hexlet-git$ git commit -m 'update INFO.md'
[main 17a77cb] update INFO.md
 1 file changed, 1 insertion(+)
 # Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ git push

 hexlet-git$ git reset --hard HEAD~
 HEAD is now at 65a8ef7 Revert "remove PEOPLE.md"

# Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ git log, Ρ‚ΠΎ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Ρ‚Π°ΠΌ большС Π½Π΅Ρ‚

git reset β€” мощная ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² ΠΈ способов Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π‘ Π΅Ρ‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ (Π±Π΅Π· удалСния) ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· истории ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π Π°Π±ΠΎΡ‚Π° с Π½Π΅ΠΉ относится ΠΊ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΌΡƒ использованию git, здСсь ΠΆΠ΅ ΠΌΡ‹ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ°ΠΌΡƒΡŽ Π±Π°Π·Ρƒ.

Π€Π»Π°Π³ --hard ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅. Π‘Π΅Π· Π½Π΅Π³ΠΎ git reset ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ Π΅Π³ΠΎ, Π° помСстит всС измСнСния этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. HEAD~ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΎΡ‚ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°». Если Π±Ρ‹ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π²Π° послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ HEAD~2.

HEAD (Π³ΠΎΠ»ΠΎΠ²Π°) β€” Ρ‚Π°ΠΊ обозначаСтся послСдний сдСланный ΠΊΠΎΠΌΠΌΠΈΡ‚. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ эту Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡŽ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π² ΡƒΡ€ΠΎΠΊΠ΅, посвящСнном Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ устройству git.

Если Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ --hard, Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ подразумСваСтся Ρ„Π»Π°Π³ --mixed. Π’ Ρ‚Π°ΠΊΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ reset отправляСт измСнСния послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ. Π—Π°Ρ‚Π΅ΠΌ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

hexlet-git$ echo 'no code no pain' > README.md
hexlet-git$ git add README.md
hexlet-git$ git commit -m 'update README.md'
[main f85e3a6] update README.md
 1 file changed, 1 insertion(+)

# Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅ΠΌ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚
hexlet-git$ git reset HEAD~
Unstaged changes after reset:
M   README.md

hexlet-git$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   README.md

ПослСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° большС Π½Π΅ сущСствуСт, Π½ΠΎ измСнСния, сдСланныС Π² Π½Ρ‘ΠΌ, Π½Π΅ ΠΏΡ€ΠΎΠΏΠ°Π»ΠΈ. Они находятся Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ для дальнСйшСй Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

  1. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ всС шаги ΠΈΠ· ΡƒΡ€ΠΎΠΊΠ°
  2. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ тСкст Π½Π° No code No pain ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ Π΅Π³ΠΎ с сообщСниСм «update README.md»
  3. Π—Π°Π»Π΅ΠΉΡ‚Π΅ измСнСния Π½Π° Github

ΠžΡΡ‚Π°Π»ΠΈΡΡŒ вопросы? Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΈΡ… Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅Β»

Π’Π°ΠΌ отвСтят ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π₯СкслСта ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ студСнты.

Ошибки, слоТный ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», вопросы >

Нашли ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΡƒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ?

Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ тСкст, Π½Π°ΠΆΠΌΠΈΡ‚Π΅
ctrl + enter
ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π½Π°ΠΌ. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Π½Π΅ΠΉ ΠΌΡ‹ исправим ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈΠ»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠΌ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΡƒ.

Π§Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ получаСтся ΠΈΠ»ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» каТСтся слоТным?

ЗаглянитС Π² Ρ€Π°Π·Π΄Π΅Π» Β«ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅Β»:

  • Π·Π°Π΄Π°ΠΉΡ‚Π΅ вопрос. Π’Ρ‹ быстрСС ΡΠΏΡ€Π°Π²ΠΈΡ‚Π΅ΡΡŒ с трудностями ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Π΅Ρ‚Π΅ Π½Π°Π²Ρ‹ΠΊ постановки ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вопросов, Ρ‡Ρ‚ΠΎ пригодится ΠΈ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ программистом;
  • расскаТитС ΠΎ своих впСчатлСниях. Если курс слишком слоТный, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΎΡ‚Π·Ρ‹Π² ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅;
  • ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ вопросы Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° Π½ΠΈΡ…. Π­Ρ‚ΠΎ Π±Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
Об ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ Π½Π° Π₯СкслСтС

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ самыС послСдниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git?

Π― случайно зафиксировал Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Git , Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΡ… Π½Π° сСрвСр.

Как я ΠΌΠΎΠ³Ρƒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· локального рСпозитория?

git

version-control

git-commit

undo

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

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


Hamza Yerlikaya Β  Β 

29 мая 2009 в 18:09

25 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²


  • git push, Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹

    Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² git ΠΈ сСйчас Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽ Π΅Π³ΠΎ. На ΠΌΠΎΠ΅ΠΉ локальной машинС я часто ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π§Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ я Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€ΠΎΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΠ΄ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ Π Π•ΠŸΠž. Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽ всС сдСланныС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Когда я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ ΠΎΠ΄ΠΈΠ½, это Π½Π΅ большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ с…

  • Git —bare … ΠΏΠΎΡ‡Π΅ΠΌΡƒ fetch Π½Π΅ всСгда ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ самыС послСдниС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹?

    Π£ мСня Π΅ΡΡ‚ΡŒ нСсколько Ρ€Π΅ΠΏΠΎ GIT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π°Π·ΠΈΠ» локально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π² своСм экзСмплярС JIRA, Π½ΠΎ я Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ (для мСня) странноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π£ мСня Π΅ΡΡ‚ΡŒ Π Π•ΠŸΠž, ΠΌΡ‹ Π½Π°Π·ΠΎΠ²Π΅ΠΌ это myrepo. Если я дСлаю git clone ΠΈ git pull, я всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ самыС послСдниС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Однако, ΠΊΠΎΠ³Π΄Π° я…



23327

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ

$ git commit -m "Something terribly misguided"             # (1)
$ git reset HEAD~                                          # (2)
<< edit files as necessary >>                              # (3)
$ git add ...                                              # (4)
$ git commit -c ORIG_HEAD                                  # (5)
  1. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.
  2. Π­Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ с вашим Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ (состояниСм Π²Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° дискС), Π½ΠΎ отмСняСт Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) ΠΈ оставляСт измСнСния , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ зафиксировали, нСстагированными (поэтому ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ «Changes, Π° Π½Π΅ поэтапно для commit» Π² git status, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… снова ΠΏΠ΅Ρ€Π΅Π΄ фиксациСй(ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ)). Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сообщСниС фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) 1, Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто этого git reset --soft HEAD~ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° git reset HEAD~ 2 , Π½ΠΎ оставляСт ваши ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния поэтапными.
  3. ВнСситС исправлСния Π² Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°.
  4. git add всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² свой Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.
  5. ЗафиксируйтС измСнСния, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ староС сообщСниС фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°). reset скопировал ΡΡ‚Π°Ρ€ΡƒΡŽ Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ Π² .git/ORIG_HEAD ; commit с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ -c ORIG_HEAD ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ содСрТит сообщСниС ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠ· старой фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) ΠΈ позволяСт Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Если Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ -C .

Однако ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π½ΠΎΠ²Ρ‹Π΅ измСнСния Π² индСкс, Ρ‚ΠΎ использованиС commit --amend Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΈΡ… ΠΊ вашСй ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°).

Если ΠΊΠΎΠ΄ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° ваш сСрвСр ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ истории (ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅), Ρ‚ΠΎ:

git push origin master --force

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° этот ΠΎΡ‚Π²Π΅Ρ‚:

Как я ΠΌΠΎΠ³Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ HEAD ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ мСсто? (ΠžΡ‚ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½Π°Ρ Π³ΠΎΠ»ΠΎΠ²Π°) & ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚)

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π²Π°ΠΌ git reflog , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для опрСдСлСния SHA-1 для фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°), ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅.


1 ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΡŽΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚), Ссли Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ допустили ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² своСм сообщСнии ΠΎ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) . Π‘ΠΎΠ»Π΅Π΅ простой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚-это git reset (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС измСнСния , внСсСнныС с Ρ‚Π΅Ρ… ΠΏΠΎΡ€), Π° Π·Π°Ρ‚Π΅ΠΌ git commit --amend , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ ваш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ сообщСний ΠΎ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ послСдним сообщСниСм ΠΎ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°).

2HEAD~ — это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ HEAD~1 . ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, посмотритС, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ HEAD Π² git? . Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Esko Luontola Β  Β 

29 мая 2009 в 18:13



10880

ΠžΡ‚ΠΌΠ΅Π½Π° фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡƒΠ³Π°Π΅Ρ‚, Ссли Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Π½Π° самом Π΄Π΅Π»Π΅ это ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ, Ссли Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅.

Допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ это, Π³Π΄Π΅ C-ваш HEAD ΠΈ (F) — состояниС Π²Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².

   (F)
A-B-C
    ↑
  master

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΡΠ΄Π΅Ρ€Π½ΡƒΡŽ Π±ΠΎΠΌΠ±Ρƒ commit C ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° большС Π΅Π΅ Π½Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ всС измСнСния Π² локально ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… . Π’Ρ‹ сдСлаСшь это:

git reset --hard HEAD~1

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся:

 (F)
A-B
  ↑
master

Π’Π΅ΠΏΠ΅Ρ€ΡŒ B-это HEAD. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ использовали --hard , ваши Ρ„Π°ΠΉΠ»Ρ‹ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² своС состояниС ΠΏΡ€ΠΈ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) B.

Ах, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ commit C Π½Π΅ Π±Ρ‹Π» катастрофой, Π° просто Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚), Π½ΠΎ сохранитС свои измСнСния для нСбольшого рСдактирования, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚). Начиная снова ΠΎΡ‚ΡΡŽΠ΄Π°, с C Π² качСствС вашСго HEAD:

   (F)
A-B-C
    ↑
  master

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, оставив --hard :

git reset HEAD~1

Π’ этом случаС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Π°ΠΊΠΎΠ²:

   (F)
A-B-C
  ↑
master

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях HEAD-это просто ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚). Когда Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ git reset HEAD~1 , Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Git ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ HEAD Π½Π°Π·Π°Π΄ Π½Π° ΠΎΠ΄Π½Ρƒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚). Но (Ссли Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ --hard ) Π²Ρ‹ оставляСтС свои Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ. Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ git status ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ зарСгистрировали Π² C. Π’Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ потСряли!

Для самого Π»Π΅Π³ΠΊΠΎΠ³ΠΎ прикосновСния Π²Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свою Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚), Π½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свои Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ индСкс :

git reset --soft HEAD~1

Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ оставляСт ваши Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠΎΠΊΠΎΠ΅, Π½ΠΎ Π΄Π°ΠΆΠ΅ оставляСт ваш индСкс Π² ΠΏΠΎΠΊΠΎΠ΅. Когда Π²Ρ‹ сдСлаСтС git status , Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² ИндСксС находятся Ρ‚Π΅ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅. На самом Π΄Π΅Π»Π΅, сразу послС этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git commit , ΠΈ Π²Ρ‹ Π±Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлали.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Π²Π΅Ρ‰ΡŒ: ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ , ΠΊΠ°ΠΊ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²Π°ΠΌ всС-Ρ‚Π°ΠΊΠΈ Π½ΡƒΠΆΠ΅Π½ ? НС ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, Π²Π΅Ρ€Π½ΠΎ?

НСт, всС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ способ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ git reflog , ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ список (частичных) ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² shas (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ…ΡΡˆΠ΅ΠΉ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ пСрСмСстили. ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ послСднСС…



1761

ДобавляйтС/удаляйтС Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅:

git rm classdir
git add sourcedir

Π—Π°Ρ‚Π΅ΠΌ внСситС измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚:

git commit --amend

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π°Ρ, ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Π°Ρ фиксация(ΠΊΠΎΠΌΠΌΠΈΡ‚) Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ состояниС индСкса — Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π΅Π»Π°Π»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π½Π°ΠΆΠ°Π»ΠΈ. Если Π²Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ, Ρ‚ΠΎ Π²Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исправлСниС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


bdonlan Β  Β 

29 мая 2009 в 18:16



1038

git rm yourfiles/*.class
git commit -a -m "deleted all class files in folder 'yourfiles'"

ΠΈΠ»ΠΈ

git reset --hard HEAD~1

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: привСдСнная Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ измСнСния Π² Ρ„Π°ΠΉΠ»Π°Ρ… .java (ΠΈ Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠžΡ‚ hard reset Π΄ΠΎ HEAD-1 установит Π²Π°ΡˆΡƒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ копию Π² состояниС фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ фиксациСй(ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ).

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Lennart Koopmann Β  Β 

29 мая 2009 в 18:13



793

ИзмСнСниС послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² индСксС:

git rm --cached *.class
git add *.java

Π—Π°Ρ‚Π΅ΠΌ, Ссли это частная Π²Π΅Ρ‚Π²ΡŒ, внСситС измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚:

git commit --amend

Или, Ссли это общая Π²Π΅Ρ‚Π²ΡŒ, сдСлайтС Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚):

git commit -m 'Replace .class files with . java files'

( Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²ΠΊΡƒ .)


ProTipβ„’: Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ *.class Π² gitignore , Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ снова.


Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚)

ИзмСнСниС фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°)-это идСальноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚), Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ являСтся reset .

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Git Π½Π° Π»ΡŽΠ±ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

git reset @~N

Π“Π΄Π΅ N -это количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π΄ΠΎ HEAD , Π° @~ сбрасываСтся Π΄ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вмСсто внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

git reset @~
git add *.java
git commit -m "Add .java files"

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ git help reset , Π² частности Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π½Π° --soft --mixed ΠΈ --hard , для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚.

Reflog

Если Π²Ρ‹ всС испортитС, Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Ρ„Π»ΠΎΠ³ для поиска ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:

$ git reset @~
$ git reflog
c4f708b HEAD@{0}: reset: moving to @~
2c52489 HEAD@{1}: commit: added some .class files
$ git reset 2c52489
... and you're back where you started

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Zaz Β  Β 

31 июля 2010 в 09:39



701

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git revert <commit-id> .

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) ID, просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git log .

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Jaco Pretorius Β  Β 

25 мая 2012 в 16:04



547

Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚), нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ, Π²Ρ‹ сдСлали Π½Π° фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°), ΠΈ Ссли Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚Π΅ΡΡŒ ΠΎΠ± этом, просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. 1

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ваши зафиксированныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ содСрТимоС, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

git reset HEAD

Π’Π΅ΠΏΠ΅Ρ€ΡŒ зафиксированныС Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΈΠ· ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ области Π² Π½Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, поэтому, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π²Ρ‹ Π½ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΉΡ‚ΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ/Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚).

Π‘ΠΎΠ»ΡŒΡˆΠ΅

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Madhan Ayyasamy Β  Β 

31 января 2013 Π² 07:06



515

Если Ρƒ вас установлСно Git Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ git undo , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚). git undo 3 ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ послСдниС Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


nickf Β  Β 

13 дСкабря 2011 Π² 10:18



481

Π― Ρ…ΠΎΡ‚Π΅Π» ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдниС ΠΏΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² нашСм ΠΎΠ±Ρ‰Π΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π― посмотрСл ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ…ΠΎΡ‚Π΅Π» Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ. Π—Π°Ρ‚Π΅ΠΌ я Π½Π°Π±Ρ€Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.

prompt> git reset --hard 5a7404742c85
HEAD is now at 5a74047 Added one more page to catalogue
prompt> git push origin master --force
Total 0 (delta 0), reused 0 (delta 0)
remote: bb/acl: neoneye is allowed. accepted payload.
To [email protected]:thecompany/prometheus.git
 + 09a6480...5a74047 master -> master (forced update)
prompt>

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


neoneye Β  Β 

06 апрСля 2012 Π² 13:58



452

Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git rebase -i для этой Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ появляСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ список, Π³Π΄Π΅ я ΠΌΠΎΠ³Ρƒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ прямо, ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ здСсь, Π½ΠΎ это просто каТСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ .

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅, сколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ€ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ послСдними трСмя)

git rebase -i HEAD~3

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹ΠΉ список

pick aa28ba7 Sanity check for RtmpSrv port
pick c26c541 RtmpSrv version option
pick 58d6909 Better URL decoding support

Π—Π°Ρ‚Π΅ΠΌ Git ΡƒΠ΄Π°Π»ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ для любой строки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Steven Penny Β  Β 

25 октября 2012 Π² 03:41



434

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚)

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git-gui (ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ) для выполнСния git commit --amend . Из GUI Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°). Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сообщСниС ΠΎ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°).

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚)

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡΠ±Ρ€ΠΎΡΡŒΡ‚Π΅ свою Π²Π΅Ρ‚ΠΊΡƒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ мСстополоТСниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ gitk ΠΈΠ»ΠΈ git rebase ). Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ измСнСния ΠΈΠ· сохранСнной ΠΊΠΎΠΏΠΈΠΈ. ПослС сборки мусора Π² вашСм локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всС это Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git reset HEAD~1 .

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ : нСостороТноС использованиС git reset -это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ привСсти Π²Π°ΡˆΡƒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ копию Π² Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠ΅ состояниС. Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ этого, Ссли ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚)

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ вишни ( git-revert), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния.

Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ пСрСнСсли Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния Π² свою Π²Π΅Ρ‚ΠΊΡƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это…

git revert --no-edit HEAD

Π—Π°Ρ‚Π΅ΠΌ пСрСмСститС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ Π² ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ фиксаций(ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²) ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΎΠ±Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ .


Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: коррСкция

частной Π²Π΅Ρ‚Π²ΠΈ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ опасно-ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ локальная копия Π²Π΅Ρ‚Π²ΠΈ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ это, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΠ΅.

git push --delete (branch_name) ## remove public version of branch

ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚Π΅ свою Π²Π΅Ρ‚Π²ΡŒ локально, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π΅Π΅…

git push origin (branch_name)

Π’ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ случаС Π²Π°ΠΌ, вСроятно, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ваша история фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) частной Π²Π΅Ρ‚Π²ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΠΎΠΉ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) (см. Ρ€Π°Π·Π΄Π΅Π» «ΠšΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚)» Π²Ρ‹ΡˆΠ΅), Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ сквош-слияниС , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Brent Bradburn Β  Β 

23 апрСля 2013 Π² 17:27



347

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ навсСгда ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈ Π²Ρ‹ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ — Ρ‚ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

git log 

Π’ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ —

git reset --hard <commit_id>

git push origin <branch_name> -f

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


poorva Β  Β 

17 мая 2013 в 13:02



345

Если Π²Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ»ΠΈ Ρ…Π»Π°ΠΌ Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈ,

git reset --soft HEAD~1

HEAD~1 -это сокращСниС ΠΎΡ‚ commit before head. Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ SHA-1 ΠΈΠ· hash, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. —soft option ΡƒΠ΄Π°Π»ΠΈΡ‚ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚), Π½ΠΎ оставит всС ваши ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ «ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°)», ΠΊΠ°ΠΊ выразился Π±Ρ‹ git status.
git rm —cached [files you do not need]
git add [files you need]
git commit -c ORIG_HEAD

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ gitk ΠΈΠ»ΠΈ git log —stat

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


egridasov Β  Β 

18 июля 2013 в 06:41


ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:

Как ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git?

Π― Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΈ Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ screwed…after, ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: git reset —hard git rebase origin git fetch git pull…

ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Git Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚ для git-svn

Π’ настоящСС врСмя, ΠΊΠΎΠ³Π΄Π° я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ git svn dcommit git, создаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² SVN для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ локального ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я сдСлал с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСй синхронизации с SVN. Π•ΡΡ‚ΡŒ Π»ΠΈ…

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ состояниС?

Π― объСдинил ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ Π² своС локальноС Π Π•ΠŸΠž, ΠΈ ΠΎΠ½Π° создала 26 Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ я Ρ…ΠΎΡ‡Ρƒ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ этот merge, Π½ΠΎ ΠΎΠ½ Π΄ΡƒΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ довольно скучно ΠΈ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ошибкам Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ…

git push, Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹

Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² git ΠΈ сСйчас Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽ Π΅Π³ΠΎ. На ΠΌΠΎΠ΅ΠΉ локальной машинС я часто ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π§Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ я Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€ΠΎΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΠ΄ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ Π Π•ΠŸΠž. Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽ…

Git —bare … ΠΏΠΎΡ‡Π΅ΠΌΡƒ fetch Π½Π΅ всСгда ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ самыС послСдниС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹?

Π£ мСня Π΅ΡΡ‚ΡŒ нСсколько Ρ€Π΅ΠΏΠΎ GIT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π°Π·ΠΈΠ» локально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π² своСм экзСмплярС JIRA, Π½ΠΎ я Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ (для мСня) странноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π£ мСня Π΅ΡΡ‚ΡŒ Π Π•ΠŸΠž, ΠΌΡ‹ Π½Π°Π·ΠΎΠ²Π΅ΠΌ это…

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Git, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я сдСлал?

МнС Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Git. МнС Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я ΠΌΠΎΠ³ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΡŽ.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдниС n ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²?

Π― Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π°Π΄ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹:- aaaaaaa Implement function A bbbbbbb Implement function B ccccccc Implement function C Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° , Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ снова…

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² git

Π― ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ» Π΄Π²Π° прСступлСния ΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ продвинулся. Как я ΠΌΠΎΠ³Ρƒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ я Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π». Π― всСгда Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ это сбросит Π΅Π³ΠΎ: git checkout master Π½ΠΎ это Π½Π΅ сработало. Π― Ρ‚Π°ΠΊΠΆΠ΅…

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний git commit, Ссли ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ?

Π― знаю, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ : ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ самыС послСдниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git? Однако Ссли ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ это сообщСниС…

Как ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ самыС послСдниС 10 ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΊΠΈ Π² git

Π― Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ самыС послСдниС 10 ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ git. Π― знаю, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git branch -r —sort=-committerdate , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ отсортированный ΠΏΠΎ…

Git: ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ merge

Π•ΡΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, с двумя Π±Ρ€Π°Π½Ρ‡Π°ΠΌΠΈ β€” master ΠΈΒ rdsmanager_NG-1.

ИзмСнСния Π²Β rdsmanager_NG-1 Π±Ρ‹Π»ΠΈ смСрдТСны Π² master.

НСобходимо ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это объСдинСниС.

Находим «лишний» ΠΌΠ΅Ρ€Π΄ΠΆ:

D:RDSrdsmanager>git log
commit d22654c64574d1f01ef49f12bf0688c7c9cc3c1d
Author: Your Name <[email protected]>
Date:   Wed Sep 2 00:42:05 2015 +0300

    11

commit 7bad6f70aa0d10717b55a141e9d85b4305ade67c
Author: User Name <[email protected]>
Date:   Tue Sep 1 17:52:05 2015 +0300

    NG-6727 RDSmanager user fix

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС β€” ΠΊΠΎΠΌΠΌΠΈΡ‚ с IDΒ d22654c64574d1f01ef49f12bf0688c7c9cc3c1d β€” Π½Π΅ Π½ΡƒΠΆΠ΅Π½.

ВыполняСм ΠΎΡ‚ΠΊΠ°Ρ‚ Π΄ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°:

D:RDSrdsmanager>git reset --hard 7bad6f70aa0d10717b55a141e9d85b4305ade67c
HEAD is now at 7bad6f7 NG-6727 RDSmanager user fix

БохраняСм измСнСния Π² самом Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ:

D:RDSrdsmanager>git push --force origin master
Total 0 (delta 0), reused 0 (delta 0)
To git@bitbucket. domain/rdsmanager.git
 + d22654c...7bad6f7 master -> master (forced update)

Π“ΠΎΡ‚ΠΎΠ²ΠΎ:

D:RDSrdsmanager>git log
commit 7bad6f70aa0d10717b55a141e9d85b4305ade67c
Author: User Name <[email protected]>
Date:   Tue Sep 1 17:52:05 2015 +0300

    NG-6727 RDSmanager user fix

commit be299f2873ac3aa8f7b26c74914e65c022a82ddd
Author: User Name <[email protected]>
Date:   Tue Sep 1 17:50:46 2015 +0300

    NG-6727 RDSmanager user fix

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΌΠ΅Ρ€Π΄ΠΆΠ°.

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π±Ρ€Π°Π½Ρ‡ Π·Π°Π½ΠΎΠ²ΠΎ, с ID ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΎΡ‚ΠΌΠ΅Π½Ρ‘Π½:

D:RDSrdsmanager>git branch -f rdsmanager_NG-1 d22654c64574d1f01e
D:RDSrdsmanager>git log
commit d22654c64574d1f01ef49f12bf0688c7c9cc3c1d
Author: Your Name <[email protected]>
Date:   Wed Sep 2 00:42:05 2015 +0300

    11

commit 7bad6f70aa0d10717b55a141e9d85b4305ade67c
Author: User Name <[email protected]>
Date:   Tue Sep 1 17:52:05 2015 +0300

    NG-6727 RDSmanager user fix

ВсС Π΄Π°Π½Π½Ρ‹Π΅ снова Π½Π° мСстС.

f49f12bf0688c7c9cc3c1d

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ:

D:RDSrdsmanager>git branch
* master
  rdsmanager_NG-1

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ Π±Ρ€Π°Π½Ρ‡, ΠΈ провСряСм:

D:RDSrdsmanager>git checkout rdsmanager_NG-1
Switched to branch 'rdsmanager_NG-1'
D:RDSrdsmanager>git log
commit d22654c64574d1f01ef49f12bf0688c7c9cc3c1d
Author: Your Name <[email protected]>
Date:   Wed Sep 2 00:42:05 2015 +0300

    11

commit 7bad6f70aa0d10717b55a141e9d85b4305ade67c
Author: user Name <[email protected]>
Date:   Tue Sep 1 17:52:05 2015 +0300

    NG-6727 RDSmanager user fix

ВсС измСнСния Π½Π° мСстС.

Как это ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ?! Git-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для исправлСния своих ошибок

Если Π²Ρ‹ ошиблись Π² Git’С, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ происходит ΠΈ ΠΊΠ°ΠΊ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, β€” нСпростая Π·Π°Π΄Π°Ρ‡Π°. ДокумСнтация Git β€” это ΠΊΡ€ΠΎΠ»ΠΈΡ‡ΡŒΡ Π½ΠΎΡ€Π°, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π²Ρ‹Π»Π΅Π·Π΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зная ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, которая Ρ€Π΅ΡˆΠΈΡ‚ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

РассказываСм ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… ситуаций.

Π’ΠΎΡ‚ Π±Π»ΠΈΠ½, я сдСлал Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ то… Π£ Git вСдь Π΅ΡΡ‚ΡŒ машина Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ?!

git reflog
# Π’ΡƒΡ‚ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ всё, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π»ΠΈ
# Π² Git Π²ΠΎ всСх Π²Π΅Ρ‚ΠΊΠ°Ρ….
# Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π΅ΡΡ‚ΡŒ индСкс HEAD@{index}.
# НайдитС Ρ‚ΠΎΡ‚, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ всё сломалось.
git reset HEAD@{index}
# Машина Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΊ вашим услугам.

Π’Π°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ случайно ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ, ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ слияниС, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ всё сломалось. reflog ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ часто β€” Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Git.

Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлал ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ!

# ВнСситС измСнСния
git add . # ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
git commit --amend --no-edit
# Π’Π΅ΠΏΠ΅Ρ€ΡŒ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ содСрТит ваши измСнСния.
# Π’ΠΠ˜ΠœΠΠΠ˜Π•! Никогда Π½Π΅ измСняйтС ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½ΡƒΠΆΠ½Π° Ссли Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ»ΠΈ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΌΠ΅Π»ΠΎΡ‡ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ±Π΅Π» послС Π·Π½Π°ΠΊΠ° =. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ внСсти измСнСния Π½ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ rebase -i, Π½ΠΎ это Π³ΠΎΡ€Π°Π·Π΄ΠΎ дольшС.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Никогда Π½Π΅ измСняйтС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² локальной Π²Π΅Ρ‚ΠΊΠ΅, ΠΈΠ½Π°Ρ‡Π΅ Π²Π°ΠΌ ΠΊΠΎΠ½Π΅Ρ†.

МнС Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сообщСниС послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°!

git commit --amend
# ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ сообщСний ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

Π’ΡƒΠΏΡ‹Π΅ трСбования ΠΊ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ сообщСний…

Π― случайно Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ» Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² мастСр, хотя Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ!

# Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния мастСра.
git branch some-new-branch-name
# А эта β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ· мастСр-Π²Π΅Ρ‚ΠΊΠΈ.
git reset HEAD~ --hard
git checkout some-new-branch-name
# Π’Π΅ΠΏΠ΅Ρ€ΡŒ ваш ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ нСзависим :)

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Ссли Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ»ΠΈ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ git reset HEAD@{ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ-количСство-ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²-Π½Π°Π·Π°Π΄} вмСсто HEAD~.

Ну ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. Π― Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ» Π½Π΅ Π² Ρ‚Ρƒ Π²Π΅Ρ‚ΠΊΡƒ!

# ΠžΡ‚ΠΌΠ΅Π½ΡΠ΅Ρ‚ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ оставляСт измСнСния доступными.
git reset HEAD~ --soft
git stash
# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ Π½Π° Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.
git checkout name-of-the-correct-branch
git stash pop
# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π½Π΅ ΠΏΠ°Ρ€ΡŒΡ‚Π΅ΡΡŒ ΠΈ Π·Π°ΠΊΠΈΠ½ΡŒΡ‚Π΅ всС сразу.
git add .
git commit -m Β«Π’ΡƒΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ вашС сообщСниС»
# Π’Π΅ΠΏΠ΅Ρ€ΡŒ ваши измСнСния Π² Π½ΡƒΠΆΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅.

МногиС Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ cherry-pick, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ большС ΠΏΠΎ Π΄ΡƒΡˆΠ΅.

git checkout name-of-the-correct-branch
# Π‘Π΅Ρ€Ρ‘ΠΌ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ· мастСра.
git cherry-pick master
# УдаляСм Π΅Π³ΠΎ ΠΈΠ· мастСра.
git checkout master
git reset HEAD~ --hard

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ diff, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит

Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ измСнСния Π±Ρ‹Π»ΠΈ внСсСны, Π½ΠΎ diff пуст, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ индСксировали измСнСния (Ρ‡Π΅Ρ€Π΅Π· add). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π»Π°Π³.

git diff --staged

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, «это Π½Π΅ Π±Π°Π³, Π° Ρ„ΠΈΡ‡Π°Β», Π½ΠΎ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда это чСртовски Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ.

МнС Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌΒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» сдСлан 5 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½Π°Π·Π°Π΄

# НайдитС ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.
git log
# МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стрСлочки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ список Π²Π²Π΅Ρ€Ρ… ΠΈ Π²Π½ΠΈΠ·.
# Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ…ΡΡˆ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.
git revert  [Ρ‚ΠΎΡ‚ Ρ…ΡΡˆ]
# Git создаст Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ.
# ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΠ»ΠΈ просто сохранитС Π΅Π³ΠΎ.

Π’Π°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π°Π·Π°Π΄ ΠΈ ΠΊΠΎΠΏΠΈΠΏΠ°ΡΡ‚ΠΈΡ‚ΡŒ старыС Ρ„Π°ΠΉΠ»Ρ‹, замСщая ΠΈΠΌΠΈ Π½ΠΎΠ²Ρ‹Π΅. Если Π²Ρ‹ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ»ΠΈ Π±Π°Π³, Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ revert.

Помимо этого, ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ†Π΅Π»Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Но слСдуя ΠΊΠ°Π½ΠΎΠ½Ρƒ Git’а, это Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΆΠ΅ совсСм Π΄Ρ€ΡƒΠ³ΠΈΠ΅ команды…

МнС Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния Π² Ρ„Π°ΠΉΠ»Π΅

# НайдитС Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ. 
git log
# Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ…ΡΡˆ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.
git checkout [Ρ‚ΠΎΡ‚ Ρ…ΡΡˆ] --path/to/file
# Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² индСксС окаТСтся старая вСрсия Ρ„Π°ΠΉΠ»Π°.
git commit -m «О ΠΌΠ°ΠΉ Π³Π°Π΄Π±Π», Π²Ρ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ использовали копипаст»

ИмСнно поэтому checkout β€” Π»ΡƒΡ‡ΡˆΠΈΠΉ инструмСнт для ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π°Ρ….

Π”Π°Π²Π°ΠΉ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ, Миша, всё Ρ…**ня

cd ..
sudo rm -r fucking-git-repo-dir
git clone https://some.github.url/fucking-git-repo-dir.git
cd fucking-git-repo-dir

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ исходной вСрсии (Ρ‚. Π΅. ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС измСнСния), Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ.

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны, эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΈ Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΡ‹.

# ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ послСднСС состояниС origin.
git fetch origin
git checkout master
git reset --hard origin/master
# Π£Π΄Π°Π»ΠΈΡ‚ΡŒ нСиндСксированныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ.
git clean -d --force
# ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ checkout/reset/clean для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ испорчСнной Π²Π΅Ρ‚ΠΊΠΈ.

***

Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Git Π½ΡƒΠΆΠ½Ρ‹ для экстрСнных ситуаций, Π½ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΈ. ΠŸΡ€ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с пояснСниями писали Ρ‚ΡƒΡ‚:

Β 

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Oh Shit, Git!?!Β»

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² GIT

НС часто, Π½ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько всС ΠΏΠ»ΠΎΡ…ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

Битуация 1: ΠšΠΎΠΌΠΌΠΈΡ‚ ΠΏΠ»ΠΎΡ…, Π½ΠΎ Π½Π΅ Π±Π΅Π·Π½Π°Π΄Π΅ΠΆΠ΅Π½

Π’Π°ΡˆΠΈ измСнСния Π΅Ρ‰Π΅ Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° сСрвСр, Π½ΠΎ локально Π²Ρ‹ ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ commit. НуТно ΠΊΠ°ΠΊ Ρ‚ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ всС Ρ‚Π°ΠΊΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ.




ΠšΠΎΠΌΠΌΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ Π² локальной Π²Π΅Ρ‚ΠΊΠ΅, Π° Ρ„Π°ΠΉΠ»Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° окаТутся Π² статусС Β«ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Β» (to be commited).

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΊΠΈ.

Битуация 2: ΠšΠΎΠΌΠΌΠΈΡ‚ Π±Π΅Π·Π½Π°Π΄Π΅ΠΆΠ΅Π½

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ совсСм Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ годится, ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ Π±Ρ‹ Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ. ИзмСнСния Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ локально.

# случай 2: Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ

# смотрим Π΅Π³ΠΎ Π² истории Π²Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ Π½Π΅ΠΌΡƒ

git log

git reset —hard abcdef0104938745498374897043

# дальшС трСбуСтся Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСрвСр ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

git push —force



git

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ


Данная запись ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π² 24.11.2018 16:17 ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° Π² ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.
Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ† страницы ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ваш ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

Мало Π±ΡƒΠΊΠ°Ρ„Ρ„? Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ссчо !

ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ Π²Π΅Ρ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· origin

ΠΠΎΡΠ±Ρ€ΡŒ 8, 2018 Π³.

Когда Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ Π½Π΅ просто пошло Π½Π΅ Ρ‚Π°ΠΊ, Π° зашло слишком Π΄Π°Π»Π΅ΠΊΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория (origin)?



Π― ΠΏΡ€ΠΈΠ±Π΅Π³Π°ΡŽ ΠΊ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Ссли экспСримСнты Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· зашли Π² Ρ‚ΡƒΠΏΠΈΠΊ, Π°
[crayon-6065b1c4accd7959155698/]
Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ …

Π§ΠΈΡ‚Π°Ρ‚ΡŒ

Вонкости настройки Π² .gitignore

Июль 17, 2017 г.

Настройки Π² Ρ„Π°ΠΉΠ»Π΅ .gitignore ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· списка Ρ„Π°ΠΉΠ»ΠΎΠ² сканируСмых GIT, всС Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π½Π°Π΄ΠΎ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΡŽΠ·Π΅Ρ€-Ρ„Π°ΠΉΠ»Ρ‹, изобраТСния, Π°Ρ€Ρ…ΠΈΠ²Ρ‹, докумСнтация ΠΈ Ρ‚.ΠΏ.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассмотрим Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ случай настоСк Π²Β .gitignore. …

Π§ΠΈΡ‚Π°Ρ‚ΡŒ

ΠžΡ‚ΠΌΠ΅Π½Π° дСйствий Π²Β Git

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

НС сущСствуСт ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ способа ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ дСйствий Π² Git. ΠžΡ‚ΠΌΠ΅Π½Π° производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄. ΠœΡ‹ рассмотрим β€œΠΏΠ΅Ρ€Π²ΡƒΡŽ пятСрку” сцСнариСв, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒΡΡ дальшС.Β 

ΠžΡ‚ΠΌΠ΅Π½Π° GitΒ Add

Один ΠΈΠ· самых распространСнных вопросов Π² сообщСствС Git Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: β€œΠšΠ°ΠΊ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ git add ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ?” Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ дСйствия Π½Π°Π΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈΠ»ΠΈ всС внСсСнныС измСнСния.Β 

РСшСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ потрСбуСтся для этого, вСсьма простоС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», просто Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git reset:

git reset <file>

Для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ запуститС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

git reset

ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΎΡ‚ΠΊΠ°Ρ‚Π΅ становится Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎΠΉ, Ссли Π²Ρ‹ сдСлали ΠΊΠΎΠΌΠΌΠΈΡ‚ слишком Ρ€Π°Π½ΠΎ ΠΈ Π·Π°Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° amend, Ρ‡Ρ‚ΠΎΠ±Ρ‹ внСсти измСнСния, Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ снова.Β 

Как ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ GitΒ Merge

ОбъСдинСниС ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ. Но, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свою ΠΎΡˆΠΈΠ±ΠΊΡƒ! Π”Π°Π²Π°ΠΉΡ‚Π΅ прСдставим сцСнарий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ измСнСния ΠΈ осознали, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сдСланноС объСдинСниС.

Π—Π΄Π΅ΡΡŒ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° класса β€œΠΎΡ‚ΠΌΠ΅Π½Π°β€: git revert. НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ Π½Π° мастСр-Π²Π΅Ρ‚ΠΊΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git checkout:

git checkout master

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡˆΠ°Π³β€Šβ€”β€ŠΠ·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git log, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ID сдСланного объСдинСния:

git log

Π—Π°Ρ‚Π΅ΠΌ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ упомянутому ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

git revert -m 1 <ΠΊΠΎΠΌΠΌΠΈΡ‚ объСдинСния>

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ -m 1Β , Π²Ρ‹ Π΄Π°Π΅Ρ‚Π΅ Git ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅: Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ элСмСнту мастСр-Π²Π΅Ρ‚ΠΊΠΈ, ΠΊΡƒΠ΄Π° Π±Ρ‹Π» ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ ΠΊΠΎΠΌΠΌΠΈΡ‚ объСдинСния. НапримСр, использованиС -m 2 сказало Π±Ρ‹ Git Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ элСмСнту Π²Π΅Ρ‚ΠΊΠΈ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΏΡ€ΠΈΡˆΠ΅Π» запрос Π½Π° объСдинСниС.

Git Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ просмотра, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ объСдинСнии Π²Π΅Ρ‚ΠΎΠΊ. Β 

Как ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ GitΒ Reset

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ супСркороткий способ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git reset:

git reset β€˜[emailΒ protected]{1}’

Π‘Π»Π΅Π΄ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git reflog, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π» всСх ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ (Ρ‚.Π΅. ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΎΠΊ, сброс, ΠΊΠΎΠΌΠΌΠΈΡ‚, объСдинСниС).Β 

ΠžΡ‚ΠΌΠ΅Π½Π° послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π²Β Git

БущСствуСт нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ git commit. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΈΡ… ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

ΠšΠΎΠΌΠ°Π½Π΄Ρƒ git reset ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ внСсСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

git reset β€” soft HEAD~x (or git reset β€” soft commit hash).
git reset β€” soft HEAD~x

ВмСсто ~x Π²Π²Π΅Π΄ΠΈΡ‚Π΅ число. НапримСр, Ссли Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ~4, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° повлияСт Π½Π° Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ снизу ΠΊΠΎΠΌΠΌΠΈΡ‚. Если Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ число, git resetβ€Šβ€”β€Šsoft HEAD примСнится ΠΊ послСднСму ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.

Когда Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git resetβ€Šβ€”β€Šsoft HEAD, Ρ‚ΠΎ просто отмСняСтС послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΏΡ€ΠΈ этом внСсСнныС измСнСния останутся Π² вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ ΠΈ Π² вашСм индСксС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ git commit создаст Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ самыми измСнСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ β€œΠΎΠ±Π½ΡƒΠ»ΠΈΠ»ΠΈβ€ ΠΏΠ΅Ρ€Π΅Π΄ этим.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄β€Šβ€”β€ŠΡΡ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° git revert HEAD~x (git resetβ€Šβ€”β€Šhard commit hash), которая отмСняСт измСнСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Π² HEAD, ΠΈ создаСт Π½ΠΎΠ²Ρ‹ΠΉ с Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΌΠΈ измСнСниями:

git revert HEAD ~x

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² случаС с ΠΎΠ±Ρ‰ΠΈΠΌΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ рСпозиториями.

ΠžΡ‚ΠΌΠ΅Π½Π° GitΒ Rebase

Допустим, Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase Π² локальной Π²Π΅Ρ‚ΠΊΠ΅ git ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ Π΅Π΅ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π‘Π»Π΅Π΄ΠΎΠΌ Π²Ρ‹ поняли, Ρ‡Ρ‚ΠΎ это Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ вашим оТиданиям, ΠΈ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сдСланноС.Β 

Π‘Π°ΠΌΡ‹ΠΉ простой способ β€Šβ€”β€Š Π½Π°ΠΉΡ‚ΠΈ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ вашСй Π²Π΅Ρ‚ΠΊΠΈ, запустив ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git reflog

Π‘Π»Π΅Π΄ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, воспользовавшись git reset.

git reset β€” hard [emailΒ protected]{5}

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС старым ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Π±Ρ‹Π» HEAD5.

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

Π’ΠΎΡ‚ ΠΈ всС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Git. Π₯ΠΎΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΈ Π½Π΅Ρ‚, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎ ошибкС.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅:


ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ W3docs: Undoing in Git

Как ΠΌΠ½Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git?

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½Π°, Ссли Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Π½Π° самом Π΄Π΅Π»Π΅ это ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ, Ссли Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅.

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ρƒ вас это Π΅ΡΡ‚ΡŒ, Π³Π΄Π΅ C — это ваша Π“ΠžΠ›ΠžΠ’Π, Π° (F) — это состояниС Π²Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².

   (F)
A-B-C
    ↑
  master

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Π½ΡƒΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ C ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° большС Π΅Π³ΠΎ Π½Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ всС измСнСния Π² локально ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… . Π’Ρ‹ дСлаСшь это:

git reset --hard HEAD~1

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

 (F)
A-B
  ↑
master

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π‘ — Π“ΠžΠ›ΠžΠ’Π. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ использовали --hard, ваши Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² своС состояниС ΠΏΡ€ΠΈ фиксации B.

Ах, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ commit C Π±Ρ‹Π» Π½Π΅ катастрофой, Π° всСго лишь ошибкой. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ сохранитС свои измСнСния для нСбольшого рСдактирования, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Начиная снова здСсь, с C Π² качСствС вашСй Π³ΠΎΠ»ΠΎΠ²Ρ‹:

   (F)
A-B-C
    ↑
  master

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, оставив --hard:

git reset HEAD~1

Π’ этом случаС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

   (F)
A-B-C
  ↑
master

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях HEAD — это просто ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚. Когда Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ a git reset HEAD~1, Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Git ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ HEAD Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚. Но (Ссли Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ --hard) Π²Ρ‹ оставляСтС свои Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ. Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ git statusΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ зарСгистрировали Π² C. Π’Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ потСряли!

Для Π»Π΅Π³ΠΊΠΎΠ³ΠΎ прикосновСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°ΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свои Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ индСкс :

git reset --soft HEAD~1

Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ оставляСт ваши Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠΎΠΊΠΎΠ΅, Π½ΠΎ Π΄Π°ΠΆΠ΅ оставляСт ваш индСкс Π² ΠΏΠΎΠΊΠΎΠ΅. Когда Π²Ρ‹ это сдСлаСтС git status, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² индСксС Π΅ΡΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅. ЀактичСски, сразу послС этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git commitΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлал.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Π²Π΅Ρ‰ΡŒ: ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠ°ΠΊ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ? НС ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, ΠΏΡ€Π°Π²Π΄Π°?

НСт, Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ способ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ. Π’ΠΈΠΏ git reflogΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ список (частично) ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ШАБ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Ρ…ΡΡˆ) , Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΈΡΡŒ Π²ΠΎΠΊΡ€ΡƒΠ³ Π² Найти ΠΊΠΎΠΌΠΌΠΈΡ‚ Π²Ρ‹ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΠ»ΠΈ, ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это.:

git checkout -b someNewBranchName shaYouDestroyed

Π’Ρ‹ сСйчас воскрСсили этот ΠΊΠΎΠΌΠΌΠΈΡ‚. ΠšΠΎΠΌΠΈΡ‚Π΅Ρ‚Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΡŽΡ‚ΡΡ Π² Git Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 90 Π΄Π½Π΅ΠΉ, поэтому ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΈ спасти Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‚ ΠΊΠΎΠ³ΠΎ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Git — devconnected

Если Π²Ρ‹ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ»ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€-программист, ΠΎΡ‡Π΅Π½ΡŒ вСроятно, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь отправляСтС ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² свой Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git.

Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π²Ρ‹ зафиксировали Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ слСдуСт ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git.

Иногда ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ внСсти Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ фиксации.

Как слСдствиС, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈΠ· вашСго рСпозитория Git.

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

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Git со сбросом

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Git — Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«git resetΒ» с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ «–softΒ», которая сохранит измСнСния, внСсСнныС Π² ваши Ρ„Π°ΠΉΠ»Ρ‹. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это Β«HEAD ~ 1Β».

ПослСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· вашСй истории Git.

  $ git reset - soft HEAD ~ 1  

Если Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с этой записью, Β«HEAD ~ 1Β» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ HEAD (послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ) Π½Π° ΠΎΠ΄Π½Ρƒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Ρ€Π°Π½ΡŒΡˆΠ΅ Π² истории ΠΆΡƒΡ€Π½Π°Π»Π°.

  $ git ΠΆΡƒΡ€Π½Π°Π» --oneline

3fad532 ПослСдняя фиксация (HEAD)
3bnaj03 ΠšΠΎΠΌΠΌΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ HEAD (HEAD ~ 1)
vcn3ed5 Π”Π²Π΅ фиксации ΠΏΠ΅Ρ€Π΅Π΄ HEAD (HEAD ~ 2)  

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊΠΎΠ²ΠΎ влияниС этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹?

ΠšΠΎΠΌΠ°Π½Π΄Ρƒ Β«git resetΒ» ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ , ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«git addΒ» , которая, ΠΏΠΎ сути, добавляСт Ρ„Π°ΠΉΠ»Ρ‹ Π² индСкс Git.

ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΎΠΏΡ†ΠΈΠΈ «–softΒ» Git ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ Π² индСксС Π²ΠΎΠΎΠ±Ρ‰Π΅.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° Π² свою послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ внСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² этот Ρ„Π°ΠΉΠ».

  $ git log --oneline --graph

* b734307 (HEAD -> master) Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ "file1"
* 90f8bb1 Вторая фиксация
* 7083e29 ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ фиксация рСпозитория  

Как слСдствиС, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«git resetΒ» с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ «–softΒ» для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния.

  $ git reset - мягкая Π“ΠžΠ›ΠžΠ’ΠšΠ ~ 1

$ git status

О мастСрС Ρ„ΠΈΠ»ΠΈΠ°Π»Π°
Π’Π°ΡˆΠ° Π²Π΅Ρ‚ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Π΅Ρ‚ origin / master Π½Π° 1 ΠΊΠΎΠΌΠΌΠΈΡ‚.
  (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "git push" для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²Π°ΡˆΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²)

ИзмСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:
  (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "git restore --staged  ..." для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ постановки)
        Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»: file1

$ git log --oneline --graph

* 90f8bb1 (HEAD -> master) Вторая фиксация
* 7083e29 ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ фиксация рСпозитория  

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, послС ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ послСднСй фиксации Ρ„Π°ΠΉΠ» всС Π΅Ρ‰Π΅ находится Π² индСксС (измСнСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ зафиксированы), Π½ΠΎ фиксация Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π°.

Π—Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ»ΠΈ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Git Π² своСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Аппаратный сброс Git commit

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, сохранив измСнСния, внСсСнныС Π² Ρ„Π°ΠΉΠ»Ρ‹ Π² индСксС.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π²Ρ‹ просто Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ фиксации ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсСнных Π² Ρ„Π°ΠΉΠ»Ρ‹.

Π­Ρ‚ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ «–hardΒ».

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС измСнСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈ индСксС, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«git resetΒ» с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ «–hardΒ» ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ HEAD (Β«HEAD ~ 1Β»).

  $ git reset --hard HEAD ~ 1  

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны ΠΏΡ€ΠΈ использовании «–hardΒ»: измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ индСкса, Π²Ρ‹ потСряСтС всС измСнСния.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описали Ρ€Π°Π½Π΅Π΅, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ зафиксировали Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² своСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Git с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«file1Β».

  $ git log --oneline --graph

* b734307 (HEAD -> master) Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ "file1"
* 90f8bb1 Вторая фиксация
* 7083e29 ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ фиксация рСпозитория  

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС измСнСния.

  $ git reset --hard HEAD ~ 1

HEAD Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ находится Π½Π° 90f8bb1 Вторая фиксация  

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° состояниС нашСго рСпозитория Git.

  $ git status

О мастСрС Ρ„ΠΈΠ»ΠΈΠ°Π»Π°
Π’ вашСй Π²Π΅Ρ‚ΠΊΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ свСдСния ΠΎ происхоТдСнии / мастСрС
  (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "git push" для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²Π°ΡˆΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²)

Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ чистоС  

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ„Π°ΠΉΠ» Π±Ρ‹Π» ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· рСпозитория Git (индСкс + Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³)

Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉ сброс Git commit

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Git, сохраняйтС измСнСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½ΠΎ НЕ Π² индСксС, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«git resetΒ» с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ «–mixedΒ».Рядом с этой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ просто Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Β«HEAD ~ 1Β» для послСднСй фиксации.

  $ git reset - смСшанная Π“ΠžΠ›ΠžΠ’ΠšΠ ~ 1  

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«file1Β» Π² Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

  $ git log --oneline --graph

* b734307 (HEAD -> master) Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ "file1"
* 90f8bb1 Вторая фиксация
* 7083e29 ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ фиксация рСпозитория  

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΌΡ‹ просто выполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«git resetΒ» с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ «–mixedΒ».

  $ git reset - смСшанная Π“ΠžΠ›ΠžΠ’ΠšΠ ~ 1  

ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΎΠΏΡ†ΠΈΠΈ «–mixedΒ» Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· индСкса Git, Π½ΠΎ Π½Π΅ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

Как слСдствиС, «–mixedΒ» — это «смСсь» ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ сбросом, ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.

  $ git status

О мастСрС Ρ„ΠΈΠ»ΠΈΠ°Π»Π°
Π’Π°ΡˆΠ° Π²Π΅Ρ‚ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Π΅Ρ‚ origin / master Π½Π° 1 ΠΊΠΎΠΌΠΌΠΈΡ‚.
  (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "git push" для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²Π°ΡˆΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²)

НСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹:
  (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "git add  ..." для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ зафиксировано)
        file1

Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ для фиксации, Π½ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ (для отслСТивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "git add")  

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! Π’Ρ‹ нашли Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ сохранСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, сдСланных Π² Ρ„Π°ΠΉΠ»Π°Ρ….

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git revert .

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ с Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Git, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Β«git revertΒ» ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Β«HEADΒ» для послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² вашСй истории.

  $ git revert HEAD  

Команда Β«git revertΒ» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«git resetΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ с измСнСниями, внСсСнными ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΡ‚ΠΊΠ°Ρ‚Π° послСднСй фиксации.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ с Β«git resetΒ» Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Β«HEAD ~ 1Β», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° сброса устанавливаСт Π½ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ HEAD, Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ фактичСски отмСняСт ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

Как слСдствиС, Π²Π°ΠΌ придСтся снова Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Ρ‹, Π° фиксация Π±Ρ‹Π»Π° ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π°.

Как слСдствиС, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ зафиксировали Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² своСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Git, Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

  $ git log --oneline --graph

* b734307 (HEAD -> master) Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ "file1"
* 90f8bb1 Вторая фиксация
* 7083e29 ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ фиксация рСпозитория  

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«git revertΒ» Git автоматичСски ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ ваш тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния.

Когда Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ с сообщСниСм ΠΎ фиксации, отобразится сообщСниС с Π½ΠΎΠ²Ρ‹ΠΌ Ρ…Π΅ΡˆΠ΅ΠΌ фиксации.

  [master 2d40a2c] Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ "Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ file1"
 1 Ρ„Π°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 1 ΡƒΠ΄Π°Π»Π΅Π½ (-)
 Ρ€Π΅ΠΆΠΈΠΌ удалСния 100644 Ρ„Π°ΠΉΠ»1  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π±Ρ‹ Π²Ρ‹ снова ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ свою ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Git, Π²Ρ‹ Π±Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​новая фиксация, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈΠ· вашСго рСпозитория.

  $ git log --oneline --graph

* 2d40a2c (HEAD -> master) Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ "Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ file1"
* 1fa26e9 Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ file1
* ee8b133 Вторая фиксация
* a3bdedf ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ фиксация  

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

Π’ этом руководствС Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ всС способы ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ послСднСй фиксации вашСго рСпозитория Git.

Π’Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β« git reset Β» ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способах Π΅Π΅ выполнСния Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git reset ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git revert, послСдняя добавляСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· вашСго рСпозитория.

Если Π²Π°ΠΌ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Git ΠΈΠ»ΠΈ ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», посвящСнный этому, Π½Π° Π²Π΅Π±-сайтС, поэтому ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π½ΠΈΠΌ!

Если Π²Π°ΠΌ нравится Git, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ понравятся наши Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий

— ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ самыС послСдниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git?

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ, Ссли Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Π½Π° самом Π΄Π΅Π»Π΅ это ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просто, Ссли Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅. Π― ΠΏΠΎΠΊΠ°ΠΆΡƒ Π²Π°ΠΌ 4 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способа ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 1:

git reset --hard

Допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ это, Π³Π΄Π΅ C — это ваш HEAD, Π° (F) — это состояниС Π²Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².

  (Π–)
А-Π’-Π‘
    ↑
  мастСр
  

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ядСрный ΠΊΠΎΠΌΠΌΠΈΡ‚ C ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° большС Π΅Π³ΠΎ Π½Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ всС измСнСния Π² локально ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… . Π’Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ это:

  git reset --hard HEAD ~ 1
  

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

  (Π–)
А-Π‘
  ↑
мастСр
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ B — Π“ΠžΠ›ΠžΠ’Π.ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ использовали --hard , ваши Ρ„Π°ΠΉΠ»Ρ‹ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² своС состояниС ΠΏΡ€ΠΈ фиксации B.

Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 2:

git reset

А, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ фиксация C Π½Π΅ Π±Ρ‹Π»Π° катастрофой, Π° просто Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ошиблась. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ , Π½ΠΎ ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ свои измСнСния для нСбольшого рСдактирования, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ сдСлаСтС Π»ΡƒΡ‡ΡˆΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ. НачнСм снова с C Π² качСствС HEAD:

  (Π–)
А-Π’-Π‘
    ↑
  мастСр
  

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, оставив --hard :

  git ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ HEAD ~ 1
  

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

  (Π–)
А-Π’-Π‘
  ↑
мастСр
  

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях HEAD — это просто ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.Когда Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ git reset HEAD ~ 1 , Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Git ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ HEAD Π½Π°Π·Π°Π΄ Π½Π° ΠΎΠ΄Π½Ρƒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ. Но (Ссли Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ --hard ) Π²Ρ‹ оставляСтС свои Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ. Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ git status ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π² C. Π’Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ потСряли!

Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 3:

git reset - soft

Для Π»Π΅Π³ΠΊΠΎΠ³ΠΎ прикосновСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°ΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свои Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ индСкс :

  git reset - мягкая Π“ΠžΠ›ΠžΠ’ΠšΠ ~ 1
  

Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ оставляСт ваши Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠΎΠΊΠΎΠ΅, Π½ΠΎ ΠΈ оставляСт Π² ΠΏΠΎΠΊΠΎΠ΅ ваш индСкс . Когда Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ git status , Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² индСксС находятся Ρ‚Π΅ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅. ЀактичСски, сразу послС этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git commit ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Π½Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 4: Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ

git reset --hard ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ этот ΠΊΠΎΠ΄

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Π²Π΅Ρ‰ΡŒ: ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΠ»ΠΈ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ , ΠΊΠ°ΠΊ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, , Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π²Π°ΠΌ всС-Ρ‚Π°ΠΊΠΈ Π½ΡƒΠΆΠ½Π°? НС ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, ΠΏΡ€Π°Π²Π΄Π°?

НСа, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ способ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ.Π’Π²Π΅Π΄ΠΈΡ‚Π΅ git reflog , ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ список (частичных) SHA-ΠΊΠΎΠ΄ΠΎΠ² фиксации (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ…ΡΡˆΠ΅ΠΉ), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΈΡΡŒ. НайдитС ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈ сдСлайтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  git checkout -b someNewBranchName shaYouDestroyed
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ воскрСсили этот ΠΊΠΎΠΌΠΌΠΈΡ‚. На самом Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΡŽΡ‚ΡΡ Π² Git Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 90 Π΄Π½Π΅ΠΉ, поэтому Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΈ спасти Ρ‚ΠΎΡ‚, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ ΠΈΠ·Π±Π°Π²Π»ΡΡ‚ΡŒΡΡ.

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² git

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² git — qaru

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Stack Overflow , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ, Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ знаниями ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свою ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ.

Бпросил

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ
235k Ρ€Π°Π·

На этот вопрос ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ :

Π—Π°ΠΊΡ€Ρ‹Ρ‚ 4 Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄.

По ошибкС я сдСлал git add. ΠΈ git commit Π² Π²Π΅Ρ‚ΠΊΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ development . Но, ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, я Π½Π΅ сдСлал git push .

Π˜Ρ‚Π°ΠΊ, я Ρ…ΠΎΡ‚Π΅Π» Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π² исходноС состояниС.

Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» git reset --soft ΠΈ git reset HEAD --hard , Π½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ я всС испортил.

Как ΠΌΠ½Π΅ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ? Π― Ρ…ΠΎΡ‡Ρƒ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² исходноС состояниС ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния ΠΊΠΎΠ΄Π°.

Ρ€Ρ‹Π΄Π°Ρ‚ΡŒ

8,39322 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠ°3535 сСрСбряных Π·Π½Π°ΠΊΠΎΠ²6565 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²

Π·Π°Π΄Π°Π½ 24 мая ’16 Π² 20: 552016-05-24 20:55

chintan schintan s

4,9521313 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²3939 сСрСбряных Π·Π½Π°ΠΊΠΎΠ²7070 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²

0

Π”ΡƒΠΌΠ°ΡŽ, Ρ‚Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π½Π°ΠΏΠΎΡ€Ρ‚Π°Ρ‡ΠΈΠ». ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ элСмСнт Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½), сохраняя ΠΏΡ€ΠΈ этом измСнСния (нСустановлСнныС).

Π‘ΠΎΠ·Π΄Π°Π½ 24 ΠΌΠ°ΠΉ 2016, Π² 21:02

ΡƒΠ³Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ

7,53511 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²1515 сСрСбряных Π·Π½Π°ΠΊΠΎΠ²2323 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°ΠΊΠ°

10

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ просто ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³Π° --soft

  git reset - мягкая Π“ΠžΠ›ΠžΠ’ΠšΠ ~ 1
  

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ :

Для Windows Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ части HEAD Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ git reset --soft "HEAD ~ 1"

Π‘ΠΎΠ·Π΄Π°Π½ 24 ΠΌΠ°ΠΉ 2016, Π² 21:01

ВсСгда солнСчно, всСгда солнСчно

28. 5k66 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²4141 сСрСбряный Π·Π½Π°ΠΊ7171 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹ΠΉ Π·Π½Π°ΠΊ

3

Stack Overflow Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ JavaScript

Π’Π°ΡˆΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

НаТимая Β«ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ cookieΒ», Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Stack Exchange ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ cookie Π½Π° вашСм устройствС ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² соотвСтствии с нашСй ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π² β€‹β€‹ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² cookie.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ cookie

ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² git?

Π Π°ΡΡˆΠΈΡ€ΡΡŽ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я написал Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ΠžΠ±Ρ‰Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ (ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ) ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠ³ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° Π½Π΅ΠΉ.Если Π²Ρ‹ пСрСписываСтС (измСняСтС) ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, Ρƒ вас ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с объСдинСниСм ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ с ΠΈΡ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ.

Π˜Ρ‚Π°ΠΊ, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отмСняСт измСнСния , ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git revert.

Π£ вас такая ситуация:

A <- B <- C <- D <- master <- HEAD
 

(стрСлки здСсь относятся ΠΊ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ указатСля: Β«Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°ΡΒ» ссылка Π² случаС фиксации, вСрхняя фиксация Π² случаС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π²Π΅Ρ‚ΠΊΠΈ (ссылка Π²Π΅Ρ‚ΠΊΠΈ) ΠΈ имя Π²Π΅Ρ‚ΠΊΠΈ Π² случаС ссылки HEAD).-1] ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, которая отмСняСт измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ… B, C, D. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ (BCD) -1 = D -1 C -1 B -1 , поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

  $ git revert --no-commit D
$ git revert --no-commit C
$ git revert --no-commit B
$ git commit -m "сообщСниС ΠΎ фиксации для всСх"
  

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для всСго, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² слияния.


ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ содСрТимоС фиксации A ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это состояниС.Π’Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ слияния. Однако Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния git stash , сначала ΠΎΠ½ΠΈ:

  $ git checkout -f A -. # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ эту Ρ€Π΅Π²ΠΈΠ·ΠΈΡŽ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²
$ git commit -a
  

Π’ΠΎΠ³Π΄Π° Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ситуация:

A <- B <- C <- D <- A '<- master <- HEAD
 

Ѐиксация A 'ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ содСрТимоС, Ρ‡Ρ‚ΠΎ ΠΈ фиксация A, Π½ΠΎ прСдставляСт собой Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ (сообщСниС фиксации, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ, Π΄Π°Ρ‚Π° фиксации).


ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π”ΠΆΠ΅Ρ„Ρ„Π° Π€Π΅Ρ€Π»Π°Π½Π΄Π°, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π§Π°Ρ€Π»ΡŒΠ·ΠΎΠΌ Π‘Π΅ΠΉΠ»ΠΈ, основано Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΈΠ΄Π΅Π΅, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ git reset. Π’ΠΎΡ‚ ΠΎΠ½ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½Π΅Π½, Ρ‚Π°ΠΊ Π ΠΠ‘ΠžΠ’ΠΠ•Π’ НА Π’Π‘Π•:

  $ git reset --hard A
$ git reset --soft D # (ΠΈΠ»ΠΈ ORIG_HEAD ΠΈΠ»ΠΈ @ {1} [ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ располоТСниС HEAD]), всС ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… D
$ git commit
  

Git Revert | Π£Ρ‡Π΅Π±Π½ΠΈΠΊ Atlassian Git

ΠšΠΎΠΌΠ°Π½Π΄Ρƒ git revert ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚ΠΈΠΏΠ° Β«ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ», ΠΎΠ΄Π½Π°ΠΊΠΎ это Π½Π΅ традиционная опСрация ΠΎΡ‚ΠΌΠ΅Π½Ρ‹.ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈΠ· истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΠ½ выясняСт, ΠΊΠ°ΠΊ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния, внСсСнныС фиксациСй, ΠΈ добавляСт Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ содСрТимым. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ истории Git, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ для цСлостности вашСй истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ для Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹.

РСвСрсированиС слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ½Π²Π΅Ρ€ΡΠΈΡŽ фиксации ΠΈΠ· истории вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Ρ‹ отслСТиваСтС ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π±Ρ‹Π»Π° внСсСна ΠΎΠ΄Π½ΠΎΠΉ фиксациСй.ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ снимок, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git revert , Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС это автоматичСски ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π° вас.

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

  $ mkdir git_revert_test 
$ cd git_revert_test /
$ git init.
Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ пустой Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git Π² /git_revert_test/.git/
$ touch demo_file
$ git add demo_file
$ git commit -am "initial commit"
[master (root-commit) 299b15f] initial commit
1 Ρ„Π°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 0 вставок (+), 0 ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ (-)
Ρ€Π΅ΠΆΠΈΠΌ создания 100644 demo_file
$ echo "Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ содСрТимоС" >> demo_file
$ git commit -am "Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² дСмонстрационный Ρ„Π°ΠΉΠ»"
[master 3602d88] Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² дСмонстрационный Ρ„Π°ΠΉΠ»
n 1 Ρ„Π°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 1 вставка (+)
$ echo "prepended line content" >> demo_file
$ git commit -am "Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ содСрТимоС ΠΊ дСмонстрационному Ρ„Π°ΠΉΠ»Ρƒ"
[master 86bb32e] Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ содСрТимоС ΠΊ дСмонстрационному Ρ„Π°ΠΉΠ»Ρƒ
1 Ρ„Π°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 1 вставка (+)
$ git log --oneline
86bb32e Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² дСмонстрационный Ρ„Π°ΠΉΠ»
3602d88 Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² дСмонстрационный Ρ„Π°ΠΉΠ»
299b15f Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ фиксация

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ€Π΅ΠΏΠΎ Π²ΠΎ вновь созданном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ git_revert_test .ΠœΡ‹ сдСлали 3 ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² Ρ€Π΅ΠΏΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» demo_file ΠΈ Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π΅Π³ΠΎ содСрТимоС. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ настройки Ρ€Π΅ΠΏΠΎ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ git log , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², всСго 3 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Когда Ρ€Π΅ΠΏΠΎ находится Π² этом состоянии, ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ git.

  $ git revert HEAD [master b9cd081] ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Β«Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ содСрТимоС Π² дСмонстрационный Ρ„Π°ΠΉΠ»Β» 1 Ρ„Π°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 1 ΡƒΠ΄Π°Π»Π΅Π½ (-)  

Git revert ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ссылка Π½Π° Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π°, ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π±Π΅Π· Π½Π΅Π΅. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΡ€ΠΎΡˆΠ»ΠΈ HEAD ref. Π­Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ ΠΊ фиксации 3602d8815dbfa78cd37cd4d189552764b5e96c58 . Подобно слиянию, ΠΎΡ‚ΠΊΠ°Ρ‚ создаст Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, которая ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ настроСнный систСмный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с запросом Π½ΠΎΠ²ΠΎΠ³ΠΎ сообщСния фиксации. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сообщСниС фиксации Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ΠΎ ΠΈ сохранСно, Git Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ состояниС Ρ€Π΅ΠΏΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git log ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΆΡƒΡ€Π½Π°Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​новая фиксация:

  $ git log --oneline 1061e79 ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Β«Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ содСрТимоС Π² дСмонстрационный Ρ„Π°ΠΉΠ»Β» 86bb32e Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ содСрТимоС Π² дСмонстрационный Ρ„Π°ΠΉΠ» 3602d88 Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ содСрТимоС Π² дСмонстрационный Ρ„Π°ΠΉΠ» 299b15f Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ фиксация 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ 3-я фиксация всС Π΅Ρ‰Π΅ находится Π² истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° послС ΠΎΡ‚ΠΊΠ°Ρ‚Π°.ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, git revert Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ измСнСния. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ 2-я ΠΈ 4-я фиксации ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Π±Π°Π·Ρƒ ΠΊΠΎΠ΄Π°, Π° 3-я фиксация всС Π΅Ρ‰Π΅ находится Π² нашСй истории Π½Π° Ρ‚ΠΎΡ‚ случай, Ссли ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΉ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

ΠžΠ±Ρ‰ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ

Π­Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π­Ρ‚Π° опция ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ настроСнный систСмный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π²Π°ΠΌ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС фиксации ΠΏΠ΅Ρ€Π΅Π΄ фиксациСй ΠΎΡ‚ΠΊΠ°Ρ‚Π°

Π­Ρ‚ΠΎ инвСрсия ΠΎΠΏΡ†ΠΈΠΈ -e .ΠžΡ‚ΠΊΠ°Ρ‚ Π½Π΅ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.

Бброс ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ git revert отмСняСт ΠΎΠ΄Π½Ρƒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ - ΠΎΠ½ Π½Π΅ «возвращаСтся» ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, удаляя всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ фиксации. Π’ Git это Π½Π° самом Π΄Π΅Π»Π΅ называСтся сбросом, Π° Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ.

Git Revert Push Commit: ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ

Π’ этом постС я ΠΏΠΎΠΊΠ°ΠΆΡƒ, ΠΊΠ°ΠΊ я ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ измСнСния (ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹) Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ кодирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

Π—Π°Ρ‡Π΅ΠΌ ΠΌΠ½Π΅ это Π½ΡƒΠΆΠ½ΠΎ?

Π’ своСй диссСртации я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽ Π² ΠΎΠ΄Π½ΠΎΠΉ срСдС, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ срСдС, состоящСй ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я дСлаю, ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Иногда внСсСнныС ΠΌΠ½ΠΎΠΉ измСнСния ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Π΄Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π—Π°Ρ‚Π΅ΠΌ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ измСнСния ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎ ΠΈ послС послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

Каким Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ…Π΅Ρˆ.Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ…Π΅Ρˆ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ git log , Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

  ΠΊΠΎΡ€Π΅Π½ΡŒ @ debian: / home / debian / test-project # git log
commit <Ρ…ΡΡˆ послСднСй фиксации>
Автор: ИзабСль ΠšΠΎΡΡ‚Π° 
Π”Π°Ρ‚Π°: 4 фСвраля, 21:57:40 2018 +0000

<сообщСниС фиксации>

commit <Ρ…Π΅Ρˆ ΠΏΠ΅Ρ€Π΅Π΄ послСднСй фиксациСй>
Автор: ИзабСль ΠšΠΎΡΡ‚Π° 
Π”Π°Ρ‚Π°: 4 фСвраля, 21:42:26 2018 +0000

<сообщСниС фиксации>

(...)
  

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ git log --oneline , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄:

  ΠΊΠΎΡ€Π΅Π½ΡŒ @ debian: / home / debian / test-project # git log --oneline
<Ρ…ΡΡˆ послСднСй фиксации> <сообщСниС фиксации>
cdb76bf Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​СщС ΠΎΠ΄Π½Π° функция
d425161 Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​одна функция

(...)
  

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: <Ρ…Π΅Ρˆ послСднСй фиксации> ), которая, ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ мнСнию, ΠΈΠΌΠ΅Π΅Ρ‚ послСднюю Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ввСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  git checkout <Ρ…Π΅Ρˆ фиксации>
  

Π­Ρ‚ΠΎ заставит Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ этой Ρ‚ΠΎΡ‡Π½ΠΎΠΉ фиксации.

ПослС этого Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

  root @ debian: / home / debian / test-project # git checkout <Ρ…Π΅Ρˆ фиксации>
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ''.Π’Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² состоянии Β«ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π“ΠžΠ›ΠžΠ’ΠΒ». Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ, внСсти ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ измСнСния
ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π»ΡŽΠ±Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², сдСланных Π² этом состоянии, Π±Π΅Π·
воздСйствуя Π½Π° Π»ΡŽΠ±Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ, выполняя Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ. 

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ для сохранСния созданных Π²Π°ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это
(сСйчас ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅), снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ -b с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ checkout. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

git checkout -b имя_Π½ΠΎΠ²ΠΎΠΉ_Π²Π΅Ρ‚ΠΊΠΈ

HEAD Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ находится Π² <Ρ…Π΅Ρˆ фиксации> ... <сообщСниС фиксации>
  

ПослС Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ фиксации, Ссли Π²Ρ‹ Π·Π°Ρ‚Π΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π² этом состоянии фиксации, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ?

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ / ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ…ΡΡˆ фиксации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git log :

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ со словом Β«Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΒ» Π² Π½Π°Ρ‡Π°Π»Π΅ сообщСния. ПослС этого, Ссли Π²Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ статус своСго рСпозитория, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ HEAD отсоСдинСн ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ тСстировали Ρ€Π°Π½Π΅Π΅.

  ΠΊΠΎΡ€Π΅Π½ΡŒ @ debian: / home / debian / test-project # git status
Π“ΠžΠ›ΠžΠ’Π ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° Π½Π° 69d885e

(...)
  

Π’Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ это сообщСниС, поэтому, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это ΠΈ снова ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ HEAD ΠΊ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ, Π²Π°ΠΌ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅:

  git checkout <тСкущая Π²Π΅Ρ‚ΠΊΠ°>
  

Π’ΠΎ врСмя написания этого поста я нашСл этот ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ - ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ - ΠΎΡ‚ Atlassian, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ описываСт эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

РСзюмС

  • Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ git checkout ; Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ послСднюю Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

  • Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ git revert <Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ…ΡΡˆ фиксации> ; Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ эту Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, которая ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ»Π° Π²Π°ΡˆΡƒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

  • Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΡ€Π²Π°Π²ΡˆΡƒΡŽΡΡ Π³ΠΎΠ»ΠΎΠ²Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ git checkout <тСкущая Π²Π΅Ρ‚ΠΊΠ°> .


Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ мСня Π² Twitter, LinkedIn, Github, Medium ΠΈ Π½Π° ΠΌΠΎΠ΅ΠΌ Π»ΠΈΡ‡Π½ΠΎΠΌ Π²Π΅Π±-сайтС.

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Git - WebStorm

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСзафиксированныС измСнСния

Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ локально сдСланныС измСнСния ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… фиксациСй:

  • Π’ ΠΎΠΊΠ½Π΅ инструмСнта фиксации Alt + 0 Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠžΡ‚ΠΊΠ°Ρ‚ Π² контСкстном мСню ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Ctrl + Alt + Z .ВсС измСнСния, внСсСнныС Π² Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСй фиксации, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Ρ‹, ΠΈ ΠΎΠ½ΠΈ исчСзнут ΠΈΠ· Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ списка ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ

WebStorm позволяСт Π²Π°ΠΌ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅.

Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Ссли ΠΎΠ½Π° Π±Ρ‹Π»Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π° ​​в Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Π΅Ρ‚Π²ΡŒ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ использованиС --push Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ (настройтС Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ «Настройки / ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΡΒ» Ctrl + Alt + S Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий | Git) ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли Π²Π΅Ρ‚ΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ защищСнная Π½Π° GitHub, WebStorm автоматичСски ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π΅Π΅ ΠΊΠ°ΠΊ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π΅Π΅ провСряСтС.

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ инструмСнта Git Alt + 9 ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π–ΡƒΡ€Π½Π°Π».

  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽΒ» Π² контСкстном мСню.

  3. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· списка «Имя» ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Π½ΠΎΠ²ΠΎΠ³ΠΎ списка ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сообщСниС фиксации).

  4. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с измСнСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ списком ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

  5. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ контСкст», Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ WebStorm Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠ» ваш контСкст ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π» Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, ΠΊΠΎΠ³Π΄Π° этот список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ становится Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ.

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ

Если Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ фиксации, которая ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ. Π­Ρ‚Π° опСрация ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½ΠΎΠ²ΠΎΠΉ фиксации, которая отмСняСт эффСкт фиксации, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, история ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сохраняСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ исходная фиксация остаСтся Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΠΎΠΉ.

  1. НайдитС Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π–ΡƒΡ€Π½Π°Π»Β» Π² ΠΎΠΊΠ½Π΅ инструмСнта Git Alt + 9 , Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π΅Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽΒ» Π² контСкстном мСню. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚Π°ΠΊΠΆΠ΅ доступСн ΠΈΠ· контСкстного мСню фиксации Π² прСдставлСнии истории Ρ„Π°ΠΉΠ»Π°. ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ «Ѐиксация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉΒ» с автоматичСски созданным сообщСниСм фиксации.

    Если Π²Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ это дСйствиС ΠΊ нСскольким фиксациям, Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ Π² прСдставлСнии ΠΆΡƒΡ€Π½Π°Π»Π°, Π±ΡƒΠ΄Π΅Ρ‚ создана ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ фиксация для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ….

  2. Если выбранная фиксация содСрТит нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…, ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²Ρ‹Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ.

  3. НаТмитС Β«ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отмСняСт измСнСния Π² Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… Π² этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ фиксации.

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ измСнСния

WebStorm позволяСт ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ измСнСния ΠΈΠ· Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ фиксации, Ссли эта фиксация содСрТит нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ….

  1. Π’ прСдставлСнии ΠΆΡƒΡ€Π½Π°Π»Π° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

  2. На ΠΏΠ°Π½Π΅Π»ΠΈ Β«Π˜Π·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹Β» Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ измСнСния» Π² контСкстном мСню.

    Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½ΠΎΠ²ΠΎΠΉ фиксации, которая отмСняСт измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

ΠžΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ фиксации, которая отраТаСтся Π² истории Π²Π΅Ρ‚ΠΎΠΊ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅, Π½Π΅ оставляя слСдов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Как ΠΈ любая опСрация, которая пСрСзаписываСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π²Π΅Ρ‚Π²Π΅ΠΉ, для удалСния фиксации трСбуСтся Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ --force, ΠΈ Π΅Π΅ нСльзя Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… вСтвях (ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ «Настройки / ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΡΒ» Ctrl + Alt + S Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий | GitΒ»). .

Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π²Π΅Ρ‚Π²ΡŒ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

Если Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Π½Π°Π±ΠΎΡ€Π΅ Π½Π΅Π΄Π°Π²Π½ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ эту Ρ‡Π°ΡΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ свой Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ состояния. Π­Ρ‚ΠΎ дСлаСтся ΠΏΡƒΡ‚Π΅ΠΌ сброса HEAD Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ фиксации (ΠΈ, ΠΏΡ€ΠΈ нСобходимости, сброса индСкса ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°, Ссли Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Ρƒ Π² истории).

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ срСдства управлСния вСрсиями Alt + 9 ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π–ΡƒΡ€Π½Π°Π»Β».

  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ HEAD, ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ сюда» ΠΈΠ· контСкстного мСню.

  3. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Git Reset Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ способ обновлСния Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΠΈ индСкса ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Reset:
    • Soft: всС измСнСния ΠΈΠ· ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ сдСланы послС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ фиксации, Π±ΡƒΠ΄ΡƒΡ‚ поэтапными (это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² прСдставлСниС Β«Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡ… ΠΈ ΠΏΡ€ΠΈ нСобходимости Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅).

    • Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉ: измСнСния, сдСланныС послС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ фиксации, Π±ΡƒΠ΄ΡƒΡ‚ сохранСны, Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для фиксации.

    • ЖСсткий: всС измСнСния, сдСланныС послС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ фиксации, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Ρ‹ (ΠΊΠ°ΠΊ поэтапныС, Ρ‚Π°ΠΊ ΠΈ зафиксированныС).

    • Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ: зафиксированныС измСнСния, сдСланныС послС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ фиксации, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹, Π½ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния останутся Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ€Π΅Π²ΠΈΠ·ΠΈΡŽ Ρ„Π°ΠΉΠ»Π°

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» вмСсто ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ всСй фиксации, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ измСнСния Π² нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии этого Ρ„Π°ΠΉΠ»Π°:

  1. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² любом прСдставлСнии (Π² ΠΎΠΊΠ½Π΅ инструмСнта Β«ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Β», Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Π² прСдставлСнии Β«Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния» ΠΈ Ρ‚.

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

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