Π Π°Π·Π½ΠΎΠ΅

Git ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚: Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Git

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

Git для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π§Π°ΡΡ‚ΡŒ 8. Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² git?

Рассмотрим довольно Π²Π°ΠΆΠ½Ρ‹ΠΉ вопрос: ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² git? НачнСм с вопроса ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, послС этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… этой Ρ‚Π΅ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ вопросы удалСния ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ использованиС ΠΊΠΎΠΌΠ°Π½Π΄ git revert ΠΈ git reset.

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

Если Π²Ρ‹ сдСлали ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ измСнСния Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ρ‚ΠΎ для этого слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ Π²Π·ΡΡ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ Ρ„Π°ΠΉΠ», с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Π²Π°ΡˆΡƒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ скопирован Ρ„Π°ΠΉΠ» ΠΈΠ· рСпозитория с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ. НапримСр, Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Ρ„Π°ΠΉΠ»ΠΎΠΌ main.c ΠΈ внСсли Π² Π½Π΅Π³ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ измСнСния. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹Β  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии (послСднСй ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΉ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ)Β  Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git checkout.

> git checkout -- main.c

ΠšΠ»ΡŽΡ‡ β€œ- -” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ нас интСрСсуСт Ρ„Π°ΠΉΠ» Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π±Ρ€Π°Π½Ρ‡Π΅ (Π²Π΅Ρ‚ΠΊΠ΅).

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² git

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

Для дСмонстранции возмоТностСй git создадим Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π² Π½Π΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

> git init

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ„Π°ΠΉΠ» main.c.

> touch main.c

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΠΌ измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

> git add main.c
> git commit -m "first commit"
[master (root-commit) 86f1495] first commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 main.c

ВнСсСм измСнСния Π² Ρ„Π°ΠΉΠ».

> echo "// main.c file" > main.c

И сдСлаСм Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚.

> git add main.c
> git commit -m "second commit"
[master d142679] second commit
 1 file changed, 1 insertion(+)

Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π±Ρ‹Π»ΠΎ сдСлано Π΄Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

> git log --oneline
d142679 second commit
86f1495 first commit

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ΄Π°Π»ΠΈΠΌ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ вмСсто Π½Π΅Π³ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ содСрТимоС Ρ„Π°ΠΉΠ»Π° main.c.

> echo "// author: Writer" > main.c

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΠΌ измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΉ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

> git add main.c
> git commit --amend -m "third commit"
> git log --oneline
18411fd third commit
86f1495 first commit

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ: ΠΈΠ· рСпозитория ΠΏΡ€ΠΎΠΏΠ°Π» ΠΊΠΎΠΌΠΌΠΈΡ‚ с id=d142679, вмСсто Π½Π΅Π³ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ с id=18411fd.

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ Π² Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅

Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π΅Ρ‰Ρ‘ нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² нашСм Ρ„Π°ΠΉΠ»Π΅ main.c, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

> echo "// Some text 1" > main.c
> git add main.c
> git commit -m "fourth commit"
[master dcf7253 ] fourth commit
 1 file changed, 1 insertion(+), 1 deletion(-)

> echo "// Some text 2" > main.c
> git add main.c
> git commit -m "fifth commit"
[master 7f2eb3a ] fifth commit
 1 file changed, 1 insertion(+), 1 deletion(-)

> git log --oneline
7f2eb3a fifth commit
dcf7253 fourth commit
18411fd third commit
86f1495 first commit

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ помСняли ΠΊΠΎΠΌΠΌΠΈΡ‚ с сообщСниСм β€œsecond commit” Π½Π° β€œthird commit”, поэтому ΠΎΠ½ ΠΈΠ΄Π΅Ρ‚ сразу послС β€œfirst commit”.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π±Ρ‹Π»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ вСрсии 18411fd ΠΈ внСсти измСнСния ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½Π΅Π΅. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠ΄Π½ΠΈΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ, Π½ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ послС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ внСсли измСнСния Π² ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ вас Ρ„Π°ΠΉΠ», ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Ρ‘ довольно ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… измСнСния Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‚Π°ΠΊ Π²Π·ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· сСрСдины Π²Π΅Ρ‚ΠΊΠΈ Π½Π΅ получится – это Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ Π² Ρ€Π°Π·Ρ€Π΅Π· с ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉΒ git. Одни ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² – это ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„Π°ΠΉΠ»Π° ΠΈΠ· Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, внСсти Π² Π½Π΅Π³ΠΎ измСнСния ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Для Π½Π°Ρ‡Π°Π»Π° посмотрим Π½Π° содСрТимоС Ρ„Π°ΠΉΠ»Π° main.cΒ ΠΈΠ· послСднСго, Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

> git checkout main.c
> cat main.c
// Some text 2

Для просмотра содСрТимого Ρ„Π°ΠΉΠ»Π° Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ с id=18411fd Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с tree-ish (ΠΎΠ± этом ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ написано здСсь)

> git show 18411fd:main.c
// author: Writer

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠΌ Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ Ρ„Π°ΠΉΠ» main.c ΠΈΠ· рСпозитория с ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ id=18411fd.

> git checkout 18411fd -- main.c
> cat main.c
// author: Writer

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° main.c соотвСтствуСт Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания ΠΊΠΎΠΌΠΌΠΈΡ‚Π° с Β id=18411fd. Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Π² сообщСнии ΡƒΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ отмСняСт Π΄Π²Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ….

> git add main.c
> git commit -m "return main.c from third commit"
[master cffc5ad] return main.c from third commit
 1 file changed, 1 insertion(+), 1 deletion(-)

> git log --oneline
cffc5ad return main.c from third commit
7f2eb3a fifth commit
dcf7253 fourth commit
18411fd third commit
86f1495 first commit

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии Ρ„Π°ΠΉΠ»Π° main.c ΠΈ ΠΏΡ€ΠΈ этом сохранили всю ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ИспользованиС git revert для быстрой ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

Рассмотрим Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΈ способ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π½Π° этот Ρ€Π°Π· Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git revert.

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ с id=cffc5ad. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ gitΒ revert (см. Π½ΠΈΠΆΠ΅), систСма git выдаст сообщСниС Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Ссли Π²Ρ‹ согласны с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ написано Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Ρ‚ΠΎ просто сохранитС Π΅Π³ΠΎ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹, ΠΈ автоматичСски сформируСтся ΠΈ отправится Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

> git revert cffc5ad 
[master 81499da] Revert "return main.c from third commit"
 1 file changed, 1 insertion(+), 1 deletion(-)

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Ρ‚ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

> git config core.editor "notepad.exe"

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² этом случаС Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ настройки для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ рСпозитория. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ настроСк смотритС Π² β€œGit для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π§Π°ΡΡ‚ΡŒ 3. Настройка Git”

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ Π»ΠΈ настройка.

> git config core.editor
notepad.exe

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° список ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

> git log --oneline
81499da Revert "return main.c from third commit"
cffc5ad return main.c from third commit
7f2eb3a fifth commit
dcf7253 fourth commit
18411fd third commit
86f1495 first commit

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° Π²Π΅Ρ€Π½ΡƒΠ»ΠΎΡΡŒ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сдСлано Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚Π° с id=7f2eb3a.Β 

> cat main.c
// Some text 2

> git show 7f2eb3a:main.c
// Some text 2

ΠžΡ‚ΠΌΠ΅Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Π’ΠΠ˜ΠœΠΠΠ˜Π•! Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ!

Если Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ указатСля HEAD, Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ β€œGit для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π§Π°ΡΡ‚ΡŒ 7. ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ HEAD ΠΈ tree-ishβ€œ.Β HEAD ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ дальнСйшая запись, Ρ‚.Π΅. Π½Π° родитСля ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. БущСствуСт Ρ‚Ρ€ΠΈ ΠΎΠΏΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git reset для измСнСния полоТСния HEAD ΠΈ управлСния состояниСм stage ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, сСйчас ΠΌΡ‹ всС это ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· рСпозитория (Π±Π΅Π· измСнСния Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ) (ΠΊΠ»ΡŽΡ‡ –soft)

Для измСнСния полоТСния указатСля HEADΒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π±Π΅Π· оказания влияния Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ (Π² stage, ΠΏΡ€ΠΈ этом, Π±ΡƒΠ΄Π΅Ρ‚ зафиксированно ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΎΡ‚ рСпозитория),Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ –soft.Β ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π΅Ρ‰Ρ‘ Ρ€Π°Π· Π½Π° наш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

> git log --oneline
81499da Revert "return main.c from third commit"
cffc5ad return main.c from third commit
7f2eb3a fifth commit
dcf7253 fourth commit
18411fd third commit
86f1495 first commit

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° main.с Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

> cat main.c
// Some text 2

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° main.с Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

> git show HEAD:main.c
// Some text 2

Π’Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСстим HEAD Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ с id=dcf7253.

> git reset --soft dcf7253

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ список ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

> git log --oneline
dcf7253 fourth commit
18411fd third commit
86f1495 first commit

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° main.c Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ выглядит Ρ‚Π°ΠΊ.

> git show HEAD:main.c
// Some text 1


Π’ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Ρ„Π°ΠΉΠ» main.c остался ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ (эти измСнСния ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π² stage).

> cat main.c
// Some text 2

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ послСднСС состояниС Ρ„Π°ΠΉΠ»Π° main.c сдСлаСм ΠΊΠΎΠΌΠΌΠΈΡ‚.

> git commit -m "soft reset example"
[master db1a8b0] soft reset example
 1 file changed, 1 insertion(+), 1 deletion(-)

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° список ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

> git log --oneline
db1a8b0 soft reset example
dcf7253 fourth commit
18411fd third commit
86f1495 first commit

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΈΠ· рСпозитория ΠΏΡ€ΠΎΠΏΠ°Π»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹:

81499da Revert "return main.c from third commit"
cffc5ad return main.c from third commit
7f2eb3a fifth commit
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· рСпозитория ΠΈ очистка stage (Π±Π΅Π· измСнСния Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ) (ΠΊΠ»ΡŽΡ‡ –mixed)

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git reset с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ –mixed, Ρ‚ΠΎ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΒ HEAD пСрСмСстится Π½Π° Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½ΠΎ содСрТимоС stage.Β ΠžΡ‚ΠΌΠ΅Π½ΠΈΠΌ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚.

> git reset --mixed dcf7253
Unstaged changes after reset:
M Β Β Β Β Β Β main.c

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ измСнилось содСрТимоС рСпозитория.

> git log --oneline
dcf7253 fourth commit
18411fd third commit
86f1495 first commit

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° main.c Π² послСднСм ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ выглядит Ρ‚Π°ΠΊ.

> git show HEAD:main.c
// Some text 1

Π€Π°ΠΉΠ» main.cΒ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π½Π΅ измСнился.

> cat main.c
// Some text 2

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΠΌ измСнСния Π²Π½Π°Ρ‡Π°Π»Π΅ Π² stage, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

> git add main.c
> git commit -m "mixed reset example"
[master ab4ef00] mixed reset example
 1 file changed, 1 insertion(+), 1 deletion(-)
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· рСпозитория, очистка stage ΠΈ внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Β Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ (ΠΊΠ»ΡŽΡ‡ –hard)

Если Π²Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΊΠ»ΡŽΡ‡Π΅ΠΌ –hard, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΡƒΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π’Ρ‹ Π½Π΅ смоТСтС Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. ВсС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ git (Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, stage ΠΈ рабочая дирСктория) Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ Π² соотвСтствии с ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ пСрСнСсСн ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ HEAD.

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ содСрТимоС рСпозитория выглядит Ρ‚Π°ΠΊ.

> git log --oneline
ab4ef00 mixed reset example
dcf7253 fourth commit
18411fd third commit
86f1495 first commit

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° содСрТимоС Ρ„Π°ΠΉΠ»Π° main.c Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

> cat main.c
// Some text 2
> git show HEAD:main.c
// Some text 2

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ.

Π£Π΄Π°Π»ΠΈΠΌ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π΄ΠΎ самого ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ с id=86f1495.

> git reset --hard 86f1495
HEAD is now at 86f1495 first commit

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ рСпозитория.

> git log --oneline
86f1495 first commit

БостояниС Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ stage.

> git status
On branch master
nothing to commit, working tree clean

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° main.c Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

> cat main.c
> git show HEAD:main.c

Π€Π°ΠΉΠ» main.c пуст.

Π’.ΠΊ. ΠΌΡ‹ воспользовались ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git reset с ΠΊΠ»ΡŽΡ‡Π΅ΠΌ –hard, Ρ‚ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ½Π΅Π΅ состояниС Π½Π°ΠΌ Π½Π΅ получится.

Π‘Π£Π”Π¬Π’Π• ΠžΠ§Π•ΠΠ¬ АККУРАВНЫ Π‘ Π­Π’ΠžΠ™ ΠšΠžΠœΠΠΠ”ΠžΠ™!

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ курс ΠΏΠΎ gitΒ  Π΄Π΅Π»Π°ΡŽΡ‚ рСбята ΠΈΠ· GeekBrains, Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ β€œΠšΡƒΡ€ΡΡ‹β€ курс β€œGit. Быстрый старт”, он бСсплатный!

<<<Β Π§Π°ΡΡ‚ΡŒ 8. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

17. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ

Π¦Π΅Π»ΠΈ

  • ΠΠ°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ самыС послСдниС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ

Revert ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° являСтся ΠΌΠΎΡ‰Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, которая позволяСт ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Однако, ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Β«ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉΒ» ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²ΠΈΠ΄Π½Ρ‹ Π² истории Π²Π΅Ρ‚ΠΊΠΈ (ΠΏΡ€ΠΈ использовании ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git log).

Часто ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΈ сразу ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ это Π±Ρ‹Π»Π° ошибка. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°Β», которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π±Ρ‹ Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ. Команда Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°Β» Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΠ»Π° Π±Ρ‹ появлСниС Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² истории git log.

01 Команда reset

ΠœΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ reset ΠΈ использовали Π΅Π΅ для согласования Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΉ Π·ΠΎΠ½Ρ‹ ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (ΠΌΡ‹ использовали ΠΊΠΎΠΌΠΌΠΈΡ‚ HEAD Π² нашСм ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅).

ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ссылки Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ (Ρ‚.Π΅. Ρ…ΡΡˆ, Π²Π΅Ρ‚ΠΊΠ° ΠΈΠ»ΠΈ имя Ρ‚Π΅Π³Π°), ΠΊΠΎΠΌΠ°Π½Π΄Π° reset…

  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»Π° Π½Π° Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚
  2. ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ сбросит Π±ΡƒΡ„Π΅Ρ€Π½ΡƒΡŽ Π·ΠΎΠ½Ρƒ для соотвСтствия с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ
  3. ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ сбросит Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для соотвСтствия с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

02 ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°ΡˆΡƒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ

Π”Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ нашСй истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
git hist
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
$ git hist
* 45fa96b 2011-03-09 | Revert "Oops, we didn't want this commit" (HEAD, master) [Alexander Shvets]
* 846b90c 2011-03-09 | Oops, we didn't want this commit [Alexander Shvets]
* fa3c141 2011-03-09 | Added HTML header (v1) [Alexander Shvets]
* 8c32287 2011-03-09 | Added standard HTML page tags (v1-beta) [Alexander Shvets]
* 43628f7 2011-03-09 | Added h2 tag [Alexander Shvets]
* 911e8c9 2011-03-09 | First Commit [Alexander Shvets]

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² этой Π²Π΅Ρ‚ΠΊΠ΅ — Β«OopsΒ» ΠΈ Β«Revert OopsΒ». Π”Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сброса.

03 Для Π½Π°Ρ‡Π°Π»Π° ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ эту Π²Π΅Ρ‚ΠΊΡƒ

Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Ρ‚Π΅Π³ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΅Π³ΠΎ Π½Π°ΠΉΡ‚ΠΈ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
git tag oops

04 Бброс ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΊ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ Oops

Глядя Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π»ΠΎΠ³Π° (см. Π²Ρ‹ΡˆΠ΅), ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ с Ρ‚Π΅Π³ΠΎΠΌ Β«v1Β» являСтся ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ сбросим Π²Π΅Ρ‚ΠΊΡƒ Π΄ΠΎ этой Ρ‚ΠΎΡ‡ΠΊΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π΅Ρ‚ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅Π³, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя Ρ‚Π΅Π³Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ сброса (Ссли ΠΎΠ½Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅Π³Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΡΡˆ-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
git reset --hard v1
git hist
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
$ git reset --hard v1
HEAD is now at fa3c141 Added HTML header
$ git hist
* fa3c141 2011-03-09 | Added HTML header (HEAD, v1, master) [Alexander Shvets]
* 8c32287 2011-03-09 | Added standard HTML page tags (v1-beta) [Alexander Shvets]
* 43628f7 2011-03-09 | Added h2 tag [Alexander Shvets]
* 911e8c9 2011-03-09 | First Commit [Alexander Shvets]

Наша Π²Π΅Ρ‚ΠΊΠ° master Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ v1, Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Oops ΠΈ Revert Oops Π² Π²Π΅Ρ‚ΠΊΠ΅ ΡƒΠΆΠ΅ Π½Π΅Ρ‚. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --hard ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π² соотвСтствии с Π½ΠΎΠ²Ρ‹ΠΌ head Π²Π΅Ρ‚ΠΊΠΈ.

05 НичСго Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ тСряСтся

Π§Ρ‚ΠΎ ΠΆΠ΅ случаСтся с ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ? ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ всС Π΅Ρ‰Π΅ находятся Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. На самом Π΄Π΅Π»Π΅, ΠΌΡ‹ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π° Π½ΠΈΡ… ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Π² Π½Π°Ρ‡Π°Π»Π΅ этого ΡƒΡ€ΠΎΠΊΠ° ΠΌΡ‹ создали для ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Ρ‚Π΅Π³ Β«oopsΒ». Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
git hist --all
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
$ git hist --all
* 45fa96b 2011-03-09 | Revert "Oops, we didn't want this commit" (oops) [Alexander Shvets]
* 846b90c 2011-03-09 | Oops, we didn't want this commit [Alexander Shvets]
* fa3c141 2011-03-09 | Added HTML header (HEAD, v1, master) [Alexander Shvets]
* 8c32287 2011-03-09 | Added standard HTML page tags (v1-beta) [Alexander Shvets]
* 43628f7 2011-03-09 | Added h2 tag [Alexander Shvets]
* 911e8c9 2011-03-09 | First Commit [Alexander Shvets]

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π΅ исчСзли. Они всС Π΅Ρ‰Π΅ находятся Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π²Π΅Ρ‚ΠΊΠ΅ master. Если Π±Ρ‹ ΠΌΡ‹ Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΈΡ… Ρ‚Π΅Π³Π°ΠΌΠΈ, ΠΎΠ½ΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π±Ρ‹ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ возмоТности ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΈΡ…, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΡ… Ρ…ΡΡˆ ΠΈΠΌΠ΅Π½. ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅Ρ‚ ссылок, ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ сборщик мусора.

06 ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ сброса

Бброс Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΊΠ°Ρ…, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, бСзопасСн. ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡ любой Β«Π°Π²Π°Ρ€ΠΈΠΈΒ» ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ простым сбросом с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

Однако, Ссли Π²Π΅Ρ‚ΠΊΠ° Β«Ρ€Π°ΡΡˆΠ°Ρ€Π΅Π½Π°Β» Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… рСпозиториях, сброс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΡ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

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

Из ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдний Git-ΠΊΠΎΠΌΠΌΠΈΡ‚. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСория, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

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

Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ нонсСнс, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Π‘ΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ выполняСтся пустой ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ удаляСт Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния послС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

git revert HEAD

Команда revert ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ состояния ΠΊ HEAD – послСднСму ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ Π² Π²Π΅Ρ‚ΠΊΠ΅.

ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ сообщСниС:

Если ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, ΠΊ исходной ΠΊΠΎΠΌΠ°Π½Π΄Π΅ добавляСтся --no-edit. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

git revert HEAD --no-edit

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, выполняСтся:

git log

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Π»ΠΎΠ³Π°Ρ…, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Git-статус ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

git status

Если Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, вмСсто HEAD вписываСтся Π΅Π³ΠΎ Ρ…Π΅Ρˆ ΠΈΠ»ΠΈ Ρ‚Π΅Π³ (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π»ΠΎΠ³Π°Ρ…/истории). Иногда такая ΠΎΡ‚ΠΌΠ΅Π½Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΈΠ·-Π·Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Git Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π£Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для дальнСйшСго Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ git status.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, revert оставляСт «слСды» Π² истории Π²Π΅Ρ‚ΠΊΠΈ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ. К возмоТностям reset относятся:

  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.
  2. Бброс Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΉ Π·ΠΎΠ½Ρ‹ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ).
  3. Бброс Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ).

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ:

git tag oops

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ сброс Π΄ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° oops:

git reset --hard t1

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ:

git hist

Однако всС Ρ€Π°Π²Π½ΠΎ Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ тСряСтся. ЗапуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ отобраТСния всСх ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:

git hist --all

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

16. ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Π¦Π΅Π»ΠΈ

  • ΠΠ°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

01 ΠžΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Иногда Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌΠΈ, ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡ… ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π•ΡΡ‚ΡŒ нСсколько способов Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этого вопроса, здСсь ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ самый бСзопасный.

ΠœΡ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΏΡƒΡ‚Π΅ΠΌ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π³ΠΎ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния.

02 Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈ сдСлайтС ΠΊΠΎΠΌΠΌΠΈΡ‚

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» hello.html Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

Π€Π°ΠΉΠ»: hello.html
<html>
  <head>
  </head>
  <body>
    <h2>Hello, World!</h2>
    <!-- This is an unwanted but committed change -->
  </body>
</html>
Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
git add hello.html
git commit -m "Oops, we didn't want this commit"

03 Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ измСнСниями, ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ удаляСт измСнСния, сохранСнныС Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
git revert HEAD

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π³Π΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚-сообщСниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всС ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ». Π’Ρ‹ увидитС…

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
$ git revert HEAD --no-edit
[master 45fa96b] Revert "Oops, we didn't want this commit"
 1 files changed, 1 insertions(+), 1 deletions(-)

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ»ΠΈ самый послСдний ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΌΡ‹ смогли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HEAD Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ любой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² истории, ΡƒΠΊΠ°Π·Π°Π² Π΅Π³ΠΎ Ρ…ΡΡˆ-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠšΠΎΠΌΠ°Π½Π΄Ρƒ --no-edit ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Она Π±Ρ‹Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· открытия Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.

04 ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π»ΠΎΠ³Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² наш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
git hist
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
$ git hist
* 45fa96b 2011-03-09 | Revert "Oops, we didn't want this commit" (HEAD, master) [Alexander Shvets]
* 846b90c 2011-03-09 | Oops, we didn't want this commit [Alexander Shvets]
* fa3c141 2011-03-09 | Added HTML header (v1) [Alexander Shvets]
* 8c32287 2011-03-09 | Added standard HTML page tags (v1-beta) [Alexander Shvets]
* 43628f7 2011-03-09 | Added h2 tag [Alexander Shvets]
* 911e8c9 2011-03-09 | First Commit [Alexander Shvets]

Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ (хотя, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹). Она бСзопасна Π² использовании Π΄Π°ΠΆΠ΅ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΊΠ°Ρ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π².

05 Π”Π°Π»Π΅Π΅

Π”Π°Π»Π΅Π΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для удалСния послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· истории рСпозитория.

Как ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Git-рСпозитория Ρ„Π°ΠΉΠ»Ρ‹ с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ

Π€Π°ΠΉΠ»Ρ‹ проиндСксированы, написано сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° сСрвСр… И Π²Π΄Ρ€ΡƒΠ³ хочСтся ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ врСмя Π²ΡΠΏΡΡ‚ΡŒ. Π’ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΏΠΎΠΏΠ°Π» Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π°ΠΌ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ. Когда Ρ‚Π°ΠΊΠΎΠ΅ случаСтся, ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ врСмя ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ поисковику.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΏΠΎ ошибкС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ» Π² общСдоступный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. Как ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ? Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ большС Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π±Ρ‹?

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

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ· Git-рСпозитория (ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°)

ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΡƒΡ‰Π΅Ρ€Π±Π°

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ случайно Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. Назовём этот Ρ„Π°ΠΉΠ» .env. Π‘Ρ€Π°Π·Ρƒ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ сСбС ΠΏΠ°Ρ€Ρƒ вопросов:

  • ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ?
  • ЯвляСтся Π»ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ общСдоступным?

β–ΠšΠΎΠΌΠΌΠΈΡ‚ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Если Π²Ρ‹ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ‚ΠΎ, Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, возникшая ситуация Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ Π½Π΅ нСсёт. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, достаточно просто Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ:

git reset HEAD^ --soft

Π€Π°ΠΉΠ»Ρ‹ останутся Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠΎΠΏΠΈΠΈ рСпозитория, Π²Ρ‹ смоТСтС внСсти Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния.

Если ΠΆΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ просто ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚ΠΎΠ³Π΄Π° поступитС Ρ‚Π°ΠΊ:

git rm .env --cached
git commit --amend

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --amend ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с самым свСТим ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ. Если Π²Ρ‹, послС Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅Ρ‰Ρ‘ нСсколько, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

git rebase -i HEAD~{Π½Π° сколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ?}

Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ измСнСния, внСсённыС Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ.

β–ΠšΠΎΠΌΠΌΠΈΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Если Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ‚ΠΎ, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Если ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ являСтся ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ, ΠΈ ΠΏΡ€ΠΈ этом ΠΎΠ½ Π½Π΅ доступСн Π±ΠΎΡ‚Π°ΠΌ ΠΈΠ»ΠΈ людям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Π½Π΅ довСряСтС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто внСсти ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠΈ Π² послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, воспользовавшись ΠΏΠ°Ρ€ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄.

Если Π²Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, послС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, это Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π²Π°ΠΌ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· истории Git, воспользовавшись ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git filter-branch ΠΈΠ»ΠΈ инструмСнтом BFG Repo-Cleaner.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования git filter-branch:

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch .env" --prune-empty --tag-name-filter cat -- --all

Но, дСлая это, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΄Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… аспСкта ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, вносимых Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

  • Π’Ρ‹ мСняСтС ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Git. Если Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС рСпозитория ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди, Ссли ΠΎΡ‚ этого состояния зависят ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ рСпозитория, Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΊΠΈ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ PR, Ρ‚ΠΎ это Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… случаях ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠ°ΠΊ ΠΊ общСдоступному ΠΈ ΠΏΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² Π΅Π³ΠΎ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ.
  • Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ кСш. Π’Π°ΠΌ понадобится ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² слуТбу ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΈ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ кСш. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ исправили ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ»ΠΈ пСрСписали ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ рСпозитория, старый ΠΊΠΎΠΌΠΌΠΈΡ‚, содСрТащий ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, останСтся Π² кСшС. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊ Π½Π΅ΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ, Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ ID, Π½ΠΎ ΠΊ Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° кСш Π½Π΅ очистят.

НуТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ сСкрСтныС ΠΊΠ»ΡŽΡ‡ΠΈ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΈΡ… Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ вСрсии ΠΏΠΎΠΏΠ°Π»ΠΈ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ?

Если ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопрос, вынСсСнный Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Ρ‚ΠΎ β€” Π½ΡƒΠΆΠ½ΠΎ. Если ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ общСдоступСн, ΠΈΠ»ΠΈ Ссли Π²Ρ‹, ΠΏΠΎ любой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ β€” Π½Π΅ мСсто для хранСния сСкрСтных Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡Π΅ΡΡ‚ΡŒ попавшиС Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ скомпромСтированными.

Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· рСпозитория, Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ смоТСтС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с Π±ΠΎΡ‚Π°ΠΌΠΈ ΠΈ с Ρ„ΠΎΡ€ΠΊΠ°ΠΌΠΈ рСпозитория. Как ΠΆΠ΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ?

  • Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠΉΡ‚Π΅ всС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ. Π­Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ свСдСния, ΡƒΡˆΠ΅Π΄ΡˆΠΈΠ΅ Π² ΠΎΠ±Ρ‰ΠΈΠΉ доступ, ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ бСсполСзными.
  • НастройтС Ρ„Π°ΠΉΠ» .gitignore. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π² .gitignore записи ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ… с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Git Π½Π΅ отслСТивал Π±Ρ‹ состояниС этих Ρ„Π°ΠΉΠ»ΠΎΠ².
  • ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.
  • ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, снабдитС ΠΊΠΎΠΌΠΌΠΈΡ‚ пояснСниями ΠΎ возникшСй ситуации. НС ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ВсС программисты, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ вас, ΠΏΠΎ достоинству оцСнят Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° с Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡΠΌΠΈ ситуации ΠΈ с описаниСм Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±Ρ‹Π»ΠΎ исправлСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… для контроля вСрсий примСняСтся Git

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ стоит ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.

▍Π₯Ρ€Π°Π½ΠΈΡ‚Π΅ сСкрСтныС Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ .env (ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅)

ΠšΠ»ΡŽΡ‡ΠΈ ΠΊ API ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ свСдСния стоит Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² СдинствСнном Ρ„Π°ΠΉΠ»Π΅ .env. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅, Ссли Git Π½Π΅ отслСТиваСт состояниС Ρ„Π°ΠΉΠ»Π° .env, Π²Ρ‹, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² этот Ρ„Π°ΠΉΠ» Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π΅Π³ΠΎ случайно Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ прСимущСство Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ доступ ΠΊΠΎ всСм ΠΊΠ»ΡŽΡ‡Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ process.

β–Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ»ΡŽΡ‡ΠΈ API

Π‘ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ API Π»Π΅Π³ΠΊΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ. Если это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡ…, Π° Π½Π΅ Π½Π΅Ρ‡Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Π»ΠΎΠ³ΠΈΠ½ΠΎΠ² ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ.

▍Π₯Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ API, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ срСдствами вашСго инструмСнта для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²

ΠšΠ»ΡŽΡ‡ΠΈ API ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π²Ρ€ΠΎΠ΄Π΅ Netlify, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ Π² Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ…. Π’Π°ΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ автоматичСски Π²Π½Π΅Π΄Ρ€ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с использованиСм глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ process.
Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ окруТСния

β–Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ запись ΠΎ Ρ„Π°ΠΉΠ»Π΅ .env Π² Ρ„Π°ΠΉΠ» .gitignore

Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Git Π½Π΅ отслСТивал Π±Ρ‹ Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

β–ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» .env.template

НаличиС ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ шаблонного Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠ»ΡŽΡ‡ΠΈ API, избавляя ΠΈΡ… ΠΎΡ‚ нСобходимости чтСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

▍НС мСняйтС ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Git Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… рСпозиториях

ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ строго ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ этого ΠΏΡ€Π°Π²ΠΈΠ»Π°. Если Π²Ρ‹ слСдовали Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΌ рСкомСндациям, Ρ‚ΠΎ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Git Π²Π°ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ Π½Π΅ потрСбуСтся.

Π˜Ρ‚ΠΎΠ³ΠΈ

НадСюсь, ΠΌΠΎΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π² бСзопасной Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

А Π²Π°ΠΌ ΡΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π² общСдоступный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΠ΄Π° ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ?

ИзмСнСниС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Git / Π₯Π°Π±Ρ€

Π­Ρ‚ΠΎ пост для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Git. ВсС, Ρ‡Ρ‚ΠΎ здСсь написано ΠΏΠΎ частям ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² многочислСнных простынях ΠΎ Git Π½Π° Π₯Π°Π±Ρ€Π΅. Но я ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ понятный Ρ‚ΠΎΠΏΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ гуглился ΠΏΠΎ запросу Β«git ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²Β».

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

Если Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ нСдоглядСли Π² послСднСм ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, Ρ‚ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π΅ составит Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π°. ВсС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ это Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ измСнСния ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

git add .

Π—Π°Ρ‚Π΅ΠΌ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ измСнСния с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ —amend (amend /Ι™ΛˆmΙ›nd/ β€” Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠΈ, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ):

git commit --amend

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

Π’ΠΎ ΠΆΠ΅ самоС, с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ нСобходимости Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅:

git commit --amend -m "НовоС названиС"

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

Π’ΡƒΡ‚ Ρ‡ΡƒΡ‚ΡŒ послоТнСС, сдСлайтС для Π½Π°Ρ‡Π°Π»Π° Π΄Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π‘1 ΠΈ Π‘2:

Для Π½Π°Ρ‡Π°Π»Π° выполняСм:

git rebase --interactive 
# короткая вСрсия: git rebase -i

ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, git rebase -i ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ

  • r reword ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚
  • e edit ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚
  • s squash ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΈΠ»ΠΈ большС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² (squash /skwΙ’Κƒ/ β€” Π²Ρ‚ΠΈΡΠ½ΡƒΡ‚ΡŒ, ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‚Ρ‹ΠΊΠ²Π° πŸ™‚ )

Рядом с ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Π‘1 вмСсто pick Π²ΠΏΠΈΡˆΠΈΡ‚Π΅ e для рСдактирования ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΠ»ΠΈ r для пСрСимСнования. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠ² Ρ„Π°ΠΉΠ», Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ подсказку ΠΎΡ‚ Git:

РазбСрСмся ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΈΡΡŒ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ Π‘1, «спрыгнув» с Π²Π΅Ρ‚ΠΊΠΈ master. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, запустив:

git branch

Π’ ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

* (no branch, rebasing master)
  master

Π”Π°Π»ΡŒΡˆΠ΅, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части поста Π³Π΄Π΅ ΠΌΡ‹ мСняли послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, Π΄Π΅Π»Π°Π΅ΠΌ измСнСния ΠΈ добавляСм ΠΈΡ…:

git add .

ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠΌ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ --amend:

git commit --amend

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, слСдуя подсказкС (Ρ‡ΡƒΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅), выполняСм:

git rebase --continue

Π’Π΅ΠΌ самым ΠΌΡ‹ возвратимся Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ.

ΠŸΠΎΡΡ‚ получился ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΈ, надСюсь, ясный. Commit early, commit often.

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ Π² Git — git

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚.

Под delete я ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΊΠ°ΠΊ Ссли Π±Ρ‹ я Π½Π΅ Π΄Π΅Π»Π°Π» этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΈ ΠΊΠΎΠ³Π΄Π° я дСлаю Ρ‚ΠΎΠ»Ρ‡ΠΎΠΊ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, ΠΌΠΎΠΈ измСнСния Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΠΊΠ°Ρ‚ΡŒΡΡ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ.

Π― Ρ‡ΠΈΡ‚Π°ΡŽ git help, ΠΈ я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, это git reset --hard HEAD . Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

git

git-rebase

git-reset

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

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


hap497 Β  Β 

27 августа 2009 Π² 03:39

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



3672

ΠžΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎ: git reset --hard ΡƒΠ΄Π°Π»ΠΈΡ‚ ваши измСнСния Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° . ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сохранитС всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ сидитС Π½Π° этом ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, Ρ‚ΠΎΠ³Π΄Π° эта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π³ΠΎ ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒ…

git reset --hard HEAD~1

HEAD~1 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π²ΠΎΠΉ.

Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ git log, Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ фиксации для фиксации, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию, ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это:

git reset --hard <sha1-commit-id>

Если Π²Ρ‹ ΡƒΠΆΠ΅ Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈ Π΅Π³ΠΎ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ силовой Ρ‚ΠΎΠ»Ρ‡ΠΎΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Π³ΠΎ…

git push origin HEAD --force

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ссли Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΠΎΡ‚ΡΠ½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ, Ρ‚ΠΎ Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ потянут, это просто ΡΠΎΠ»ΡŒΠ΅Ρ‚ΡΡ с ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ, ΠΈ Π²Ρ‹ снова столкнСтС Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Если Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π°ΠΆΠ°Π»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git revert, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ «mirror image», которая ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ измСнСния. Однако ΠΎΠ±Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π±ΡƒΠ΄ΡƒΡ‚ записаны Π² ΠΆΡƒΡ€Π½Π°Π».


FYI — git reset --hard HEAD ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Он сбросит вас ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ самой послСднСй фиксации ΠΈ сотрСт всС измСнСния Π² вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ ΠΈ индСксС.


НаконСц, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ «deleted», ΠΎΠ½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ присутствуСт Π² git reflog , Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π΅ собрали мусор Π² своСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

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


gahooa Β  Β 

27 августа 2009 Π² 03:44



647

Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π½Π°ΠΆΠ°Π»ΠΈ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² любом мСстС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git rebase -i , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эту Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, выяснитС, ΠΊΠ°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π°Π·Π°Π΄ находится эта фиксация (ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ). Π’ΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Ρ‚ΡŒ:

git rebase -i HEAD~N

~N ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² N ( N Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ числом, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ HEAD~10). Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт Π²Π°ΠΌ Git, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. ΠŸΡ€ΠΈ сохранСнии этого Ρ„Π°ΠΉΠ»Π° Git Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅Ρ‚ всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ, Π½Π΅ сущСствовал.

Π’ ΠΊΠ½ΠΈΠ³Π΅ Git Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΏΠΎ Ρ€Π΅Π±Π°Π·ΠΈΠ½Π³Ρƒ с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.

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

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


Greg Hewgill Β  Β 

27 августа 2009 Π² 03:51



452

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ-это ΠΎΠ΄Π½Π° ΠΈΠ· ΠΌΠΎΠΈΡ… Π»ΠΈΡ‡Π½Ρ‹Ρ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄:

git rebase -i <commit>~1

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ запуску Ρ€Π΅Π±Π°Π·Π° Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ -i Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ фиксациСй, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Ρ€ΠΈΡ‚ΡŒ. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ список всСх ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² с Ρ‚Π΅Ρ… ΠΏΠΎΡ€. Π£Π΄Π°Π»ΠΈΡ‚Π΅ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ, ΠΈ сохранитС Ρ„Π°ΠΉΠ». Rebase Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ rest Ρ€Π°Π±ΠΎΡ‚Ρ‹, удаляя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эту Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈ воспроизводя всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΆΡƒΡ€Π½Π°Π».

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


1800 INFORMATION Β  Β 

27 августа 2009 Π² 03:49



315

Π― добавляю этот ΠΎΡ‚Π²Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ любой, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ пытался ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всю эту Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠ·-Π·Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ошибки с использованиСм Git!

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ просто ‘undo’, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° commit (Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ°Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ Π½Π° Ρ€Π΅ΠΏΠΎ):

git reset --soft HEAD~1

НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„Π»Π°Π³ —hard , Ссли Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго фиксации.

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


Rob Β  Β 

15 октября 2012 Π² 18:17



74

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ всСго ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ

git rebase -p --onto SHA^ SHA

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ «SHA» ссылкой, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ. Π‘ΠΈΠΌΠ²ΠΎΠ» » ^ » Π² этой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ являСтся Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½Ρ‹ΠΌ.

http://sethrobertson.github.io/GitFixUm/fixup.html

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


raittes Β  Β 

31 августа 2015 Π² 19:36



51

Если Π²Ρ‹ Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ измСнСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это

$ git reset --hard HEAD^

(ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ всС нСзафиксированныС измСнСния; ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ).

Если Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ to-be-deleted commit, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git revert

$ git revert HEAD

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


Jakub NarΔ™bski Β  Β 

27 августа 2009 Π² 10:47



35

git reset --hard commitId

git push <origin> <branch> --force

PS: CommitId относится ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ

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


sun34 Β  Β 

16 октября 2014 Π² 09:51



31

ΠΠ°ΡΠΈΠ»ΡŒΡΡ‚Π²Π΅Π½Π½ΠΎ Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π˜ΡΡ‚ΠΎΡ€ΠΈΡŽ

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ просто Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· послСдних n ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π³Ρƒ:

git rebase -i HEAD~<number of commits to go back>, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ git rebase -i HEAD~5 , Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ послСдниС ΠΏΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

Π—Π°Ρ‚Π΅ΠΌ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ слово pick Π½Π° drop рядом с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Вуаля!

Аддитивно Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π˜ΡΡ‚ΠΎΡ€ΠΈΡŽ

ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ git revert <commit hash> . Revert создаст Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отмСняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

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


IliasT Β  Β 

15 июня 2017 в 23:01



29

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свою послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈ Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π½Π΅ΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

git reset HEAD~1

Π­Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² Π΅Π³ΠΎ состояниС Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git add размСстят Ρ„Π°ΠΉΠ»Ρ‹. Π’Π°ΡˆΠΈ измСнСния Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. HEAD~1 относится ΠΊ фиксации Π½ΠΈΠΆΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π²Π΅Ρ‚Π²ΠΈ.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ N ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния ΠΊΠΎΠ΄Π° Π² вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅:

git reset HEAD~N

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ послСднСй фиксации ΠΈ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ измСнСния ΠΊΠΎΠ΄Π°, Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сброс «hard».

git reset --hard HEAD~1

Аналогично, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ послСдниС N ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ измСнСния ΠΊΠΎΠ΄Π°:

git reset --hard HEAD~N

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


Anurag-Sharma Β  Β 

31 мая 2014 в 07:19



27

Допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ 2 & 4 ΠΈΠ· Π Π•ΠŸΠž.

commit 0 : b3d92c5
commit 1 : 2c6a45b
commit 2 : <any_hash>
commit 3 : 77b9b82
commit 4 : <any_hash>

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° администратора Π½Π°Π΄ Π Π•ΠŸΠž , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ --hard ΠΈ -f .

  • git checkout b3d92c5 ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° послСднСго ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊ использованию ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.
  • git checkout -b repair создайтС Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  • git cherry-pick 77b9b82 Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ commit 3.
  • git cherry-pick 2c6a45b Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ commit 1.
  • git checkout master мастСр оформлСния Π·Π°ΠΊΠ°Π·Π°.
  • git reset --hard b3d92c5 ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ мастСр Π΄ΠΎ послСднСго ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ для использования ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.
  • git merge repair ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ Π½Π°ΡˆΡƒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ с мастСром.
  • git push -f origin master Π½Π°ΠΆΠΌΠΈΡ‚Π΅ master для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π Π•ΠŸΠž.

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


tk_ Β  Β 

05 сСнтября 2017 Π² 07:19



18

git rebase -i HEAD~2

Π—Π΄Π΅ΡΡŒ ‘2’ — это количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

'git rebase -i HEAD`

Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

Π’ΠΎΠ³Π΄Π° Π²Ρ‹ смоТСтС Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ².

p, pick = use commit

r, reword = use commit, but edit the commit message

e, edit = use commit, but stop for amending

s, squash = use commit, but meld into previous commit

f, fixup = like "squash", but discard this commit's log message

x, exec = run command (the rest of the line) using shell

d, drop = remove commit

Π­Ρ‚ΠΈ строки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ пСрСупорядочСны; ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ свСрху Π²Π½ΠΈΠ·.
Если Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ здСсь строку, Ρ‚ΠΎ фиксация Π±ΡƒΠ΄Π΅Ρ‚ потСряна.
Однако, Ссли Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ всС, ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ пустыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эту Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΡ†ΠΈΡŽ «d» ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΠ² строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ ваша фиксация.

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


Siva Praveen Β  Β 

18 мая 2016 в 23:39



14

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

git reset --hard HEAD~1

Для удалСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅

git push origin HEAD --force

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


thestar Β  Β 

28 августа 2014 Π² 16:06



9

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ±Ρ€ΠΎΡΡŒΡ‚Π΅ свою Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ копию ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ послСднСй Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС (всС, Ρ‡Ρ‚ΠΎ послС этого Π±ΡƒΠ΄Π΅Ρ‚ сдСлано, Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ). Для этого Π² SourceTree я Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ» ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΈ Π²Ρ‹Π±Ρ€Π°Π» «Reset BRANCHNAME to this commit». Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ командная строка-это:

git reset --hard COMMIT_ID

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

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ вашСго рСпозитория ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git -c diff.mnemonicprefix=false -c core.quotepath=false \
push -v -f --tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ всСх ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² послС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π² вашСм локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для этой Π²Π΅Ρ‚Π²ΠΈ.

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


CommaToast Β  Β 

13 мая 2013 в 17:20



9

Ошибка:

I git rebase -i --root ‘ ed my branch, нСвСТСствСнно думая, Ρ‡Ρ‚ΠΎ я ΠΌΠΎΠ³ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ„Ρ€Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΎΡ‚ master (прСдставлСниС GitHub для Windows ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ-это сравнСниС с master, ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ).

Π― отрастил Π±ΠΎΡ€ΠΎΠ΄Ρƒ Π² ΠšΡ€Π΅ΠΌΠ½ΠΈΠ΅Π²ΠΎΠΉ Π΄ΠΎΠ»ΠΈΠ½Π΅, ΠΏΠΎΠΊΠ° 900 + ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π·Π°Π³Ρ€ΡƒΠΆΠ°Π»ΠΈΡΡŒ Π² Sublime. Выйдя Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ… — Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, я зарядил свою Π±Π°Ρ‚Π°Ρ€Π΅ΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ» Π±Ρ€ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС 900+ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½Π΅Π±Ρ€Π΅ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ-сбросив свои ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π΄ΠΎ настоящСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

РСшив ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚ΡŒ Git ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ исходныС Π²Ρ€Π΅ΠΌΠ΅Π½Π°, я ΡƒΠ΄Π°Π»ΠΈΠ» этот Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π» Π΅Π³ΠΎ с ΠΏΡƒΠ»ΡŒΡ‚Π° дистанционного управлСния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ снова Π΄ΠΎΠ±Π°Π²ΠΈΠ» самоС послСднСС Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΊ мастСру, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я Ρ…ΠΎΡ‚Π΅Π» ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ,поэтому ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΎΡΡŒ Ρ‚Π°ΠΊ.

Π˜ΡΡ‡Π΅Ρ€ΠΏΠ°Π½ΠΈΠ΅ возмоТностСй:

Π― Π½Π΅ Ρ…ΠΎΡ‚Π΅Π» git revert -это создало Π±Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, давая Git прСимущСство.

git reset --hard HEAD Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлал, послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ reflog, послСдним ΠΈ СдинствСнным HEAD Π±Ρ‹Π» ΠΊΠ»ΠΎΠ½ — Git ΠΏΠΎΠ±Π΅Π΄.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ SHA, я ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° github.com — minor win.

ΠŸΠΎΠ΄ΡƒΠΌΠ°Π², Ρ‡Ρ‚ΠΎ git reset --hard <SHA> сработал, я ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ Π΄ΠΎ master ΠΈ 1… 2… ΠΏΡƒΡ„! ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±Ρ‹Π» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½-Git ΠΏΠΎΠ±Π΅Π΄.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ мастСру, врСмя ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ git rebase -i <SHA>, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ строку… ΠΊ соТалСнию, Π±Π΅Π·Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π½ΠΎ. «Π•ΡΠ»ΠΈ Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ здСсь строку, Ρ‚ΠΎ фиксация Π±ΡƒΠ΄Π΅Ρ‚ потСряна«. Ah…glossed Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Ρ‚Ρ€ΠΎΠ»Π»ΠΈΡ‚ n00b Π² примСчаниях ΠΊ выпуску 2.8.3 .

РСшСниС:

git rebase -i <SHA> ΠΏΠΎΡ‚ΠΎΠΌ d, drop = remove commit .

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, я Π²Ρ‹Π΅Ρ…Π°Π» Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, ΠΈ вуаля — Π½ΠΈΠΊΠ°ΠΊΠΈΡ… скрытых ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π² ΠΏΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΡŽ/Π²Ρ‹Ρ‚ΡΠ³ΠΈΠ²Π°Π½ΠΈΡŽ ΠΈΠ· ΠœΠ°ΡΡ‚Π΅Ρ€Π°.

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Π°ΠΌ дня.

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


Leo Β  Β 

25 мая 2016 в 20:33



8

ВсС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ состояниС вашСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΠΈ индСкса, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π΄ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ фиксации, Π½ΠΎ Π½Π΅ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ состояниС рСпозитория. Если Π²Ρ‹ посмотритС Π½Π° Π½Π΅Π³ΠΎ, фиксация «removed» фактичСски Π½Π΅ ΡƒΠ΄Π°Π»Π΅Π½Π°, ΠΎΠ½Π° просто Π½Π΅ находится Π½Π° ΠΊΠΎΠ½Ρ‡ΠΈΠΊΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… срСдств для удалСния фиксации с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π°Ρ€Ρ„ΠΎΡ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ . ЕдинствСнный способ-ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈ Ρ€Π΅Ρ„Π»ΠΎΠ³Π°, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git prune --expire -now .

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


Angelo Borsotti Β  Β 

04 октября 2012 Π² 07:19



7

Если Π²Ρ‹ просто испортили свой послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ (Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ сообщСниС, Π·Π°Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния) ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ΅ Π Π•ΠŸΠž, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

git commit --amend -m "New message here"

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ поэтапныС измСнСния, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ с послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ (ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ) ΠΈ замСнят этот ΠΊΠΎΠΌΠΌΠΈΡ‚.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли Π²Ρ‹ исправляСтС Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π΅Π΅ Π½Π°ΠΆΠ°Π»ΠΈ, Π²Ρ‹ пСрСписываСтС ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, поэтому, Ссли Π²Ρ‹ это сдСлаСтС, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ послСдствия.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ ‘—no-edit ‘вмСсто’ — m’, Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ фиксации.

Π”ΠΎΠΊΡ‚ΠΎΡ€Π°:
http://git-scm.com/docs/git-commit.html

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


Pwnrar Β  Β 

26 мая 2014 в 23:24



7

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

git revert GIT_COMMIT_HASH

Π²Π²Π΅Π΄ΠΈΡ‚Π΅ сообщСниС, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰Π΅Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ:

git push  

Когда Π²Ρ‹ Π²Ρ‹Π΄Π°Π΅Ρ‚Π΅ git log Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ «wrong» ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сообщСния ΠΆΡƒΡ€Π½Π°Π»Π°.

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


Paulo Fidalgo Β  Β 

07 января 2015 Π² 15:13



6

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://gist.github.com/sagarjethi/c07723b2f4fa74ad8bdf229166cf79d8

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚

НапримСр ваш послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚

git push origin +aa61ab32^: master

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эту Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Ρ‚ΠΎΠ³Π΄Π° простой способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

Π¨Π°Π³ΠΈ

  1. Π‘Π½Π°Ρ‡Π°Π»Π° ΡΠ±Ρ€ΠΎΡΡŒΡ‚Π΅ Π²Π΅Ρ‚Π²ΡŒ ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ элСмСнту Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ фиксации

  2. Π‘ΠΈΠ»Π°-ΠΏΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΊ ΠΏΡƒΠ»ΡŒΡ‚Ρƒ дистанционного управлСния.

git reset HEAD^ --hard

git push origin -f

Для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ фиксации Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅

git reset bb676878^ --hard

git push origin -f

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


sagar jethi Β  Β 

22 июня 2018 в 13:40



5

Если Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π°ΠΆΠ°Π»ΠΈ, сначала Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² HEAD ($GIT_COMMIT_HASH_HERE) , Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force

Π—Π°Ρ‚Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ мСсто Π Π•ΠŸΠž Π±Ρ‹Π»ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, запускайтС:

git reset --hard origin/master

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


Justin Β  Β 

30 января 2017 Π² 00:25



5

Π’ΠΎ, Ρ‡Ρ‚ΠΎ я дСлаю ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° я ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽ ΠΈ Ρ‚ΠΎΠ»ΠΊΠ°ΡŽ (Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ» Π΅Π³ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ это Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ):

git reset --hard HEAD~1

git push -f origin

надСюсь это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚

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


Chris Sim Β  Β 

14 июня 2017 в 09:22



4

Бброс Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ

git reset --hard HEAD~<Number of commit> So git reset --hard HEAD~3

ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΎΠ»Ρ‡ΠΎΠΊ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚

git push -f origin

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


Ashish Singh Β  Β 

29 мая 2018 в 07:38



3

Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию вашСго ΠΊΠΎΠ΄Π° Π² ΠΏΠ°ΠΏΠΊΠ΅ temp. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Π° Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ сСрвСр.

git reset --hard HEAD
git clean -f
git pull

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ свои измСнСния ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдниС фиксации

git reset --soft HEAD^
git pull

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


Lava Sangeetham Β  Β 

14 июля 2016 в 11:25



2

Π― ΡƒΠΆΠ΅ Π΄Π°Π²ΠΈΠ» Π½Π° Π½Π΅Π³ΠΎ. НуТно Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ.
ΠŸΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΉ,
Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это ΠΎΡ‚ ДТастина Ρ‡Π΅Ρ€Π΅Π· git Π‘ΡƒΡˆΠ° прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для мСня:

git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force

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


Serg Burlaka Β  Β 

08 фСвраля 2019 Π² 21:29



1

git сброс —ТСсткий

git Π½Π°Ρ‡Π°Π»ΠΎ Ρ‚ΠΎΠ»Ρ‡ΠΊΠ° HEAD —сила

Если ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹, сначала ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Ρ‚Π΅Π³(Ρ‹). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС помСчСнная фиксация Π½Π΅ удаляСтся.

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


BillChan Β  Β 

24 июля 2015 в 14:45



1

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, я Ρ…ΠΎΡ‡Ρƒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ revert» test change 2 » commit(SHA1 ID: 015b5220c50e3dfbb1063f23789d92ae1d3481a2 (Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ SHA1 ID с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ gitk Π² git bash)).

Для этого я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ(всС Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° локальном ΡƒΡ€ΠΎΠ²Π½Π΅. Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ послС удалСния):

  1. git reset --hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2 //it Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вас ΠΊ этому ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ (SHA1 ID ΠΈΠ· test change 4 commit is 515b5220c50e3dfbb1063f23789d92ae1d3481a2 )
  2. git reset --hard HEAD~1 // это Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вас ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.
  3. git reset --hard HEAD^ // Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈΠ· git

послС удалСния:

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


ankit Β  Β 

03 июля 2018 в 06:51


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

ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ (навсСгда) ΠΈΠ· истории git

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ навсСгда ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· всСй истории рСпозитория git. Π― Π²ΠΈΠ΄Π΅Π» эту Ρ‚Π΅ΠΌΡƒ , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ рСкомСндуСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: git reset —hard HEAD~4 git push origin HEAD —force Π­Ρ‚ΠΎ…

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

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

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ самыС старыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· рСпозитория git

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Π”ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ : ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ (старыС) git ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· истории git ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π½ΠΎΡ‡Π½Ρ‹Ρ… снимков клиСнтских Π²Π΅Π±-сайтов. Π—Π½Π°Π½ΠΈΠ΅ всСго (php + mysqldump + Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²)…

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· ΡƒΠΆΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² git?

Работая Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ с большим количСством Ρ‡Π»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΌΡ‹ сСйчас пытаСмся ΠΎΡ‚ΡˆΠ»ΠΈΡ„ΠΎΠ²Π°Ρ‚ΡŒ наши способы Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ настоящСС врСмя вся Ρ€Π°Π±ΠΎΡ‚Π° вСдСтся Π² Π²Π΅Ρ‚ΠΊΠ΅ integration , которая Π±Ρ‹Π»Π° ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚…

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ пустыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² git

Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ пСрСнСс ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Mercurial Π½Π° Git. Mercurial добавляСт пустыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ добавляСтС Ρ‚Π΅Π³ΠΈ, поэтому я Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» с пустыми ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ Π² Git, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ…

Как я ΠΌΠΎΠ³Ρƒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΡ€ΠΎΠΌΠ΅ послСднСго x ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ?

МнС Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ способ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΡ€ΠΎΠΌΠ΅ послСднСго (самого послСднСго) 159 ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Git. Π― Ρ‚Π°ΠΊΠΆΠ΅ согласСн с созданиСм Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π² Π½Π΅Π΅ послСдних 159, Ссли это…

ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° создания Π²Π΅Ρ‚ΠΊΠΈ

Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git log ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ послС создания Π²Π΅Ρ‚ΠΊΠΈ? usage: git log [<options>] [<since>..<until>]…

Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ Π² git?

Π― ΠΈΡ‰Ρƒ способ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ. Допустим, Ρƒ мСня Π΅ΡΡ‚ΡŒ мастСр Π²Π΅Ρ‚Π²ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я наТимаю Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ сСрвСр. Но Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ Π½Π° сСрвСр. Π•ΡΡ‚ΡŒ Π»ΠΈ способ…

Git: ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· запроса pull

Π£ мСня Π΅ΡΡ‚ΡŒ запрос Π½Π° вытягиваниС, Π³Π΄Π΅ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Однако я Ρ…ΠΎΡ‡Ρƒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· этого PR ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ с нуля. Π“Π΄Π΅ я ΠΌΠΎΠ³Ρƒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свои ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ снова? Π― использовал git rebase , Π½ΠΎ Ρƒ мСня…

git-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Π²Π΅Ρ‚ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π˜Ρ‚Π°ΠΊ, Π² нашСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ git Π±Ρ‹Π»ΠΈ сдСланы Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ (Π½Π΅ самыС послСдниС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ сСйчас) Π² Π½Π°ΡˆΡƒ Π²Π΅Ρ‚ΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° Π±Ρ‹Ρ‚ΡŒ Π² Π²Π΅Ρ‚ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’Π΅Ρ‚Π²ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ,…

Π­Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π½ΠΎ оставит всС ваши измСнСния Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ rebase , Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π΄Ρ€ΡƒΠ³ΠΎΠΉ — cherry-pick , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π½Π΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΆΡƒΡ€Π½Π°Π»Π° git

НомСр Ρ…ΡΡˆ Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ фиксации Автор
1 2c6a45b (HEAD) Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ общСдоступного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ доступа Π’ΠΎΠΌ
2 ae45fab ОбновлСния интСрфСйса Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΠΎΠ΄Ρ€ΡΠ΄Ρ‡ΠΈΠΊ 1
3 77b9b82 Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ интСрфСйса Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΠΎΠ΄Ρ€ΡΠ΄Ρ‡ΠΈΠΊ 2
4 3c9093c ОбъСдинСнная Π²Π΅Ρ‚Π²ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² мастСр Π’ΠΎΠΌ
5 b3d92c5 Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ модуля Event CMS Пол
6 7feddbb Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ класса ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² CMS Π’ΠΎΠΌ
7 a809379 Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Git Π’ΠΎΠΌ

ИспользованиС Rebase

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΆΡƒΡ€Π½Π°Π» git, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹; 2 ΠΈ 3 (ae45fab ΠΈ 77b9b82).ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ rebase.

git rebase --onto <имя Π²Π΅Ρ‚ΠΊΠΈ> ~ <Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠΉ удаляСмой фиксации> <имя Π²Π΅Ρ‚ΠΊΠΈ> ~ <пСрвая сохраняСмая фиксация> <имя Π²Π΅Ρ‚ΠΊΠΈ>

, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ 2 ΠΈ 3 Π²Ρ‹ΡˆΠ΅

git rebase --onto repair ~ 3 Ρ€Π΅ΠΌΠΎΠ½Ρ‚Π° ~ 1 Ρ€Π΅ΠΌΠΎΠ½Ρ‚

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Cherry Pick

Π¨Π°Π³ 1: НайдитС Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ фиксациСй, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ git log

Π¨Π°Π³ 2: Checkout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ фиксируСт git checkout

Π¨Π°Π³ 3: Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ git checkout -b <новая Π²Π΅Ρ‚ΠΊΠ°>

Π¨Π°Π³ 4: Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ послС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ фиксации git cherry-pick

Π¨Π°Π³ 5: Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ шаг 4 для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ.

Π¨Π°Π³ 6: ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² Π²Π°ΡˆΡƒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ состоянии ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π”Π²Π°ΠΆΠ΄Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, всС Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: git status

Π¨Π°Π³ 7: ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»ΠΎΠΌΠ°Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ git checkout <сломанная Π²Π΅Ρ‚ΠΊΠ°>

Π¨Π°Π³ 8: Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ сброс сломанной Π²Π΅Ρ‚ΠΊΠΈ Π΄ΠΎ фиксации, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ git reset --hard

Π¨Π°Π³ 9: БлияниС фиксированной Π²Π΅Ρ‚ΠΊΠΈ с этой Π²Π΅Ρ‚ΠΊΠΎΠΉ git merge <имя Π²Π΅Ρ‚ΠΊΠΈ>

Π¨Π°Π³ 10: Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ измСнСния Π² ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ. Π’ΠΠ˜ΠœΠΠΠ˜Π•: это ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΠΏΠΎ! git push --force origin <имя Π²Π΅Ρ‚ΠΊΠΈ>

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ процСсс Π±Π΅Π· создания Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π¨Π°Π³ 2 ΠΈ 3 Π½Π° Π¨Π°Π³ 8 , Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π¨Π°Π³ΠΈ 7 ΠΈ 9.

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

Допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ 2 ΠΈ 4 ΠΈΠ· Ρ€Π΅ΠΏΠΎ.

  1. git checkout b3d92c5 Π˜Π·Π²Π»Π΅Ρ‡ΡŒ послСдний ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.
  2. git checkout -b repair Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  3. git cherry-pick 77b9b82 Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ 3.
  4. git cherry-pick 2c6a45b Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ 1.
  5. git checkout master checkout master.
  6. git reset --hard b3d92c5 Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ мастСр Π΄ΠΎ послСднСй использованной фиксации.
  7. git merge repair Π‘Π»ΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с мастСром.
  8. git push --hard origin master ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ мастСр Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΠΏΠΎ.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Git rebase ΠΈ cherrypick — опасныС, Π½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² качСствС послСднСго Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚.ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСблагоприятныС послСдствия для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ / Π²Π΅Ρ‚ΠΊΠ΅.

НаконСц-Ρ‚ΠΎ Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π±Ρ‹Ρ‚ΡŒ остороТным ΠΈ ΡƒΠ΄Π°Ρ‡ΠΈ!

.

git — Как ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ· GitHub?

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

  1. Около
  2. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹

  3. Для ΠΊΠΎΠΌΠ°Π½Π΄
  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка
    ΠžΠ±Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

  2. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка для ΠΊΠΎΠΌΠ°Π½Π΄
    Π“Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈ дСлятся частными знаниями с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ

  3. Вакансии
    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ связанныС с Π½ΠΈΠΌ тСхничСскиС возмоТности ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠ³ΠΎ роста

  4. Π’Π°Π»Π°Π½Ρ‚
    НанимайтС тСхничСских спСциалистов ΠΈ создавайтС свой Π±Ρ€Π΅Π½Π΄ работодатСля

  5. Π Π΅ΠΊΠ»Π°ΠΌΠ°
    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ со всСго ΠΌΠΈΡ€Π°

  6. О компании

Загрузка…

.

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π° Β· GitHub Pages

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π° Β· GitHub Pages

Π€Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½

Π‘Π°ΠΉΡ‚, настроСнный ΠΏΠΎ этому адрСсу, Π½Π΅
ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

Если это ваш сайт, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ рСгистр ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° соотвСтствуСт URL-адрСсу.
Для ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Ρ… URL (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, http://example.com/ ) Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
index.html Ρ„Π°ΠΉΠ».

ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ
для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± использовании GitHub Pages .

.

git — Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· запроса Π½Π° пСрСнос

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

  1. Около
  2. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹

  3. Для ΠΊΠΎΠΌΠ°Π½Π΄
  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка
    ΠžΠ±Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

  2. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка для ΠΊΠΎΠΌΠ°Π½Π΄
    Π“Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈ дСлятся частными знаниями с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ

  3. Вакансии
    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ связанныС с Π½ΠΈΠΌ тСхничСскиС возмоТности ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠ³ΠΎ роста

  4. Π’Π°Π»Π°Π½Ρ‚
    НанимайтС тСхничСских спСциалистов ΠΈ создавайтС свой Π±Ρ€Π΅Π½Π΄ работодатСля

  5. Π Π΅ΠΊΠ»Π°ΠΌΠ°
    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ со всСго ΠΌΠΈΡ€Π°

  6. О компании

Загрузка…

.

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

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