Π Π°Π·Π½ΠΎΠ΅

Git ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅: ΠΊΠ°ΠΊ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния, внСсСнныС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

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

ΠΊΠ°ΠΊ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния, внСсСнныС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния, внСсСнныС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠ°Π½Π΄: git show ΠΈ git log -p.

Команда:

git show <ΠΊΠΎΠΌΠΌΠΈΡ‚>

ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Π΅Ρ‚ измСнСния, внСсСнныС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.

Команда git log -p слуТит Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ сразу нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π’Ρ‹Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ· ProGit:

Один ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git log β€” это -p, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π΅Π»ΡŒΡ‚Ρƒ (Ρ‚. Π΅. Ρ€Π°Π·Π½ΠΈΡ†Ρƒ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ diff), ΠΏΡ€ΠΈΠ²Π½Π΅ΡΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π΅ вСсь Π»ΠΎΠ³, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΠΈΡΠ»ΠΎΠ²ΡƒΡŽ ΠΎΠΏΡ†ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ -2, Ρ‡Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ Π²Ρ‹Π²ΠΎΠ΄ Π΄ΠΎ 2-Ρ… послСдних записСй. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$ git log -p -2

commit ca82a6dff817ec66f44342007202690a93763949

Author: Scott Chacon <[email protected]>

Date: Mon Mar 17 21:52:11 2008 -0700

changed the version number

diff —git a/Rakefile b/Rakefile

index a874b73..8f94139 100644

— a/Rakefile

+++ b/Rakefile

@@ -5,5 +5,5 @@ require ‘rake/gempackagetask’

spec = Gem::Specification.new do |s|

s.name = «simplegit»

— s.version = «0.1.0»

+ s.version = «0.1.1»

s.author = «Scott Chacon»

s.email = «[email protected]

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7

Author: Scott Chacon <[email protected]>

Date: Sat Mar 15 16:40:33 2008 -0700

removed unnecessary test code

diff —git a/lib/simplegit.rb b/lib/simplegit.rb

index a0a60ae..47c6340 100644

— a/lib/simplegit.rb

+++ b/lib/simplegit.rb

@@ -18,8 +18,3 @@ class SimpleGit

end

end

-if $0 == __FILE__

— git = SimpleGit.new

— puts git.show

-end

\ No newline at end of file

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

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² подробностях. Π£Ρ€ΠΎΠΊ 5

Π£Ρ€ΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ научимся ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ истории

Π’ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ

ΠšΠΎΠ½ΡΠΏΠ΅ΠΊΡ‚ ΡƒΡ€ΠΎΠΊΠ°


ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ содСрТаниС ΡƒΡ€ΠΎΠΊΠ°, основныС инструкции для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки ΠΈ совСты.

Для ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ


Π£Ρ€ΠΎΠΊ частично повторяСт содСрТаниС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. Но Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΌΡ‹ рассмотрим Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²


Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² — ΠΎΠ΄Π½Π° ΠΈΠ· самых Π²Π°ΠΆΠ½Ρ‹Ρ… частСй git. Π’ истории ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, commit message, Π΄Π°Ρ‚Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ Π΅Π³ΠΎ Ρ…ΡΡˆ.
А Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ измСнСния Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ git Ρ…Ρ€Π°Π½ΠΈΡ‚ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ всС, ΠΎΡ‚ самого Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Команда git log


Π—Π° просмотр истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° git log. Π’ сочСтании с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.
Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², посмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…

git log, просмотр истории ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ


    $ git log


ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΎΡ‚ Π½ΠΎΠ²Ρ‹Ρ… ΠΊ старым. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° выводится

  • Ρ…ΡΡˆ
  • Π°Π²Ρ‚ΠΎΡ€
  • Π΄Π°Ρ‚Π°
  • сообщСниС (commit message)

git log -p, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ истории


    $ git log -p


Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ git log, Π½ΠΎ Π΅Ρ‰Π΅ ΠΈ с измСнСниями Π² Ρ„Π°ΠΉΠ»Π°Ρ…

git log —oneline, короткая запись


    $ git log --oneline


Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² ΠΎΠ΄Π½Ρƒ строку. ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ commit message

git log —stat —graph, история Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π°


    $ git log --stat --graph


Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π°, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС псСвдографикой. Плюс Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². К Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΌΡ‹ вСрнСмся, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ истории


Π•ΡΡ‚ΡŒ мноТСство ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Π’ Ρ‚ΠΎΠΌ числС Π² сочСтании с линуксовыми ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.
Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…

Поиск ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ


Команда grep — ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ числС ΠΈ с git. НапримСр, ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ


    git log --oneline | grep revert # поиск упоминания revert
    git log --oneline | grep -i revert # нСзависимо ΠΎΡ‚ рСгистра

ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ²ΡˆΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»


    git log index.html

Поиск ΠΏΠΎ Π°Π²Ρ‚ΠΎΡ€Ρƒ


    git log --author webdevkin


Π’ ΠΎΠΏΡ†ΠΈΠΈ —author ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя ΠΈΠ»ΠΈ email, Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ.

Поиск ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ Π΄Π°Ρ‚


ΠžΠΏΡ†ΠΈΠΈ —after ΠΈ —before Π·Π°Π΄Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Π΄Π°Ρ‚Ρ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²


     git log --after='2020-03-09 15:30' --before='2020-03-09 16:00'

ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΎΠΏΡ†ΠΈΠΉ


ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΎΠΏΡ†ΠΈΠΈ git ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… линуксовыми ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ


    git log --author=webdevkin --oneline | grep footer # всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… упоминаСтся footer
    git log --oneline | wc -l # количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

КакиС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹


ΠœΡ‹ рассмотрСли Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π½ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ git log Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ.
ВсС ΠΈΡ… Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅Ρ‚ смысла, ΠΏΡ€ΠΈ нСобходимости ΠΈΠ·ΡƒΡ‡Π°ΠΉΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.


    git log --help

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, git show


Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ…ΡΡˆ. Π₯эш ΠΊΠΎΠΌΠΌΠΈΡ‚Π° выводится Π² любой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git log, с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π±Π΅Π·. НапримСр,


    $ git log --oneline
    
    7b7d7fa Fixed footer
    26812f9 Revert "Fixed footer"
    0f90ae7 Revert "Fixed styles"
    ...
    a1f3c45 Added footer
    a65aa43 Added new block students to main page
    0b90433 Initial commit


Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚


    $ git show 43f6afc


Выводится подробная информация ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅:

  • Ρ…ΡΡˆ
  • Π°Π²Ρ‚ΠΎΡ€
  • Π΄Π°Ρ‚Π°
  • commit message
  • список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²
  • измСнСния Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°


Π₯эш ΠΊΠΎΠΌΠΌΠΈΡ‚Π° 40-ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ запись — ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 7 символов Ρ…ΡΡˆΠ°.
Команда git log —oneline Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Ρ…ΡΡˆ. Для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ достаточно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 4 символа.
НапримСр, 3 ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°ΠΆΡƒΡ‚ содСрТимоС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°


    $ git show 051f75475cb1dca3cd08c1c7367a3308671ccf7b
    $ git show 051f754
    $ git show 051f

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² PhpStorm


Π’ ΠΎΠΊΠ½Π΅ Local Changes, Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Log показываСтся вся история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π² Π»Π΅Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ. Π’ спискС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΡ… commit message, Π°Π²Ρ‚ΠΎΡ€ ΠΈ Π΄Π°Ρ‚Π°.
Клик Π½Π° Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части Π²ΠΊΠ»Π°Π΄ΠΊΠΈ список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Клик Π½Π° Π½ΡƒΠΆΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈ Ctrl/Cmd+D ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ всС измСнСния Π² этом Ρ„Π°ΠΉΠ»Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ git diff.


Π’ тСкстС ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с историСй Π² PhpStorm слоТно, смотритС Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ.

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° старый ΠΊΠΎΠΌΠΌΠΈΡ‚, Π·Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ


НуТно это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² Π΄Π²ΡƒΡ… случаях:


1. ΠŸΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ Π΄Π΅ΠΏΠ»ΠΎΠ΅, ΠΊΠΎΠ³Π΄Π° Π²ΡΠΊΡ€Ρ‹Π»Π°ΡΡŒ критичная Π±Π°Π³Π°.
Если Π±Π°Π³Π° слоТная ΠΈ ΠΏΠΎΡ„ΠΈΠΊΡΠΈΡ‚ΡŒ Π΅Π΅ быстро Π½Π΅ удаСтся, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ ΡƒΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΌ Ρ‡ΠΈΠ½ΠΈΡ‚ΡŒ Π±Π°Π³Ρƒ.


2. ΠŸΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅. Когда Π² ΠΊΠΎΠ΄ Π·Π°ΠΊΡ€Π°Π»Π°ΡΡŒ Π±Π°Π³Π° ΠΈ ΠΌΡ‹ постСпСнно продвигаСмся «Π½Π°Π·Π°Π΄ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅» ΠΈ ΠΈΡ‰Π΅ΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сломалось

Как ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅


ΠŸΠ΅Ρ€Π²ΠΎΠ΅ — ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ…ΡΡˆ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. НапримСр, ΠΈΠΌΠ΅Π΅ΠΌ Ρ‚Π°ΠΊΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ


    $ git log --oneline
    
    7b7d7fa Fixed footer
    26812f9 Revert "Fixed footer"
    0f90ae7 Revert "Fixed styles"
    ...
    a1f3c45 Added footer
    a65aa43 Added new block students to main page
    0b90433 Initial commit


Π₯ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° прСдпослСдний ΠΊΠΎΠΌΠΌΠΈΡ‚. ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ΄ΡƒΡ‚ Π² порядкС убывания, поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΉ свСрху — 26812f9. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ Π½Π° Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ


    $ git checkout 26812f9


ВсС, Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈΡΡŒ — послСдний


    $ git log --oneline 
    
    26812f9 Revert "Fixed footer"
    0f90ae7 Revert "Fixed styles"
    ...
    a1f3c45 Added footer
    a65aa43 Added new block students to main page
    0b90433 Initial commit


Π£ΠΉΠ΄Π΅ΠΌ Π΅Ρ‰Π΅ дальшС, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Π΄Π°Ρ‚Ρ‹, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ — это послСдний Π² спискС — 0b90433 Initial commit


    $ git checkout 0b90433


ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ


    $ git log --oneline 
    
    0b90433 Initial commit


Π§Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Π½ΠΎ, Π² исходноС состояниС, Π½ΡƒΠΆΠ½ΠΎ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ


    $ git checkout master


master — это Π²Π΅Ρ‚ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. О Π²Π΅Ρ‚ΠΊΠ°Ρ… ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Ρƒ ΡƒΡ€ΠΎΠΊΠΎΠ²

Как ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ Π² PhpStrom


Π’ΠΊΠ»Π°Π΄ΠΊΠ° Log, ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΊΠ»ΠΈΠΊ Π½Π° Π½ΡƒΠΆΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΠΈ Checkout Revision. ВсС. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½Π° ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ вся, Π½ΠΎ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΎΠΊ HEAD с символом «!»


Как Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ? Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π½ΠΈΠΆΠ΅ΠΌ ΡƒΠ³Π»Π΅ PhpStorm Π΅ΡΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ git:, ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ Π½Π° Π½Π΅Π³ΠΎ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Local Branches — master — checkout. Π—Π½Π°Ρ‡ΠΎΠΊ «!» ΠΏΡ€ΠΎΠΏΠ°Π΄Π΅Ρ‚ — ΠΌΡ‹ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ Π² исходноС состояниС

Π§Ρ‚ΠΎ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ

  • ΠΊΠ°ΠΊ ΠΈ git diff, ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² git log ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² PhpStorm
  • Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git log Π΅ΡΡ‚ΡŒ мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² сортировки ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ
  • сочСтаниС git log с простыми линуксовыми ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π΄Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ эффСкт. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ grep — ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ
  • PhpStorm прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ возмоТности ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². МоТно ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΏΠΎ commit message, ΠΏΠΎ Π°Π²Ρ‚ΠΎΡ€Ρƒ, Π΄Π°Ρ‚Π΅ ΠΈ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ°ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… происходили измСнСния
  • ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΠΎ истории остороТно, Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² исходноС состояниС


На этом всС. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ взаимодСйствии с сСрвСром ΠΈ познакомимся с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ git push ΠΈ git pull.


Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Π΄ΠΎ встрСчи!

ВсС ΡƒΡ€ΠΎΠΊΠΈ курса

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ слСдуСт…

19 совСтов ΠΏΠΎ повсСднСвной Ρ€Π°Π±ΠΎΡ‚Π΅ с Git / Π‘Π»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Mail.ru Group / Π₯Π°Π±Ρ€

Если Π²Ρ‹ рСгулярно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Git, Ρ‚ΠΎ Π²Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ практичСскиС совСты ΠΈΠ· этой ΡΡ‚Π°Ρ‚ΡŒΠΈ. Если Π²Ρ‹ Π² этом ΠΏΠΎΠΊΠ° Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, Ρ‚ΠΎ для Π½Π°Ρ‡Π°Π»Π° Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Git Cheat Sheet. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ Ρ‚Π°ΠΊ, данная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ‚Π΅Ρ…, Ρƒ ΠΊΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‹Ρ‚ использования Git ΠΎΡ‚ Ρ‚Ρ€Ρ‘Ρ… мСсяцСв. ΠžΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎ: Ρ‚Ρ€Π°Ρ„Ρ„ΠΈΠΊ, большиС ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ!

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

  1. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ просмотра Π»ΠΎΠ³Π°
  2. Π’Ρ‹Π²ΠΎΠ΄ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»
  3. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… строках Ρ„Π°ΠΉΠ»Π°
  4. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π΅Ρ‰Ρ‘ Π½Π΅ Π²Π»ΠΈΡ‚Ρ‹Ρ… Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
  5. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ
  6. ΠŸΠ°Ρ€Π° слов ΠΎ Ρ€Π΅Π±Π΅ΠΉΠ·Π΅
  7. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ структуры Π²Π΅Ρ‚ΠΊΠΈ послС локального ΠΌΠ΅Ρ€ΠΆΠ°
  8. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° вмСсто создания Π½ΠΎΠ²ΠΎΠ³ΠΎ
  9. Π’Ρ€ΠΈ состояния Π² Git ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ
  10. Мягкая ΠΎΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²
  11. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π΄ΠΈΡ„Ρ„ΠΎΠ² для всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π° Π½Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ Π·Π° Ρ€Π°Π·) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сторонних инструмСнтов
  12. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²
  13. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°
  14. Поиск ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ старых Π²Π΅Ρ‚ΠΎΠΊ
  15. ΠžΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²
  16. Π₯ΠΎΡ€ΠΎΡˆΠΈΠ΅ примСчания ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ
  17. АвтодополнСния ΠΊΠΎΠΌΠ°Π½Π΄ Git
  18. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ алиасов для часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄
  19. Быстрый поиск ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

1. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ просмотра Π»ΠΎΠ³Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git log —oneline —graph

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π²Π°ΠΌ ΡƒΠΆΠ΅ доводилось ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git log. Π£ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ для достиТСния Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π§Π°Ρ‰Π΅ всСго я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ эти:

  • —author=»Alex Kras» β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, сдСланныС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ
  • —name-only β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ названия ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²
  • —oneline β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сокращённыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΉ строки)
  • —graph β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй для всСх ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²
  • —reverse β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ хронологичСском порядкС (сначала старыС)
  • —after β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, сдСланныС послС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹
  • —before β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, сдСланныС Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ Ρƒ мСня Π±Ρ‹Π» Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ пятницу. И ΠΌΠ½Π΅ Π±Ρ‹Π»ΠΎ достаточно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ git log —author=»Alex Kras» —after=»1 week ago» —oneline, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π°Ρ‡Π°Π»ΡŒΡΡ‚Π²Ρƒ.

Π’ΠΎΠΎΠ±Ρ‰Π΅, Π² Git Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ всяких ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ man git-log Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ просмотра истории. Если Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² вас Π½Π΅ устроит, Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ —pretty, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π°Ρ‡Ρƒ Π² ΡˆΠΈΡ€ΠΎΠΊΠΈΡ… ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ….

2. Π’Ρ‹Π²ΠΎΠ΄ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git log -p filename

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ git log -p ΠΈΠ»ΠΈ git log -p filename ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ Π΄Π°Ρ‚Ρƒ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ сдСланныС Π² этом ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ измСнСния.

Π”Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ поиска ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ less, Π½Π°Π±Ρ€Π°Π² «слСш» ΠΈ ввСдя поисковый запрос: /{{поисковый-запрос}} (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ «n» для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ поиска ΠΈ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ «N» для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ):

3. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… строках Ρ„Π°ΠΉΠ»Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git log -L 1,1:some-file.txt

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git blame filename ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° послСдних ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π² Ρ„Π°ΠΉΠ»Π΅.

Π­Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ нСдостаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ прСдоставляСт.

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git log с Ρ„Π»Π°Π³ΠΎΠΌ -L, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΉ строки Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, ΠΈ Git ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны с этой строкой.

По сути это Π°Π½Π°Π»ΠΎΠ³ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git log -p, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с фокусом Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… измСнСниях.

4. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π΅Ρ‰Ρ‘ Π½Π΅ Π²Π»ΠΈΡ‚Ρ‹Ρ… Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git log —no-merges master..

Если Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ трудится ΠΌΠ½ΠΎΠ³ΠΎ людСй, Ρ‚ΠΎ Π²Ρ‹ навСрняка ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с мноТСствСнными вливаниями (ΠΌΡ‘Ρ€ΠΆΠ°ΠΌΠΈ) Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, master) Π² Π²Π΅Ρ‚ΠΊΡƒ с Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΠΈΡ‡Π΅ΠΉ. Π’Π°ΠΊΠΈΠ΅ ΠΌΡ‘Ρ€ΠΆΠΈ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΡΡŽΡ‚ просмотр истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ слоТно ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, сдСланныС Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

Команда git log —no-merges master.. Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ —no-merges Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Ρ‘ Π½Π΅ Π±Ρ‹Π»ΠΈ Π²ΠΌΡ‘Ρ€ΠΆΠ΅Π½Ρ‹ ΠΊΡƒΠ΄Π°-Π»ΠΈΠ±ΠΎ, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ master.. Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Ρ‘ Π½Π΅ Π±Ρ‹Π»ΠΈ Π²ΠΌΡ‘Ρ€ΠΆΠ΅Π½Ρ‹ Π² Π²Π΅Ρ‚ΠΊΡƒ master (здСсь Π²Π°ΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ послС названия Π²Π΅Ρ‚ΠΊΠΈ).

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π½ΠΎ ΠΈ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π² Π½ΠΈΡ… внСсСны, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git show —no-merges master.. ΠΈΠ»ΠΈ git log -p —no-merges master.. (ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ).

5. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git show some-branch:some-file.js

Иногда Π±Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ„Π°ΠΉΠ» Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡΡΡŒ Π½Π° Π½Π΅Ρ‘. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git show some-branch-name:some-file-name.js, которая Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ содСрТимоС Ρ„Π°ΠΉΠ»Π° Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ прямо Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π».

А с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ пСрСнаправлСния Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ этот Ρ„Π°ΠΉΠ» Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ мСсто Π½Π° дискС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² своём Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅: git show some-branch-name:some-file-name.js > deleteme.js.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ всСго лишь ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: git diff some-branch some-filename.js

6. ΠŸΠ°Ρ€Π° слов ΠΎ Ρ€Π΅Π±Π΅ΠΉΠ·Π΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git pull —rebase

Π Π°Π½Π΅Π΅ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ многочислСнных ΠΌΡ‘Ρ€ΠΆΠ°Ρ… мастСра Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. НСкоторых ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase. Π’ΠΎΠΎΠ±Ρ‰Π΅, Ρ€Π΅Π±Π΅ΠΉΠ· β€” ΠΎΡ‡Π΅Π½ΡŒ мощная функция, ΠΈ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поста. Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ говорится Π² ΠΊΠ½ΠΈΠ³Π΅ Β«Pro GitΒ»:

НСсмотря Π½Π° всС свои прСимущСства, Ρƒ Ρ€Π΅Π±Π΅ΠΉΠ·Π° Π΅ΡΡ‚ΡŒ ΠΈ свои нСдостатки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ:

НС Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ€Π΅Π±Π΅ΠΉΠ· ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², находящиСся Π²Π½Π΅ вашСго рСпозитория.

Если Π²Ρ‹ послСдуСтС этому совСту, Ρ‚ΠΎ всё Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС всС Π±ΡƒΠ΄ΡƒΡ‚ вас Π½Π΅Π½Π°Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π° Π΄Ρ€ΡƒΠ·ΡŒΡ ΠΈ сСмья станут вас ΠΏΡ€Π΅Π·ΠΈΡ€Π°Ρ‚ΡŒ.

Однако Ρ€Π΅Π±Π΅ΠΉΠ·Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΠΎΡΡ‚ΡŒΡΡ, просто слСдуСт ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌ.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Π±Π΅ΠΉΠ· β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, запускаСмый с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git rebase -i {{some commit hash}}, которая ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с инструкциями ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ. НС Π±ΡƒΠ΄Ρƒ дальшС Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π΅ΠΌΠ° эта достаточно ΠΎΠ±ΡŠΡ‘ΠΌΠ½Π°Ρ.

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° полСзная ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π΅Π±Π΅ΠΉΠ·Π°: git pull —rebase

НапримСр, Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с локальной ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ сдСлали нСбольшой ΠΊΠΎΠΌΠΌΠΈΡ‚. А Π² это врСмя ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Π·Π°Π»ΠΈΠ» Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΡƒΡŽ копию Π²Π΅Ρ‚ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ своСго нСдСльного Ρ‚Ρ€ΡƒΠ΄Π°. Когда Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ свои измСнСния, Git скаТСт Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ сначала Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git pull для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°. Как добропорядочный Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π²Ρ‹ Ρ‚Π°ΠΊ ΠΈ поступитС ΠΈ послС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git pull Π² истории вашСй локальной ΠΊΠΎΠΏΠΈΠΈ Π²Π΅Ρ‚ΠΊΠΈ получится Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚, сгСнСрированный автоматичСски: Β«Merge remote-tracking branch ‘origin/master’Β».

Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ всё Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π·Π°ΡΠΎΡ€ΡΡŽΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git pull —rebase, ΠΈ Git сначала Π·Π°Π±Π΅Ρ€Ρ‘Ρ‚ измСнСния ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π²Π΅Ρ‚ΠΊΠΈ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½Π°ΠΊΠ°Ρ‚ΠΈΡ‚ ваши Π½Π΅Π·Π°ΠΏΡƒΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ послС самого послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π±Ρ‹ всё Ρ‚Π°ΠΊ ΠΈ Π±Ρ‹Π»ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΡ‘Ρ€ΠΆΠ° ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΈ ΠΌΡ‹ ΠΈΠ·Π±Π΅ΠΆΠΈΠΌ ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΎ ΠΌΡ‘Ρ€ΠΆΠ΅ Π² истории измСнСния.

7. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ структуры Π²Π΅Ρ‚ΠΊΠΈ послС локального ΠΌΠ΅Ρ€ΠΆΠ°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git merge —no-ff

МнС нравится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ багфикса ΠΈΠ»ΠΈ Ρ„ΠΈΡ‡ΠΈ. Помимо ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ сСрия ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² связана с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ таском. Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΌΡ‘Ρ€ΠΆΠΈΠ»ΠΈ ΠΏΡƒΠ»-рСквСсты Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… сСрвисах, Ρƒ вас всСгда Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ смёрТСнной Π²Π΅Ρ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git log —oneline —graph.

Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΌΡ‘Ρ€ΠΆΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Git Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², располагая ΠΈΡ… Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ (Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ послС ΠΏΡƒΠ»-рСквСста), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ —no-ff, ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ получится подробная дрСвовидная история: git merge —no-ff some-branch-name

8. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° вмСсто создания Π½ΠΎΠ²ΠΎΠ³ΠΎ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git commit —amend

Π­Ρ‚ΠΎΡ‚ совСт ΠΎΡ‡Π΅Π½ΡŒ простой. Допустим, Π²Ρ‹ сдСлали измСнСния, Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ»ΠΈ ΠΈΡ…, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΡƒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с описаниСм «исправлСниС ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ°Β», Π½ΠΎ Π΅ΡΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅.

Если Π²Ρ‹ Π΅Ρ‰Ρ‘ Π½Π΅ Π·Π°ΠΏΡƒΡˆΠΈΠ»ΠΈ измСнСния Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ Π²ΠΎΡ‚:

  1. Π˜ΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ.
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ измСнСния Π² список Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… для ΠΊΠΎΠΌΠΌΠΈΡ‚Π°: git add some-fixed-file.js.
  3. ЗапуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git commit —amend, которая Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ эти послСдниС измСнСния Π² самый послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚. Π’Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ смоТСтС ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.
  4. Когда всё Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ Π²Π΅Ρ‚ΠΊΠΎΠΉ ΠΎΠ΄ΠΈΠ½, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ измСнСния Π΄Π°ΠΆΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°ΠΏΡƒΡˆΠΈΠ»ΠΈ Π²Π΅Ρ‚ΠΊΡƒ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ git push -f послС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΈ удалённая Π²Π΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписана. Но Π²Π°ΠΌ НЕ ЗАΠ₯ΠžΠ§Π•Π’Π‘Π― Π΄Π΅Π»Π°Ρ‚ΡŒ это с Π²Π΅Ρ‚ΠΊΠΎΠΉ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди (ΠΊΠ°ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Π² совСтС ΠΏΡ€ΠΎ Ρ€Π΅Π±Π΅ΠΉΠ· Π²Ρ‹ΡˆΠ΅). Π’ Ρ‚Π°ΠΊΠΈΡ… случаях, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ΠΌ «исправлСниС ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈΒ».

9. Π’Ρ€ΠΈ состояния Π² Git ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git reset —hard HEAD ΠΈ git status -s

Как Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ„Π°ΠΉΠ» Π² Git ΠΌΠΎΠΆΠ΅Ρ‚ находится Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… состояний:

  1. unstaged β€” Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² индСкс для ΠΊΠΎΠΌΠΌΠΈΡ‚Π°
  2. staged β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² индСкс для ΠΊΠΎΠΌΠΌΠΈΡ‚Π°
  3. commited β€” Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½

(На самом Π΄Π΅Π»Π΅ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, статус untracked β€” Ρ„Π°ΠΉΠ» Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².).

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git status Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΈΡ… состояний. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² индСкс для ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (пСрСвСсти Π΅Π³ΠΎ ΠΈΠ· состояния unstaged Π² состояниС staged), Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git add filename.js. Команда git add . добавляСт сразу всС Ρ„Π°ΠΉΠ»Ρ‹ (Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².).

Для Π±ΠΎΠ»Π΅Π΅ быстрого ΠΈ простого просмотра состояния Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git status -s, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° git status Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡƒΠΆΠ΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, для ΠΈΡ… просмотра слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git log.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ состояния Ρ„Π°ΠΉΠ»ΠΎΠ².

Бброс состояния Ρ„Π°ΠΉΠ»ΠΎΠ²

Бброс позволяСт ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π² истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Git. ВсСго Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° сброса:

  1. git reset —hard {{some-commit-hash}} β€” Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² истории. ВсС измСнСния, сдСланныС послС этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΏΡ€ΠΎΠΏΠ°Π΄ΡƒΡ‚.
  2. git reset {{some-commit-hash}} β€” Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² истории. ВсС измСнСния, сдСланныС послС этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ состояниС Β«Not staged for commitΒ». Π§Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git add ΠΈ git commit.
  3. git reset —soft {{some-commit-hash}} β€” Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² истории. ВсС измСнСния, сдСланныС послС этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ состояниС Β«Staged for commitΒ». Π§Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git commit.

ΠŸΠΎΠ½Π°Π»Π°Ρ‡Ρƒ эта информация ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ бСсполСзной, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡Π½Ρ‘Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΠ½Π° Π²Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ пригодится. НапримСр, я для сСбя Π²Ρ‹Π΄Π΅Π»ΠΈΠ» Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ сцСнарии использования этих ΠΊΠΎΠΌΠ°Π½Π΄:

  1. Если я Ρ…ΠΎΡ‡Ρƒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС внСсённыС измСнСния ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с чистого листа, я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git reset —hard HEAD (самый частый случай).
  2. Если я Ρ…ΠΎΡ‡Ρƒ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния ΠΈ/ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ порядкС, я ΠΈΡΠΏΠΎΠ»ΡŒΠ·Ρƒ git reset {{some-start-point-hash}}.
  3. Если я просто Ρ…ΠΎΡ‡Ρƒ Π²Π·ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ ΡΠ»ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½ большой ΠΊΠΎΠΌΠΌΠΈΡ‚, я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git reset —soft {{some-start-point-hash}}.

Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΎ ΠΏΡ€ΠΈ этом измСнСния для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ измСнСния этих Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git checkout forget-my-changes.js. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ git reset —hard, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии Ρ„Π°ΠΉΠ»Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ»ΠΈ Π²Π΅Ρ‚ΠΎΠΊ: git checkout some-branch-name file-name.js ΠΈ git checkout {{some-commit-hash}} file-name.js.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² состоянии Β«Staged for commitΒ», ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΡ… ΠΈΠ· индСкса для ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git reset HEAD file-name.js. Для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π² исходноС состояниС просто Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ git checkout file-name.js Π΅Ρ‰Ρ‘ Ρ€Π°Π·.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° git reset —hard HEAD file-name.js Π½Π΅ сработаСт. Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° смСны состояний Π² Git нСсколько Π·Π°ΠΏΡƒΡ‚Π°Π½Π° ΠΈ Π½Π΅ всСгда ΠΌΠΎΠΆΠ½ΠΎ сходу ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π― надСюсь, Ρ‡Ρ‚ΠΎ Π² этом совСтС я доступно ΠΈ понятно всё объяснил.

10. Мягкая ΠΎΡ‚ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git revert -n

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ удобная ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° Ρ‚ΠΎΡ‚ случай, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ послСдниС ΠΏΠ°Ρ€Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² измСнСниях ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ΅ мСсто.

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ git revert автоматичСски Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ Ρ‚Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΠ»ΠΈ, запросив Ρƒ вас ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ ΠΎΡ‚ΠΊΠ°Ρ‚Π°. Π€Π»Π°Π³ «-n» Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π³ΠΈΡ‚Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‚ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Π» ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ срочного ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, вСдь ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ просто ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π½ΠΈΡ….

11. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π΄ΠΈΡ„Ρ„ΠΎΠ² для всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π° Π½Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ Π·Π° Ρ€Π°Π·) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сторонних инструмСнтов

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git difftool -d

Моя любимая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для сравнСния Ρ„Π°ΠΉΠ»ΠΎΠ² Π² графичСском интСрфСйсС β€” Meld. Π― влюбился Π² Π½Π΅Ρ‘ Π΅Ρ‰Ρ‘ со Π²Ρ€Π΅ΠΌΡ‘Π½ Linux, ΠΈ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΎΠ½Π° всСгда со ΠΌΠ½ΠΎΠΉ.

Π―, кстати, Π½Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΡ€ΠΎΠΏΠ°Π³Π°Π½Π΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Meld. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ любимая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для сравнСния Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈ, вСроятнСС всСго, ΠΎΠ½Π° ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Git, ΠΊΠ°ΠΊ для сравнСния, Ρ‚Π°ΠΊ ΠΈ для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚ΠΎ запуститС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Β«meldΒ» Π½Π° свою Π»ΡŽΠ±ΠΈΠΌΡƒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ:

git config --global diff.tool meld
git config --global merge.tool meld

ПослС этого всё, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ β€” Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git difftool some-file.js для просмотра ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ вмСсто консоли.

Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΡ‚ ΠΆΠ΅ meld) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ сравнСниС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΎ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ. Если Π²Ρ‹ запуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git difftool -d, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄ΠΈΡ„Ρ„ ΠΏΠΎ всСму ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° это Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.

12. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git diff -w ΠΈΠ»ΠΈ git blame -w

Если Π²Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΌΠ΅Π½ΡΡ‚ΡŒ отступы ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚ΠΎ Π²Ρ‹ навСрняка ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎ мнСнию ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git blame, Π²Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ отвСтствСнны Π·Π° всС измСнСния Π² этих Ρ„Π°ΠΉΠ»Π°Ρ….

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Git достаточно ΡƒΠΌΡ‘Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊ Ρ‡Π΅ΠΌΡƒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ git diff, git blame ΠΈ Ρ‚.Π΄.) с Ρ„Π»Π°Π³ΠΎΠΌ «-w» ΠΈ Git Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС измСнСния, связанныС с ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами (ΠΏΡ€ΠΎΠ±Π΅Π», табуляция ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅).

13. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git add -p

ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Git явно Π½Π΅Ρ€Π°Π²Π½ΠΎΠ΄ΡƒΡˆΠ΅Π½ ΠΊ Ρ„Π»Π°Π³Ρƒ «-p«, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ добавляСт ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΡˆΡ‚ΡƒΠΊΠΈ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ.

Π’ случаС с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git add, этот Ρ„Π»Π°Π³ позволяСт Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ измСнСния ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ своих ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΏΡ€ΠΎΡ‰Π΅ Π±Ρ‹Π»ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ.

14. Поиск ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ старых Π²Π΅Ρ‚ΠΎΠΊ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git branch -a

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΎΠ±Ρ€Π°ΡΡ‚Π°ΡŽΡ‚ большим количСством Π²Π΅Ρ‚ΠΎΠΊ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΌ Π΄Π°ΠΆΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π²ΠΌΡ‘Ρ€ΠΆΠ΅Π½Ρ‹ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ (master). Если Π²Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ„Π°Π½Π°Ρ‚ чистоты (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π²ΠΎ всём, Ρ‡Ρ‚ΠΎ касаСтся ΠΊΠΎΠ΄Π°), ΠΊΠ°ΠΊ ΠΈ я, вас навСрняка Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ.

ВсС Π²Π΅Ρ‚ΠΊΠΈ рСпозитория ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git branch -a (ΠΊΠ»ΡŽΡ‡ «-a» Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС Π²Π΅Ρ‚ΠΊΠΈ, Π² Ρ‚ΠΎΠΌ числС ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория), Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ —merged ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Π²Π΅Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²ΠΌΡ‘Ρ€ΠΆΠ΅Π½Ρ‹ Π² Π²Π΅Ρ‚ΠΊΡƒ master.

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ спСрва Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git fetch -p (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

МоТно ΠΈΠ·ΠΎΡ‰Ρ€ΠΈΡ‚ΡŒΡΡ ΠΈ вывСсти списки всСх ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ Π² Π½ΠΈΡ… ΠΈ Π΄Π°Ρ‚Ρƒ послСдних ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

git for-each-ref --sort=committerdate --format='%(refname:short) * %(authorname) * %(committerdate:relative)' refs/remotes/ | column -t -s '*'

К соТалСнию, насколько я знаю, Π½Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π»Ρ‘Π³ΠΊΠΎΠ³ΠΎ способа ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список смёрТСнных Π²Π΅Ρ‚ΠΎΠΊ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ здСсь придётся ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π²Π° списка ΠΈΠ»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ для этого скрипт.

15. ΠžΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git stash β€”keep-index ΠΈΠ»ΠΈ git stash -p

Если Π²Ρ‹ Π΅Ρ‰Ρ‘ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° git stash, Ρ‚ΠΎ ΠΎΠ½Π° просто ΠΊΠ»Π°Π΄Ρ‘Ρ‚ всС Π½Π΅Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ измСнСния Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ стСк Git. ΠŸΠΎΡ‚ΠΎΠΌ Π²Ρ‹ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git stash pop ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС эти измСнСния Π½Π°Π·Π°Π΄. Π’Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список всСх сохранённых состояний Π² стСкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git stash list, для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ посмотритС справку: man git-stash.

Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git stash Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ нСдостаток: ΠΎΠ½Π° ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ сразу всС Ρ„Π°ΠΉΠ»Ρ‹, Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ магичСский ΠΊΠ»ΡŽΡ‡ «-p«? Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git stash ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ, ΠΈ, ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΆΠ΅, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, догадались, этот ΠΏΡ€ΠΈ использовании этого ΠΊΠ»ΡŽΡ‡Π° Git ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π²Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ.

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ «?«, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ способ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ:

  1. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git add Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² индСкс для ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: git add file1.js, file2.js)
  2. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ git stash —keep-index, ΠΈ Git ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² индСкс для ΠΊΠΎΠΌΠΌΠΈΡ‚Π°
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ git reset Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ индСкс ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ

16. Π₯ΠΎΡ€ΠΎΡˆΠΈΠ΅ примСчания ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ

По этой Ρ‚Π΅ΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ «Как ΠΏΠΈΡΠ°Ρ‚ΡŒ примСчания ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΒ».

Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ я Ρ…ΠΎΡ‡Ρƒ особо ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: «ПослС примСнСния Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ {{ тСкст вашСго примСчания }}Β». НапримСр:

  • ПослС примСнСния Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ обновляСт Ρ„Π°ΠΉΠ» readme
  • ПослС примСнСния Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ добавляСт Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²Π° GET /user/:id API
  • ПослС примСнСния Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ отмСняСт ΠΊΠΎΠΌΠΌΠΈΡ‚ 12345

17. АвтодополнСния ΠΊΠΎΠΌΠ°Π½Π΄ Git

Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ubuntu), Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для Git Π² шСллС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Если Π² вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС это Π½Π΅ Ρ‚Π°ΠΊ (Π° Π² Mac OS X это Π½Π΅ Ρ‚Π°ΠΊ), Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

18. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ алиасов для часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄

TL;DR: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ алиасы Git ΠΈΠ»ΠΈ bash для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Git.

Π›ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Git Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку. А Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒΡΡ с ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π΄Π΅Π»Π°Ρ‚ΡŒ всё Π² ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ (Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹). Однако Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ алиасы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Git ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ систСму алиасов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git config --global alias.l "log --oneline --graph"

Π‘ΡƒΠ΄Π΅Ρ‚ создан Π½ΠΎΠ²Ρ‹ΠΉ алиас для Git с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «l«, ΠΈ это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ git l вмСсто git log —oneline —graph.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΊ алиасам Git ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, git l —author=»Alex»).

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° алиасам Π³ΠΈΡ‚Π° β€” старыС Π΄ΠΎΠ±Ρ€Ρ‹Π΅ алиасы Bash. НапримСр, Π² ΠΌΠΎΡ‘ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ .bashrc Π΅ΡΡ‚ΡŒ такая строка: alias gil=»git log -online -graph», которая позволяСт ΠΌΠ½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ gil вмСсто ΠΏΠΎΠ»Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈ ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это Π½Π° Ρ†Π΅Π»Ρ‹Ρ… Π΄Π²Π° символа мСньшС, Ρ‡Π΅ΠΌ git l :).

19. Быстрый поиск ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git bisect

Команда git bisect ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ «раздСляй ΠΈ властвуй» для поиска ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² большой истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ ΠΈΠ· ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ отпуска. Π’Ρ‹ Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π° Ρ„ΠΈΡ‡Π°, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ самым отпуском, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π’Ρ‹ провСряСтС послСдний сдСланный Π²Π°ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ β€” Ρ‚Π°ΠΌ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Однако Π·Π° врСмя вашСго отпуска Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ появились сотни Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΈ Π²Ρ‹ прСдставлСния Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… оказался ΠΏΠ»ΠΎΡ…ΠΈΠΌ ΠΈ сломал Π²Π°ΡˆΡƒ Ρ„ΠΈΡ‡Ρƒ.

НавСрняка Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ Π±Π°Π³, поломавший Π²Π°ΡˆΡƒ Ρ„ΠΈΡ‡Ρƒ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git blame Π½Π° Π·Π»ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Ρ‚Π΅Π½Π·ΠΈΡŽ. Но Ссли Π±Π°Π³ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅ ΠΎΡ‚Ρ‹ΡΠΊΠ°Ρ‚ΡŒ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

Π’ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ‚ случай, ΠΊΠΎΠ³Π΄Π° пригоТдаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° git bisect. Она позволяСт Π²Π°ΠΌ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠ΅ сроки.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ git bisect?

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (Β«ΠΏΠ»ΠΎΡ…ΠΎΠΉΒ» ΠΊΠΎΠΌΠΌΠΈΡ‚) ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (Β«Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉΒ» ΠΊΠΎΠΌΠΌΠΈΡ‚), git bisect Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Π² Π½ΠΎΠ²ΡƒΡŽ (Π±Π΅Π·Ρ‹ΠΌΡΠ½Π½ΡƒΡŽ) Π²Π΅Ρ‚ΠΊΡƒ Π½Π° этом срСдинном ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ Π² Π½Ρ‘ΠΌ ваша Ρ„ΠΈΡ‡Π°.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π² этом «срСдинный» ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π’ΠΎΠ³Π΄Π° Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ ΠΎΠ± этом Π³ΠΈΡ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git bisect good ΠΈ Ρƒ вас останСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° всСх ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² для поиска Ρ‚ΠΎΠ³ΠΎ самого, поломавшСго всё.

ПослС выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Git Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ ΠΈ снова ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Π² Π±Π΅Π·Ρ‹ΠΌΡΠ½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π½Π° Π½ΠΎΠ²ΠΎΠΌ срСдинном ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ² Π²Π°ΠΌ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ вашСй Ρ„ΠΈΡ‡ΠΈ. И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‚ΠΎΡ‚ самый Β«ΠΏΠ»ΠΎΡ…ΠΎΠΉΒ» ΠΊΠΎΠΌΠΌΠΈΡ‚.

Благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π΄Π΅Π»ΠΈΡ‚Π΅ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ, для обнаруТСния искомого Π²Π°ΠΌ потрСбуСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ log(n) ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ (см. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°).

Бписок ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ понадобятся Π²Π°ΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с git bisect:

  1. git bisect start β€” Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ раздСлСния
  2. git bisect good {{some-commit-hash}} β€” ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΊΠ°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послСдний сдСланный Π²Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π΄ отпуском)
  3. git bisect bad {{some-commit-hash}} β€” ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅ΠΌ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, HEAD Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, HEAD ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚)
  4. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Git Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ срСдинный ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ сообщаСт Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ
  5. git bisect bad β€” сообщаСм Git ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ наша Ρ„ΠΈΡ‡Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² провСряСмом Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅
  6. git bisect good β€” сообщаСм Git ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ наша Ρ„ΠΈΡ‡Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² провСряСмом Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅
  7. Когда ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½, Git сообщит Π²Π°ΠΌ ΠΎΠ± этом, ΠΏΡ€ΠΈ этом Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ git bisect Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ
  8. git bisect reset β€” возвращаСмся Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ процСсса git bisect (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ HEAD Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ)
  9. git bisect log β€” ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ послСдний ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ git bisect

Π”Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скрипта.

ΠŸΠ΅Ρ€Π΅Π²Ρ‘Π» Dreadatour, тСкст Ρ‡ΠΈΡ‚Π°Π» %username%.

ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹, история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π£Ρ€ΠΎΠΊ 4

Π£Ρ€ΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΈΠ· Ρ‡Π΅Π³ΠΎ ΠΎΠ½ состоит, Π° Ρ‚Π°ΠΊΠΆΠ΅ сдСлаСм ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, посмотрим ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ научимся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² git

Π’ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ. Π§Π°ΡΡ‚ΡŒ 1. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, основы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ ΠΈ историСй ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Π’ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ. Π§Π°ΡΡ‚ΡŒ 2. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΈ Ρ„ΠΈΡˆΠΊΠΈ

Π’ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ. Π§Π°ΡΡ‚ΡŒ 3. ΠžΠ±Ρ‰ΠΈΠ΅ наблюдСния ΠΈ совСты. Как Π΄Π΅Π»Π°Ρ‚ΡŒ «Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅» ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹

ΠšΠΎΠ½ΡΠΏΠ΅ΠΊΡ‚ ΡƒΡ€ΠΎΠΊΠ°


ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ содСрТаниС ΡƒΡ€ΠΎΠΊΠ°, основныС инструкции для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки ΠΈ совСты.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚


По-Π½Π°ΡƒΡ‡Π½ΠΎΠΌΡƒ это сохранСниС состояния, фиксация ΠΈΠ»ΠΈ слСпок ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.


Π§ΡƒΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ Π½Π°ΡƒΡ‡Π½ΠΎ, ΠΊΠΎΠΌΠΌΠΈΡ‚ — зафиксированный Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ измСнились ΠΈ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½ΠΈΡ… измСнилось. Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚


ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ добавляСм Π±Π»ΠΎΠΊ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² Π½Π° сайт. ДобавляСм Π½ΠΎΠ²ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ Π² index.html ΠΈ Π½ΠΎΠ²Ρ‹Π΅ стили Π² main.css. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ… Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ.
Но ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ git, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚. Команда git add добавляСт (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚) Ρ„Π°ΠΉΠ»Ρ‹ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.
МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ


    $ git add index.html
    $ git add css/main.css

А ΠΌΠΎΠΆΠ½ΠΎ всС сразу


    $ git add .

Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ сразу ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ стоит всСгда Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‚ΠΎΡ‡Π½ΠΎ Π»ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚ всС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.
Если ошиблись ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот Ρ„Π°ΠΉΠ» ΠΈΠ· ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ….


    $ git reset css/main.css

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ сам ΠΊΠΎΠΌΠΌΠΈΡ‚


    $ git commit -m 'Added block students'

Π€Π»Π°Π³ -m Π·Π°Π΄Π°Π΅Ρ‚ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (commit message). Оно Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ этот ΠΊΠΎΠΌΠΌΠΈΡ‚.
ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ понятно, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ происходит.

БостояниС Ρ„Π°ΠΉΠ»ΠΎΠ² Π² git. Π˜Π·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹


Π˜Π·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ — это Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ успСли ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°


ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ «ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹» ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.


git add filename добавляСт ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.


git reset filename удаляСт Ρ„Π°ΠΉΠ» ΠΈΠ· ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.


Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΈ этом Π½Π΅ мСняСтся. Один Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΈ Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ…, ΠΈ Π² ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ….
Π­Ρ‚ΠΎ происходит, Ссли ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ», Π½ΠΎ Π½Π΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ»ΠΈ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Π½Π΅ΠΌ измСния.

Из Ρ‡Π΅Π³ΠΎ состоит ΠΊΠΎΠΌΠΌΠΈΡ‚

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚

  • Ρ…ΡΡˆ (ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ id), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 239892a996…4784cf57f7
  • commit message (сообщСниС), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «Added block news»
  • список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, index.html ΠΈ css/main.css
  • измСнСния ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ, это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° git diff ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΡƒΡ€ΠΎΠΊΠ°
  • Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

    
        $ git commit -a -m 'Commit message'
    

    git commit с Ρ„Π»Π°Π³ΠΎΠΌ -a Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ создаст ΠΊΠΎΠΌΠΌΠΈΡ‚. Но остороТно, Π½Π΅ ΡƒΠ²Π»Π΅ΠΊΠ°ΠΉΡ‚Π΅ΡΡŒ этим, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠΎ ошибкС Π»Π΅Π³ΠΊΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚ лишниС Ρ„Π°ΠΉΠ»Ρ‹.

    ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΈ нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹


    ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ — это Ρ‚Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… git ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ измСнСния ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· git status ΠΈ git diff. Π’ нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ index.html ΠΈ css/main.css — отслСТиваСмыС.


    НСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ — это Ρ„Π°ΠΉΠ»Ρ‹, измСнСния Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… git Π½Π΅ ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚. Новый Ρ„Π°ΠΉΠ» Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² нСотслСТиваСмыС.
    Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ git ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git add filename

    Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², git log


    ВсС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Ρ…Ρ€Π°Π½ΠΈΡ‚ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΠΎ всСх ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ история ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

    
        $ git log
    


    Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя всС свСдСния ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…: Ρ…ΡΡˆ, Π°Π²Ρ‚ΠΎΡ€, Π΄Π°Ρ‚Π° ΠΈ список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Бписок ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git show ΠΏΠΎ Ρ…ΡΡˆΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

    
        $ git show hash_commit
    

    ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, git commit —amend


    Если ΠΌΡ‹ сдСлали ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ commit message

    
        $ git commit --amend -m 'New commit message'
    


    Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ сообщСниС послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π­Ρ‚ΠΎ пСрСзаписываниС истории, опСрация опасная.
    Π›ΡƒΡ‡ΡˆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π° сСрвСр (push Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΡƒΡ€ΠΎΠΊ)


    Если ΠΊΠΎΠΌΠΌΠΈΡ‚ успСли Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ остороТно, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ — Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части курса.

    ΠžΡ‚ΠΊΠ°Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², git revert


    Если ΠΌΡ‹ сдСлали Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ измСнСния, сдСланныС Π² Π½Π΅ΠΌ, Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° git revert

    
        $ git revert hash_commit
    


    ΠŸΡ€ΠΈ этом откроСтся Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΎΠ»ΠΆΠΈΡ‚ ввСсти commit message.
    Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ commit message ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· открытия Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°ΠΆΠΊΠ° —no-edit

    
        $ git revert --no-edit hash_commit
    

    Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ


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


    ΠŸΡ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ mv git сначала ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ 2 Ρ„Π°ΠΉΠ»Π°: старый ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ нСотслСТиваСмый.
    Π§Ρ‚ΠΎΠ±Ρ‹ git понял, Ρ‡Ρ‚ΠΎ этот Ρ„Π°ΠΉΠ» ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, Π½ΡƒΠΆΠ½ΠΎ сначала Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эти Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ

    
        $ git add .
    


    Π’ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git status Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ


    МоТно ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ состояния, Ссли ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

    
        $ git mv about.html company.html
    


    Π’ΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ сразу ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ. Π’ΠΎ ΠΆΠ΅ самоС с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π°

    
        $ git rm about.html
    

    Командная строка vs IDE


    Π Π°Π±ΠΎΡ‚Π° Π² PhpStorm продСмонстрирована Π² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… частях Π²ΠΈΠ΄Π΅ΠΎ.


    Как ΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² IDE. НапримСр, процСсс добавлСния Ρ„Π°ΠΉΠ»ΠΎΠ² (git add) Π² PhpStorm ΠΏΡ€ΠΈ создании ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ‚ внимания.
    Но Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ git add ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. И Ρ‡Ρ‚ΠΎ любая IDE ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ всС Ρ€Π°Π²Π½ΠΎ выполняСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git.
    ΠŸΡ€ΠΎΡΡ‚ΠΎ для нас прСдоставляСтся удобная ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ большС ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠ»ΠΈΡΡŒ Π½Π° самом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π° Π½Π΅ Π½Π° git.

    НаблюдСния ΠΈ совСты ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ


    Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ свои ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ соглашСния. Но я ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΎΠ±Ρ‰ΠΈΠ΅ совСты ΠΈ Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π² любом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅

    • ΠΊΠΎΠΌΠΌΠΈΡ‚ — это Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»
    • всСгда провСряйтС ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚. git diff — наш Π»ΡƒΡ‡ΡˆΠΈΠΉ Π΄Ρ€ΡƒΠ³
    • выдСляйтС ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π±Π°Π³ΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΊΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹
    • малСнький ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² ΠΎΠ΄Π½Ρƒ строку — это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ
    • Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ — ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹
    • мыслитС Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Π° Π½Π΅ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. ВыдСляйтС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ дСйствиС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°
    • commit message Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, ЧВО Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π° Π½Π΅ КАК Π΄Π΅Π»Π°Π΅Ρ‚
    • ΠΊΠΎΠΌΠΌΠΈΡ‚-Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ — это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. НС стоит ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ
    • git ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ°ΠΌΠΈ (ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°ΠΌΠΈ, pdf, Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»Π°ΠΌΠΈ) — Π²ΠΈΠ΄ΠΈΡ‚ Ρ„Π°ΠΊΡ‚ измСнСния, Π½ΠΎ Π½Π΅ сами измСнСния
    • подписывайтС ΠΊΠΎΠΌΠΌΠΈΡ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°


    ВсС эти ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ±Π»ΡŽΡΡ‚ΠΈ довольно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ, Π½ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ — ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Π·Π΄Ρ€Π°Π²Ρ‹ΠΉ смысл.
    Π£ΠΌΠ΅Π½ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.


    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ инструмСнты Π² IDE, Π½ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку. Π’ Π½Π΅ΠΉ Π²Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ устроСн git, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

    Π₯ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΈ ΠΏΠ»ΠΎΡ…ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹


    Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния git ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π΅ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠ»ΠΎΡ…ΠΈΠΌΠΈ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ. Но Π΅ΡΡ‚ΡŒ ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ подписи ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π½Π°ΡˆΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³. НСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²


    ИзмСнСн Ρ„Π°ΠΉΠ» index.html

    Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π±Π»ΠΎΠΊ новостСй


    Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ нСпонятно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ — ясно описана Π·Π°Π΄Π°Ρ‡Π°


    Π˜Π·ΠΌΠ΅Π½Π΅Π½Ρ‹ стили Π±Π°Π½Π½Π΅Ρ€Π°

    Растянули Π±Π°Π½Π½Π΅Ρ€ Π½Π° всю ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΎΠΊΠ½Π°


    ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ± измСнСниях стилСй Π±Π°Π½Π½Π΅Ρ€Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ — Ρ‚ΠΎΡ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ. Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ


    Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π°ΠΉΠ» VipClient

    Π Π°Π±ΠΎΡ‚Π° с vip-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ вынСсСна Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс


    По ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² VipClient ΠΌΡ‹ скорСС всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Π’Π˜ΠŸΠ°ΠΌΠΈ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ это Ρ‚ΠΎΡ‡Π½ΠΎ понятно, плюс Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация, Ρ‡Ρ‚ΠΎ это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс.


    ΠŸΠΎΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ стили Π² main.css

    Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ стилСй Π² main.css


    ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ ΠΏΡ€Π°Π²ΠΊΠ΅ стилСй, Π½ΠΎ нСпоянтно, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ. Π‘Π°Π³Π°? НовыС значСния? ИзмСнСн Ρ†Π²Π΅Ρ‚ тСкста ΠΏΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°?
    Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ясно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³


    МалСнький фикс

    Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ title страницы «Πž ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ»


    ΠšΠΎΠΌΠΌΠΈΡ‚ «ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΠΉ фикс» Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Π² Ρ‡Π΅ΠΌ ΠΎΠ½ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ прСдставлСниС

    НСмного ΠΎ философии ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²


    ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² заставляСт Ссли Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Ρ‚ΠΎ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΊ Π½Π΅ΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ. Π‘ git Π½Π°ΠΌ приходится Π½Π΅ просто ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ написаниС.
    ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ. Π”Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° нСбольшиС части.


    ΠœΡ‹ большС Π΄ΡƒΠΌΠ°Π΅ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π΅ ΠΎΠ΄Π½ΠΈ, Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² общая для всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
    Π§Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΌΡ‹ научимся Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Ρ‚Π΅ΠΌ Π»Π΅Π³Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² истории Π½Π°ΠΌ самим ΠΈ нашим ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ.


    Π’ любом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π²Π°ΠΆΠ½Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ ΠΈ Π΅Π³ΠΎ структура, Π½ΠΎ ΠΈ история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ commit message.


    На этом всС. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ большС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с историСй ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ посмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git log


    Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Π΄ΠΎ встрСчи!

    ВсС ΡƒΡ€ΠΎΠΊΠΈ курса

    ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ слСдуСт…

    Команда Git diff. Как ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² Git

    Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

    Для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Β Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΠΎΒ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ git diff Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

    git diff

    Команда Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ измСнСния Π²Β Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅Β Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ в индСкс. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ происходит с послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.

    Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹ в индСксС

    Если Π²Ρ‹Β ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ в вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΒ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΈΠ·Β Π½ΠΈΡ… в индСкс (ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git add), Ρ‚ΠΎΒ ΠΊΠΎΠΌΠ°Π½Π΄Π° git diff Π½Π΅Β ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ измСнСния в этих Ρ„Π°ΠΉΠ»Π°Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния Π²Β Ρ„Π°ΠΉΠ»Π°Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ в индСкс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡ —cached:

    git diff --cached

    Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

    Команда git diff позволяСт ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ…Π΅Ρˆ (ID) ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбуСтся ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ. МоТно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git log, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти список ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΒ ΠΈΡ…Β ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹:

    git log --oneline

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ сравним Π΄Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Для этого в качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git diff указываСтся Ρ…Π΅Ρˆ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π°Β Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρ…Π΅Ρˆ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

    git diff 4612297 5e356cf

    Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… Π²Π΅Ρ‚ΠΎΠΊ

    Для Π²Ρ‹Π²ΠΎΠ΄Π° всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ†Π°ΠΌΠΈ Π΄Π²ΡƒΡ… Π²Π΅Ρ‚ΠΎΠΊ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для git diff ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Π²Π΅Ρ‚ΠΎΠΊ:

    git diff branch2 branch3

    Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ

    Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

    git diff branch2 branch3 ./myfile.cpp

    ВмСсто branch2, branch3 Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΎΠΊ, а вмСсто myfile.cpp ΠΏΡƒΡ‚ΡŒ до сравниваСмого Ρ„Π°ΠΉΠ»Π°. Π§Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π» ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для сравнСния.

    Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ из сравнСния

    Иногда Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git diff, Π½ΠΎΒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π° git diff ΠΈΡ…Β ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π»Π°. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запись Π²ΠΈΠ΄Π° ’:(exclude)имя_файла’ ΠΈΠ»ΠΈ короткая запись ’:!имя_файла’

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

    git diff -- . ':(exclude)file1.abc' ':(exclude)file2.abc'

    Или Π±ΠΎΠ»Π΅Π΅ короткая запись:

    git diff -- . ':!file1.abc' ':!file2.abc'

    Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСнСния Π²Β Ρ„Π°ΠΉΠ»Π°Ρ… (ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΈΒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹)

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ из сравнСния Π½ΠΎΠ²Ρ‹Π΅ ΠΈΒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ —diff-filter, которая позволяСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ измСнСния (Ρ„Π°ΠΉΠ»Ρ‹) Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ.

    Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сравнСниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² (игнорируя Π½ΠΎΠ²Ρ‹Π΅, ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡ Modified (M)Β β€” —diff-filter=M:

    git diff --diff-filter=M

    Git Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ / Π₯Π°Π±Ρ€

    БущСствуСт Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠ½ΠΈΠ³Π° Pro Git, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаны всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ возмоТности Π³ΠΈΡ‚Π°. Но послС Π΅Π΅ прочтСния Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… остаСтся Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π’ частности, Ρƒ программистов Ρ€Π°Π·Π½ΠΎΠ³ΠΎ уровня часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ вопросы ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π² Git, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠŸΠΎΡ€ΠΎΠΉ ΠΌΠ½Π΅ попадались ΠΎΡ‡Π΅Π½ΡŒ Β«ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅Β» ΠΈ Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎ услоТнСнныС схСмы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³ΠΈΡ‚ΠΎΠΌ. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² сообщСствС программистов ΡƒΠΆΠ΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³ΠΈΡ‚ΠΎΠΌ ΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π² Π½Π΅ΠΌ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Π΄Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ основных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git, ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Β«ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽΒ» схСму Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ. МногоС ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ описано Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ справСдливо ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм управлСния вСрсиями.

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

    Для Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅Ρ‚ΠΊΠ° ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚.

    ΠšΠΎΠΌΠΌΠΈΡ‚

    МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ это основной ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² любой систСмС управлСния вСрсиями. Π’ Π½Π΅ΠΌ содСрТится описаниС Ρ‚Π΅Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вносит ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² ΠΊΠΎΠ΄ прилоТСния. Π’ Git ΠΊΠΎΠΌΠΌΠΈΡ‚ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Для простоты понимания ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ это односвязный список, состоящий ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΈ ссылка Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

    Π£ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свойства. НапримСр, Π΄Π°Ρ‚Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π°Π²Ρ‚ΠΎΡ€, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ ΠΈ Ρ‚.ΠΏ.

    Π’ качСствС коммСнтария ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вносит этот ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ Ρ€Π΅ΡˆΠ°Π΅Ρ‚.

    Git это распрСдСлСнная систСма управлСния вСрсиями. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ участника ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ своя копия рСпозитория, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ β€œ.git”, которая располоТСна Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ИмСнно Π² этой ΠΏΠ°ΠΏΠΊΠ΅ хранятся всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Git. Когда Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Git, ΠΎΠ½ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с этой ΠΏΠ°ΠΏΠΊΠΎΠΉ.

    ЗавСсти Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΎΡ‡Π΅Π½ΡŒ просто, это дСлаСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

    git init

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

    git clone <url ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория>

    ПослС Ρ‡Π΅Π³ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅ появляСтся дирСктория .git Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ копия ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория.

    БущСствуСт нСсколько основных областСй Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠΎΠ΄.

    • Рабочая дирСктория – это Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.
    • Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ β€” ΠΎΠ½Π° ΠΆΠ΅ дирСктория β€œ.git”. Π’ Π½Π΅ΠΉ хранятся ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.
    • Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ – Ρ‚ΠΎΡ‚ самый Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считаСтся ΠΎΠ±Ρ‰ΠΈΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ свои ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· локального рСпозитория, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ программисты ΠΌΠΎΠ³Π»ΠΈ ΠΈΡ… ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ. Π£Π΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½.
    • Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ называСмая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (staging area). Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΡƒΠΆΠ½ΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² этот ΠΊΠΎΠΌΠΌΠΈΡ‚. Π’ своСй Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΎ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½Π΅ всС эти измСнСния.

    Π’ Ρ†Π΅Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π° с Π³ΠΈΡ‚ΠΎΠΌ выглядит Ρ‚Π°ΠΊ: Π²Ρ‹ мСняСтС Ρ„Π°ΠΉΠ»Ρ‹ Π² своСй Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π·Π°Ρ‚Π΅ΠΌ добавляСтС эти измСнСния Π² staging area ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

    git add <имя/Ρ„Π°ΠΉΠ»Π°>

    ΠŸΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ маски со Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ.

    ΠŸΠΎΡ‚ΠΎΠΌ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² свой Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

    git commit –m β€œΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ коммиту”

    Когда ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½Π°ΠΊΠΎΠΏΠΈΡ‚ΡŒΡΡ достаточно ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ, Π²Ρ‹ выполняСтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

    git push

    ПослС Ρ‡Π΅Π³ΠΎ ваши ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ уходят Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

    Если Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

    git pull

    ПослС этого, Π² вашСм локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ появятся Ρ‚Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ программистами.

    Код Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° образуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π΅ΡΡ‚ΡŒ своС имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставляСт собой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ…Π΅Ρˆ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sha-1 ΠΎΡ‚ содСрТимого самого ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

    ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

    git log

    Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Ρƒ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½. Π’ΠΎΡ‚ такая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ Π² Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅

    git log --pretty=format:"%H [%cd]: %an - %s" --graph --date=format:%c

    Π§Ρ‚ΠΎ Π±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ просмотр Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ q

    ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ staging area ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

    git status

    Π Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ состояниС Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

    git checkout <hash ΠΊΠΎΠΌΠΌΠΈΡ‚Π°>

    Волько ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ git status ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π½Π΅ зафиксированных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π˜Π½Π°Ρ‡Π΅ Git Π½Π΅ ΠΏΠΎΠΉΠΌΠ΅Ρ‚, ΠΊΠ°ΠΊ Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ. git status подскаТСт Π²Π°ΠΌ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ измСнСниями Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ. Π­Ρ‚ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° слСдуСт ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΏΡ€ΠΈ всяких Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ… Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области.

    Π’Π΅Ρ‚ΠΊΠ°

    Π’Π΅Ρ‚ΠΊΠ° Π² Git это ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π΅Ρ‚ΠΊΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π’Π΅Ρ‚ΠΊΠ° Π±Π΅Ρ€Π΅Ρ‚ своС Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ.

    Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

    git pull

    git checkout –b <имя Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ>

    ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡΡΡŒ Π½Π° Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

    git branch <имя Π²Π΅Ρ‚ΠΊΠΈ>

    ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ

    git checkout <имя Π²Π΅Ρ‚ΠΊΠΈ>

    Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΠ° Π±Π΅Ρ€Π΅Ρ‚ своС Π½Π°Ρ‡Π°Π»ΠΎ Π½Π΅ ΠΎΡ‚ Π²Π΅Ρ‚ΠΊΠΈ, Π° ΠΎΡ‚ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ.

    Π’Π΅Ρ‚ΠΊΠ° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ заканчиваСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ merge ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ с ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ. Π’ merge ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ содСрТатся Π΄Π²Π΅ ссылки Π½Π° Π΄Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‚ΠΊΡƒ.

    БущСствуСт другая ситуация ΠΏΡ€ΠΈ объСдинСнии Π²Π΅Ρ‚ΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ merge ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π±Π΅Π· merge commit. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π΅Ρ‚ΠΎΠΊ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² merge commit с двумя ΠΏΡ€Π΅Π΄ΠΊΠ°ΠΌΠΈ ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, ΠΏΡ€ΠΈ слиянии Π²Π΅Ρ‚ΠΎΠΊ, Git просто сдСлаСт ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΡƒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ дальшС Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ΄Ρ‚ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Ρ‚ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ эта Π²Π΅Ρ‚ΠΊΠ° Π±Ρ‹Π»Π° объСдинСна. Вакая схСма merge называСтся слияниС-ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ° (fast-forward merge), Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ.

    Π’ΠΎ всСх этих случаях, послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Π΅Ρ‚ΠΊΠ° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ΡΡ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ, всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ сдСланныС Π² Π½Π΅ΠΉ, ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² Π²Π΅Ρ‚ΠΊΡƒ с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° объСдинСна. Π’Π°ΠΊ ΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ merge это Π½Π΅ двунаправлСнная опСрация. Если ΡΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Π·Π°Π΄Π°Ρ‡ΠΈ Π² мастСр Π²Π΅Ρ‚ΠΊΡƒ, Ρ‚ΠΎ Π² мастСр Π²Π΅Ρ‚ΠΊΠ΅ появится ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находился Π² Π²Π΅Ρ‚ΠΊΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π° Π² Π²Π΅Ρ‚ΠΊΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ· мастСр Π²Π΅Ρ‚ΠΊΠΈ. Если Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ мастСр Π²Π΅Ρ‚ΠΊΡƒ Π² Π²Π΅Ρ‚ΠΊΡƒ Π·Π°Π΄Π°Ρ‡ΠΈ.

    Π§Ρ‚ΠΎ Π±Ρ‹ ΡΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‚ΠΊΡƒ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚Ρƒ Π²Π΅Ρ‚ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ

    git checkout <имя Π²Π΅Ρ‚ΠΊΠΈ>

    ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ послСдниС измСнСния сдСланныС Π² этой Π²Π΅Ρ‚ΠΊΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²

    git pull

    Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

    git merge <имя Π²Π΅Ρ‚ΠΊΠΈ>

    Π’Π°ΠΊ выглядит Ρ€Π°Π±ΠΎΡ‚Π° с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ….

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git pull. ДСлаСтся это ΠΏΠΎ нСскольким ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ.

    • Π”Ρ€ΡƒΠ³ΠΎΠΉ программист ΠΌΠΎΠ³ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Π² Ρ‚ΠΎΠΌ числС внСсти Ρ‚Π°ΠΊΠΈΠ΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π·Π°Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π­Ρ‚ΠΈ измСнСния ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ своСй Π·Π°Π΄Π°Ρ‡ΠΈ.
    • Из-Π·Π° этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΏΡ€ΠΈ ΠΌΠ΅Ρ€ΠΆΠ΅.
    • Π‘ΠΎΠ»ΡŒΡˆΠ΅ шанс Ρ‡Ρ‚ΠΎ Ρƒ вас получится merge commit. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΠΏΠ»ΠΎΡ…ΠΎ, ΠΊΠ°ΠΊ Π΄Π²Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡƒΠ½ΠΊΡ‚Π°. Но Ссли ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ лишнСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Ρ‚ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ этого Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

    ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ схСмы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π² Git

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ популярныС схСмы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π² Π³ΠΈΡ‚Π΅.

    Π’Π΅Ρ‚ΠΊΠΈ Π½ΡƒΠΆΠ½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ программисты ΠΌΠΎΠ³Π»ΠΈ вСсти ΡΠΎΠ²ΠΌΠ΅ΡΡ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ Π½Π΅ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ ΠΏΡ€ΠΈ этом. ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Git создаСт Π±Π°Π·ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Она называСтся master Π²Π΅Ρ‚ΠΊΠΎΠΉ. Она считаСтся Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ, Ρ‚.Π΅. Π² Π½Π΅ΠΉ содСрТится основной ΠΊΠΎΠ΄ прилоТСния.

    ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ

    ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π²Π·ΡΡ‚ΡŒΡΡ Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ, программист Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΎΡ‚ послСднСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° мастСр Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ Π² этой Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ ряд ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², послС этого тСстируСт ΠΊΠΎΠ΄ нСпосрСдствСнно Π² Π²Π΅Ρ‚ΠΊΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ. А послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ΅Π½Π°, Π΄Π΅Π»Π°ΡŽΡ‚ merge ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² мастСр Π²Π΅Ρ‚ΠΊΡƒ. Π’Π°ΠΊΡƒΡŽ схСму Ρ€Π°Π±ΠΎΡ‚Ρ‹ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ с ΡŽΠ½ΠΈΡ‚ тСстами ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ. Если ΡŽΠ½ΠΈΡ‚ тСсты Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ вСсь ΠΊΠΎΠ΄, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Π΅ΠΏΠ»ΠΎΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΡΡ‚ΡŒΡΡ всС тСсты Π² Π²Π΅Ρ‚ΠΊΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ. А послС этого, Ссли ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ merge ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ схСмС ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ тСстировании ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈ.

    ИмСнная Π²Π΅Ρ‚ΠΊΠ°

    НСопытныС программисты заводят сСбС ΠΈΠΌΠ΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ всСгда Π² Π½Π΅ΠΉ. Они Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° Ρ€Π°Π·, ΠΈ ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π·Π°Π΄Π°Ρ‡, Π΄Π΅Π»Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ Pull запрос Ρ‡Π΅Ρ€Π΅Π· Web интСрфСйсС (ΠΎΠ± этом Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅). НСдостаток этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ нСльзя быстро ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ нСдостаток Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΠΈ Ρ‚Π°ΠΊ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ всС сильнСС Ρ€Π°ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΊΠΎΠ΄ Π² Π²Π΅Ρ‚ΠΊΠ΅ программиста Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ устарССт ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мастСр Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Π΅Π³ΠΎ придСтся ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Для этого ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΡΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ мастСр Π²Π΅Ρ‚ΠΊΡƒ Π² Π²Π΅Ρ‚ΠΊΡƒ программиста, Π»ΠΈΠ±ΠΎ завСсти Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ для этого программиста ΠΎΡ‚ послСднСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ состояния Π² мастСр Π²Π΅Ρ‚ΠΊΠ΅. ΠŸΡ€Π°Π²Π΄Π° ΠΊ Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠ°ΠΊ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ программист ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π³ΠΈΡ‚ Π² достаточной ΠΌΠ΅Ρ€Π΅ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° β€œΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽβ€ схСму Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ эта схСма ΠΈΠΌΠ΅Π΅Ρ‚ мСсто Π±Ρ‹Ρ‚ΡŒ для Π½Π΅ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Git.

    Π‘Ρ…Π΅ΠΌΠ° с dev Π²Π΅Ρ‚ΠΊΠΎΠΉ

    Другая схСма ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π΅ΠΉ ΠΏΠΎΠΌΠΈΠΌΠΎ мастСр Π²Π΅Ρ‚ΠΊΠΈ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ дСвСлопСрская Π²Π΅Ρ‚ΠΊΠ°, которая дСплоится Π½Π° тСстовый сСрвСр. Π’Π°ΠΊΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ dev. Π‘Ρ…Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈ этом такая. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ для Π½Π΅Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΎΡ‚ послСднСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ состояния Π² мастСр Π²Π΅Ρ‚ΠΊΠ΅. Когда ΠΎΠ½ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Ρ‚ΠΎ ΠΌΠ΅Ρ€ΠΆΠΈΡ‚ Π²Π΅Ρ‚ΠΊΡƒ Π·Π°Π΄Π°Ρ‡ΠΈ Π² dev Π²Π΅Ρ‚ΠΊΡƒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. ПослС этого, совмСстными усилиями Π·Π°Π΄Π°Ρ‡Π° тСстируСтся Π½Π° тСстовом сСрвСрС вмСстС с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. Если Π΅ΡΡ‚ΡŒ ошибки, Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Ρƒ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠ΅ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΌΠ΅Ρ€ΠΆΠ°Ρ‚ с dev Π²Π΅Ρ‚ΠΊΠΎΠΉ. Когда тСстированиС Π·Π°Π΄Π°Ρ‡ΠΈ заканчиваСтся, Ρ‚ΠΎ Π’Π•Π’ΠšΠ£ Π—ΠΠ”ΠΠ§Π˜ ΠΌΠ΅Ρ€ΠΆΠ°Ρ‚ с мастСр Π²Π΅Ρ‚ΠΊΠΎΠΉ. Π’Π°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² этой схСмС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с мастСр Π²Π΅Ρ‚ΠΊΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Π·Π°Π΄Π°Ρ‡ΠΈ, Π° Π½Π΅ dev Π²Π΅Ρ‚ΠΊΡƒ. Π’Π΅Π΄ΡŒ Π² dev Π²Π΅Ρ‚ΠΊΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ измСнСния, сдСланныС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² этой Π·Π°Π΄Π°Ρ‡Π΅, Π½ΠΎ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈ Π½Π΅ всС эти измСнСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ. ΠœΠ°ΡΡ‚Π΅Ρ€ Π²Π΅Ρ‚ΠΊΠ° ΠΈ dev Π²Π΅Ρ‚ΠΊΠ° со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, поэтому ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ схСмС Ρ€Π°Π±ΠΎΡ‚Ρ‹ пСриодичСски заводят Π½ΠΎΠ²ΡƒΡŽ dev Π²Π΅Ρ‚ΠΊΡƒ ΠΎΡ‚ послСднСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ состояния мастСр Π²Π΅Ρ‚ΠΊΠΈ. НСдостатком этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° являСтся ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с классичСской схСмой. Π’Π°ΠΊΡƒΡŽ схСму Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ссли Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… тСстов ΠΈ всС тСстированиС происходит Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π° сСрвСрС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

    Π’Π°ΠΊ ΠΆΠ΅ слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ эти схСмы Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, Ссли Π² этом Π΅ΡΡ‚ΡŒ какая-Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ.

    Pull запросы

    Π‘ этим понятиСм имССтся ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π°. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Git Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ Pull запросом. Одна ΠΈΠ· Π½ΠΈΡ…, это консольная ΠΊΠΎΠΌΠ°Π½Π΄Π° git pull. Другая это ΠΊΠ½ΠΎΠΏΠΊΠ° Π² web интСрфСйсС рСпозитория. На github.com ΠΎΠ½Π° выглядит Π²ΠΎΡ‚ Ρ‚Π°ΠΊ

    ΠŸΡ€ΠΎ эту ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ дальшС.

    Если программист достаточно ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΈ отвСтствСнный, Ρ‚ΠΎ ΠΎΠ½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сам сливаСт свой ΠΊΠΎΠ΄ Π² мастСр Π²Π΅Ρ‚ΠΊΡƒ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС программист Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Pull запрос. Pull запрос это ΠΏΠΎ сути Π΄Π΅Π»Π° запрос Π½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ merge. Pull запрос ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· web интСрфСйса Git, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git request-pull. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Pull запрос создан, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ участники ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это, ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ программист ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ внСсти Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈ Π»ΠΈΠ±ΠΎ ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄ Π»ΠΈΠ±ΠΎ Π½Π΅Ρ‚. Merge Ρ‡Π΅Ρ€Π΅Π· pull запросы ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы. ΠœΠΈΠ½ΡƒΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для тСсной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… программистов Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ лишним. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² Π½Π΅Π΅ ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΈ Π±ΡŽΡ€ΠΎΠΊΡ€Π°Ρ‚ΠΈΠΈ.

    Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ программисты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Ρ‚ΠΎ Pull запросы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок, ΠΈ быстрСС ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ этих программистов наблюдая Π·Π° Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ внСсти Π² ΠΊΠΎΠ΄.

    Π’Π°ΠΊ ΠΆΠ΅ Pull запросы подходят для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ сообщСства программистов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π’ этом случаС нСльзя Π·Π°Ρ€Π°Π½Π΅Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎ ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ хотят ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅.

    ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹

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

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

    ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² мастСр Π²Π΅Ρ‚ΠΊΠ΅ достигаСтся состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ½ΠΎ отмСчаСтся Ρ‚Π΅Π³ΠΎΠΌ с вСрсиСй этого состояния. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ вСрсиСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

    ДСлаСтся это Π²ΠΎΡ‚ Ρ‚Π°ΠΊ

    git tag -a v1.0

    Π§Ρ‚ΠΎ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

    git push –tags

    Π’Π΅Π³ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ Π΅Ρ‰Π΅ ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎ состояниС ΠΊΠΎΠ΄Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Ρ‚Π΅Π³ΠΎΠΌ. ДСлаСтся это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всС Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

    git checkout <имя Ρ‚Π΅Π³Π°>

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

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

    Π­Ρ‚ΠΎ ΠΎΠ±Π·ΠΎΡ€ основных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Git большС, Ρ‚ΠΎ я Π²Π°ΠΌ ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ Pro Git. Π’ΠΎΡ‚ здСсь.

    Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±Ρ‹Π»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° упрощСнная схСма прСдставлСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Но ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ я Ρ€Π΅ΡˆΠΈΠ» Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ хранятся ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π° дискС. Если вас Ρ‚ΠΎΠΆΠ΅ заинтСрСсуСт этот вопрос, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ± этом Π²ΠΎΡ‚ здСсь.

    Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² старом ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ (Π½Π΅ послСднСм)

    Π—Π°Π΄Π°Ρ‡Π°: внСсти измСнСния Π²Β Ρ„Π°ΠΉΠ»Ρ‹ в старом ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ (нС самом послСднСм/свСТСм).

  • Если Π²Ρ‹Β ΡƒΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Ρ„Π°ΠΉΠ»Ρ‹, то сначала Π½ΡƒΠΆΠ½ΠΎ ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ измСнСния. Для этого выполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:
    git stash
  • ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ список ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:
    git log --oneline
  • ВыполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase -i ΠΈΒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅ΠΉΒ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹Β Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π’Β Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹Β Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ HEAD).
    git rebase -i HEAD~3
  • ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ со списком ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ слово pick Π½Π°Β edit (ΠΈΠ»ΠΈ просто Π½Π°Β Π±ΡƒΠΊΠ²ΡƒΒ e) ΡƒΒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.
  • Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния Π²Β Ρ„Π°ΠΉΠ»Π΅. Вы снова ΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ΡΡŒ Π²Β ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.
  • Π’Π΅ΠΏΠ΅Ρ€ΡŒ внСситС тС измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Β Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с файлами. Если Π²Ρ‹Β Π½Π°Β ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС спрятали эти измСнСния, то сСйчас ΠΈΡ…Β ΠΌΠΎΠΆΠ½ΠΎ снова ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ:
    git stash pop

    Или ТС просто ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹.

  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ в индСкс:
    git add myfile1 myfile2
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ наши измСнСния ΠΊΒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ:
    git commit --amend --no-edit
  • Π—Π°Π²Π΅Ρ€ΡˆΠΈΠΌ процСсс Ρ€Π΅Π±Π΅ΠΉΠ·Π°:
    git rebase --continue

    Если всС ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, то появится сообщСниС Π²ΠΈΠ΄Π°:

    Successfully rebased and updated refs/heads/master.
  • Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

    ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ внСсти измСнСния сразу в нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

    ВыполняСм ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий, ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅, но на шагС 4Β Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слово pick Π½Π°Β edit сразу ΡƒΒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² в спискС.

    ПослС сохранСния Ρ„Π°ΠΉΠ»Π° (шаг 5) Π²Ρ‹Β ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π°Β ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ старСС), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Β ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ для рСдактирования.

    Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ для Π½Π΅Π³ΠΎ шаги с 6Β ΠΏΠΎΒ 8. ПослС этого Π²Ρ‹Β ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π°Β ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Β ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ для рСдактирования. Π˜Β Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

    Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² — GitHub Docs

    Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ GitHub

    • ВсС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹

    • GitHub.com
      • Начиная

        • Быстрый старт

          • ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Git
          • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎ
          • Π€ΠΎΡ€ΠΊ Ρ€Π΅ΠΏΠΎ
          • Π‘Ρ‹Ρ‚ΡŒ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ
        • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ GitHub

          • ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ GitHub
          • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ выпусков Ρ€Π°Π½Π½Π΅Π³ΠΎ доступа с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ просмотром Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
          • Π’ΠΈΠΏΡ‹ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² GitHub
          • Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы ΠΎΠ± измСнСниях Π² ΠΏΠ»Π°Π½Π°Ρ… GitHub
          • GitHub CLI
          • GitHub Desktop
          • GitHub для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств
          • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° доступ Π½Π° GitHub
          • Глоссарий GitHub
          • Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ Git

    .

    Git — ΠžΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ | Π£Ρ‡Π΅Π±Π½ΠΈΠΊ Atlassian Git

    Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ обсудим доступныС стратСгии ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«ΠΎΡ‚ΠΌΠ΅Π½Ρ‹Β» Git. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Git Π½Π΅Ρ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Β«ΠΎΡ‚ΠΌΠ΅Π½Ρ‹Β», ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² тСкстовых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°Ρ…. Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΠΎΠ·Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ сопоставлСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Git с любой Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ модСлью Β«ΠΎΡ‚ΠΌΠ΅Π½Ρ‹Β». ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Git Π΅ΡΡ‚ΡŒ своя собствСнная Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Β«ΠΎΡ‚ΠΌΠ΅Π½Ρ‹Β», ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ…ΠΎΠ΄Π΅ обсуТдСния. Π’ эту Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρƒ входят Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹, ΠΊΠ°ΠΊ сброс, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, очистка ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

    Забавная ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€Π° — Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Git ΠΊΠ°ΠΊ ΠΎ слуТСбной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для управлСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шкалой. ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ — это ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ снимки ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ интСрСса Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шкалС истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ нСсколькими Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ шкалами с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π΅Ρ‚ΠΎΠΊ. ΠŸΡ€ΠΈ Β«ΠΎΡ‚ΠΌΠ΅Π½Π΅Β» Π² Git Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π°Π·Π°Π΄ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡˆΠΊΠ°Π»Ρƒ, Π³Π΄Π΅ ошибок Π½Π΅ Π±Ρ‹Π»ΠΎ.

    Π­Ρ‚ΠΎΡ‚ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ Π΄Π°Π΅Ρ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ старыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠΌ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° исброс Π½Π΅ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° вашСм локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

    Поиск Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ потСряно: просмотр старых ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

    Вся идСя, лСТащая Π² основС любой систСмы контроля вСрсий, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ «бСзопасныС» ΠΊΠΎΠΏΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ создали ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² истории. Одна ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для просмотра истории рСпозитория Git — это ΠΊΠΎΠΌΠ°Π½Π΄Π° git log .Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ git log , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² популярной графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

      git log --oneline e2f9a78fe Π—Π°ΠΌΠ΅Π½Π΅Π½ΠΎ FlyControls Π½Π° OrbitControls d35ce0178 Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€: ПанСль ярлыков ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Safari. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ 9dbe8d0cf: Боковая панСль. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ управлСния для Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ. Настройки. Π―Ρ€Π»Ρ‹ΠΊΠΈ. Убирайся. 05c5288fc Запрос Π½Π° слияниС # 12612 ΠΎΡ‚ TyLindberg / editor-controls-panel 0d8b6e74b Запрос Π½Π° слияниС # 12805 ΠΎΡ‚ harto / patch-1 23b20c22e Запрос Π½Π° слияниС # 12801 ΠΎΡ‚ gam0022 / Superior-raymarching-example-v2 fe78029f1 Π˜ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΡƒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ 7ce43c448 Merge pull request # 12794 ΠΎΡ‚ WestLangley / dev-x 17452bb93 Merge pull request # 12778 ΠΎΡ‚ OndrejSpanel / unitTestFixes b5c1b5c70 Merge pull request # 12799 ΠΎΡ‚ dhritzkiv / patch-21 1b48ff4d2 ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ сборки.88adbcdf6 WebVRManager: ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ. 2720fbb08 Merge pull request # 12803 from dmarcos / parentPoseObject 9ed629301 ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PoseObject вмСсто ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ 219f3eb13 ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ GLTFLoader.js 15f13bb3c ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ GLTFLoader.js 6d9c22a3b ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠ½ΠΈΡ„ΠΎΡ€ΠΌΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ аспСкта 900M Projection 900M Π² onWindow12Resize 881b25
     

    КаТдая фиксация ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ…Π΅Ρˆ-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ SHA-1. Π­Ρ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для пСрСмСщСния ΠΏΠΎ зафиксированной Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шкалС ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ посСщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ git log ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Π΅Ρ‚ΠΊΠΈ.Π’ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅, находится Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²ΠΎ всСх Π²Π΅Ρ‚ΠΊΠ°Ρ…, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git log --branches = * . Команда git branch ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для просмотра ΠΈ посСщСния Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ. Π’Ρ‹Π·ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git branch -a Π²Π΅Ρ€Π½Π΅Ρ‚ список всСх извСстных ΠΈΠΌΠ΅Π½ Π²Π΅Ρ‚ΠΎΠΊ. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ΄Π½ΠΎ ΠΈΠ· этих ΠΈΠΌΠ΅Π½ Π²Π΅Ρ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ зарСгистрировано с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git log .

    Когда Π²Ρ‹ нашли ссылку фиксации Π½Π° Ρ‚ΠΎΡ‡ΠΊΡƒ Π² истории, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git checkout для посСщСния этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Git checkout - это простой способ Β«Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΒ» любой ΠΈΠ· этих сохранСнных снимков состояния Π½Π° Π²Π°ΡˆΡƒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ΠΎ врСмя ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ HEAD ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° master ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ провСряСтС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, HEAD большС Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ - ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ нСпосрСдствСнно Π½Π° Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ состояниС называСтся «отсоСдинСнным HEAD Β», ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

    Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ старого Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ HEAD .Он остаСтся Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠ΅ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ фиксации, избСгая состояния Β«ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²Ρ‹Β». Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„Π°ΠΉΠ»Π° Π² Π½ΠΎΠ²ΠΎΠΌ снимкС, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, использованиС git checkout Π² Ρ„Π°ΠΉΠ»Π΅, ΠΏΠΎ сути, слуТит способом Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ старой вСрсии ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± этих Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… посСтитС git checkout page

    ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ старой вСрсии

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

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

    Допустим, история вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

      b7119f2 ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π±Π΅Π·ΡƒΠΌΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ 872fa7e ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±Π΅Π·ΡƒΠΌΠ½ΠΎΠ΅ a1e8fb5 ВнСситС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ измСнСния Π² hello.txt 435b61d Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ hello.txt 9773e52 ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚  

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git checkout , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ «ВнСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² hello.txt Β»ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

      git checkout a1e8fb5  

    Π­Ρ‚ΠΎ заставляСт ваш Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° a1e8fb5 . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ тСсты ΠΈ Π΄Π°ΠΆΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ бСспокоясь ΠΎ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ВсС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ здСсь Π΄Π΅Π»Π°Π΅Ρ‚Π΅, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ сохранСно Π² вашСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² Β«Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅Β» состояниС вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

      git checkout master  

    ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π² Π²Π΅Ρ‚ΠΊΠ΅ master ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.Π’Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΡΡŒ Π² Π²Π΅Ρ‚ΠΊΡƒ master , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ git revert , Π»ΠΈΠ±ΠΎ git reset , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния.

    ΠžΡ‚ΠΌΠ΅Π½Π° зафиксированного снимка

    ВСхничСски сущСствуСт нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стратСгий "ΠΎΡ‚ΠΌΠ΅Π½Ρ‹" фиксации. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… прСдполагаСтся, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², которая выглядит Ρ‚Π°ΠΊ:

      git log --oneline 872fa7e ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±Π΅Π·ΡƒΠΌΠ½ΠΎΠ΅ a1e8fb5 ВнСситС Π²Π°ΠΆΠ½Ρ‹Π΅ измСнСния Π² hello.txt 435b61d Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ hello.txt 9773e52 ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚  

    ΠœΡ‹ сосрСдоточимся Π½Π° ΠΎΡ‚ΠΌΠ΅Π½Π° 872fa7e ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±Π΅Π·ΡƒΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ .ΠœΠΎΠΆΠ΅Ρ‚, всС стало слишком ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠΈΠΌ.

    Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git checkout

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git checkout , ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, a1e8fb5, , пСрСводя Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² состояниС Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠ°Ρ фиксация. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ фиксации ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Ρ‚ Ρ€Π΅ΠΏΠΎ Π² состояниС Β«ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ HEADΒ». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ большС Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½ΠΈ Π½Π°Π΄ ΠΊΠ°ΠΊΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ. Π’ отсоСдинСнном состоянии Π»ΡŽΠ±Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅, Π±ΡƒΠ΄ΡƒΡ‚ потСряны, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²Π΅Ρ‚Π²ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.ΠžΡΠΈΡ€ΠΎΡ‚Π΅Π²ΡˆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ сборщиком мусора Git. Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ мусора запускаСтся с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ ΠΈ Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅Ρ‚ потСрянныС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ сбор мусора ΠΎΡΠΈΡ€ΠΎΡ‚Π΅Π²ΡˆΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ находимся Π² Π²Π΅Ρ‚ΠΊΠ΅.

    Из состояния отсоСдинСнной HEAD ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git checkout -b new_branch_without_crazy_commit . Π­Ρ‚ΠΎ создаст Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ new_branch_without_crazy_commit ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Π² это состояниС. Π Π΅ΠΏΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ находится Π½Π° Π½ΠΎΠ²ΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шкалС истории, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ фиксация 872fa7e большС Π½Π΅ сущСствуСт.На этом этапС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ этой Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ фиксация 872fa7e большС Π½Π΅ сущСствуСт, ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π΅ Β«ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉΒ». К соТалСнию, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° прСдыдущая Π²Π΅Ρ‚ΠΊΠ°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Π±Ρ‹Π»Π° ваша master Π²Π΅Ρ‚ΠΊΠ° , эта стратСгия ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ стратСгии ΠΎΡ‚ΠΌΠ΅Π½Ρ‹. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² просмотритС нашС ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ обсуТдСниС git checkout .

    Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git revert

    ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ истории фиксации.Π˜ΡΡ‚ΠΎΡ€ΠΈΡ, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ 872fa7e . На этот Ρ€Π°Π· ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Β«ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ». Если ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ git revert HEAD , Git создаст Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с инвСрсиСй послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π­Ρ‚ΠΎ добавляСт Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π²Π΅Ρ‚ΠΎΠΊ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½Π° выглядит Ρ‚Π°ΠΊ:

      git log --oneline e2f9a78 ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Β«ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±Π΅Π·ΡƒΠΌΠ½ΠΎΠ΅Β» 872fa7e ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±Π΅Π·ΡƒΠΌΠ½ΠΎΠ΅ a1e8fb5 ВнСситС Π²Π°ΠΆΠ½Ρ‹Π΅ измСнСния Π² hello.txt 435b61d Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ hello.txt 9773e52 ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚  

    На этом этапС ΠΌΡ‹ снова тСхничСски Β«ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ»ΠΈΒ» Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ 872fa7e .Π₯отя 872fa7e всС Π΅Ρ‰Π΅ сущСствуСт Π² истории, Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ e2f9a78 являСтся инвСрсиСй ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² 872fa7e . Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ нашСй ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ стратСгии оформлСния Π·Π°ΠΊΠ°Π·Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΡƒ. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ - ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡ‚ΠΌΠ΅Π½Π°. Π­Ρ‚ΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«ΠΎΡ‚ΠΌΠ΅Π½Ρ‹Β» для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с общСдоступными ΠΎΠ±Ρ‰ΠΈΠΌΠΈ рСпозиториями. Если Ρƒ вас Π΅ΡΡ‚ΡŒ трСбования вСсти Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Π½ΡƒΡŽ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Git, эта стратСгия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

    Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git reset

    Для этой стратСгии ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ наш Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. git reset - ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° с мноТСством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Если ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ git reset --hard a1e8fb5 , история фиксации сбрасываСтся Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ фиксации. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ истории фиксации с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git log Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

      git log --oneline a1e8fb5 ВнСситС Π²Π°ΠΆΠ½Ρ‹Π΅ измСнСния Π² hello.txt 435b61d Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ hello.txt 9773e52 ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚  

    Π’ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΆΡƒΡ€Π½Π°Π»Π° отобраТаСтся e2f9a78 ΠΈ 872fa7e ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² большС Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².На этом этапС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Β«ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠΈΡ…Β» ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΎ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ самоС Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ влияниС Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. Бброс ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ добавляСт слоТности ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±Ρ‰ΠΈΠΌ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ. Если Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° фиксация 872fa7e , ΠΈ ΠΌΡ‹ пытаСмся git push Π²Π΅Ρ‚ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ сбросили ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, Git ΠΏΠΎΠΉΠΌΠ°Π΅Ρ‚ это ΠΈ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ.Git ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ отправляСмая Π²Π΅Ρ‚ΠΊΠ° Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ​​из-Π·Π° отсутствия ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π’ этих сцСнариях ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ git revert .

    ΠžΡ‚ΠΌΠ΅Π½Π° послСднСй фиксации

    Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ обсудили Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стратСгии ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ВсС эти стратСгии ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΈ ΠΊ самой послСднСй фиксации. Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ. ΠœΠΎΠΆΠ΅Ρ‚, это просто сдСлали ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’ этом случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ послСднюю Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ внСсли большС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ ΠΈΡ… для фиксации с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git add , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git commit --amend . ΠŸΡ€ΠΈ этом Git ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ настроСнный систСмный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднСС сообщСниС фиксации. НовыС измСнСния Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² исправлСнный ΠΊΠΎΠΌΠΌΠΈΡ‚.

    ΠžΡ‚ΠΌΠ΅Π½Π° нСзафиксированных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

    ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ измСнСния Π±ΡƒΠ΄ΡƒΡ‚ зафиксированы Π² истории рСпозитория, ΠΎΠ½ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ индСксС ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ придСтся ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния Π² этих Π΄Π²ΡƒΡ… областях.ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ индСкс ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ - это Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ управлСния состояниСм Git. Для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ эти Π΄Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, посСтитС страницу git reset , Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

    Π Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³

    Π Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ синхронизируСтся с локальной Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свой Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Π’ Git Π΅ΡΡ‚ΡŒ нСсколько ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ.БущСствуСт ΠΊΠΎΠΌΠ°Π½Π΄Π° git clean , которая прСдставляСт собой ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, git reset ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ --mixed ΠΈΠ»ΠΈ --hard ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ сброс ΠΊ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ.

    ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ индСкс

    Команда git add ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для добавлСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ индСкс. Git reset Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ индСкса. Бброс --mixed пСрСмСстит Π»ΡŽΠ±Ρ‹Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ измСнСния ΠΈΠ· ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ индСкса ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

    ΠžΡ‚ΠΌΠ΅Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

    ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ рСпозиториями Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΡ‚ΠΌΠ΅Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Git reset ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Β«Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΒ» ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² частной Π²Π΅Ρ‚ΠΊΠ΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сброс. Π­Ρ‚ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° выполняСтся сброс Π² ΠΎΠ±Ρ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ эта Π²Π΅Ρ‚ΠΊΠ° отправляСтся ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git push .Git Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ push Π² этом сцСнарии, ΠΆΠ°Π»ΡƒΡΡΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ отправляСмая Π²Π΅Ρ‚ΠΊΠ° устарСла ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½Π΅ΠΉ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

    ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΎΠ±Ρ‰Π΅ΠΉ истории - git revert . ΠžΡ‚ΠΊΠ°Ρ‚ Π±ΠΎΠ»Π΅Π΅ бСзопасСн, Ρ‡Π΅ΠΌ сброс, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· ΠΎΠ±Ρ‰Π΅ΠΉ истории. ΠžΡ‚ΠΊΠ°Ρ‚ сохранит ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΈ создаст Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, которая ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ бСзопасСн для совмСстного ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сотрудничСства, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ΠΊΠ°Ρ‚Π°, которая отмСняСт Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

    Π‘Π²ΠΎΠ΄ΠΊΠ°

    ΠœΡ‹ рассмотрСли ΠΌΠ½ΠΎΠ³ΠΎ высокоуровнСвых стратСгий для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ дСйствий Π² Git. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Git Π΅ΡΡ‚ΡŒ нСсколько способов Β«ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ». Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ обсуТдСния Π½Π° этой страницС касалась Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ Π½Π° страницах, посвящСнных ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Git. НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ инструмСнты Β«ΠΎΡ‚ΠΌΠ΅Π½Ρ‹Β» - это git checkout, git revert ΠΈ git reset . Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ:

    • ПослС фиксации ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ становятся постоянными
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git checkout для пСрСмСщСния ΠΈ просмотра истории фиксации
    • git revert - Π»ΡƒΡ‡ΡˆΠΈΠΉ инструмСнт для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΎΠ±Ρ‰ΠΈΡ… общСдоступных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
    • git reset Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… частных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

    Помимо основных ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹, ΠΌΡ‹ рассмотрСли Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Git: git log для поиска потСрянных ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² git clean для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ нСзафиксированных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ git add для измСнСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ индСкса.

    Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· этих ΠΊΠΎΠΌΠ°Π½Π΄ Π΅ΡΡ‚ΡŒ собствСнная подробная докумСнтация. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, упомянутой здСсь, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ссылкам.

    .

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

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