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

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ c Git / Π₯Π°Π±Ρ€

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ git? ΠŸΠ°Ρ€Π° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ «всСх ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ». Π Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚ git часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρƒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ этого повСрхностного понимания. Однако освоСниС git навСрняка окупится. Бколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π½Π° использованиС git? Π― Π±Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Π½Π° вашСм поясС Π½Π΅ΠΌΠ°Π»ΠΎ инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Π΄Π²ΠΎΠ΅ Ρ€Π΅ΠΆΠ΅ ΠΈ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π΄Π²ΠΎΠ΅ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅.



Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ большС ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ git, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π½Π°Ρ‡Π°Ρ‚ΡŒ с Π³Π»Π°Π²Ρ‹ 10 ΠΊΠ½ΠΈΠ³ΠΈ Pro Git (это бСсплатно!), Π·Π°Ρ‚Π΅ΠΌ Π³Π»Π°Π²Ρ‹ 2, 3 ΠΈ 7. ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ обсудим, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ описанныС Π² ΠΊΠ½ΠΈΠ³Π΅ инструмСнты для дисциплинированной ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² git.


Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ это Ρ€Π°Π½ΡŒΡˆΠ΅, Π½ΠΎ потСрпи́тС. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git commit -m "вашС сообщСниС здСсь". НачнитС с настройки git для использования любимого Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°: git config --global core.editor vim, Π·Π°Ρ‚Π΅ΠΌ просто запуститС git commit

. ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΈ Π²Ρ‹ смоТСтС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π½Ρ‘ΠΌ своё описаниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. ΠŸΠ΅Ρ€Π²ΡƒΡŽ строку слСдуСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½ΠΎΠΉ 50 символов ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ: послС примСнСния этот ΠΊΠΎΠΌΠΌΠΈΡ‚… «исправит Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ тСкста Π½Π° языках CJKΒ», Β«Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° v3Β», Β«ΠΎΡ‚Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ CRTCΒ» ΠΈ Ρ‚.Β Π΄. Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌΡƒ описанию ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Тёстко ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π² 72 столбца ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠ°ΠΊ обоснованиС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, компромиссы, ограничСния ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ Ρ‚.Β Π΄.

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ 72 символа, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это стандартная ΡˆΠΈΡ€ΠΈΠ½Π° сообщСния элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, Π° элСктронная ΠΏΠΎΡ‡Ρ‚Π°Β β€” Π²Π°ΠΆΠ½Ρ‹ΠΉ инструмСнт для git. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π² 50 символов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ пСрвая строка становится Ρ‚Π΅ΠΌΠΎΠΉ вашСй элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΈ Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ тСкста Π²Ρ€ΠΎΠ΄Π΅

β€œ[PATCH linux-usb v2 0/13]”. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ограничСния форматирования Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈ ΠΎΠ±Ρ€Π΅ΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π½ΠΎ ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ Π»ΠΎΠ³ΠΈ Π½Π΅ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ контСкстС, Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹. Π― часто Ρ‡ΠΈΡ‚Π°ΡŽ Π»ΠΎΠ³ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½Π° Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π΅, ΠΈ ΠΎΠ½ Π½Π΅ втиснСт Π² ΠΎΠ΄Π½Ρƒ строку ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ тСкста, сколько ваш дисплСй 4K 16:9.


ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅Β β€” ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… нСсвязанных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ (Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ я ΠΌΠΎΠ³ Π±Ρ‹ ΠΏΠΎΡ‡Π°Ρ‰Π΅ ΠΏΡ€ΠΈΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊ собствСнным совСтам). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ разбиСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ измСнСния Π½Π° нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ идСя Π½Π΅ разбиваСтся Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ шаги, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдставляСт собой ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. Если Π² вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅
git add -i
ΠΈΠ»ΠΈ git add -p. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ всС тСсты ΠΈ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ извСстных Π±Π°Π³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ исправлСны Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ….

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ любой ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΎ пригодится ΠΈ ΠΏΠΎΠ·ΠΆΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² процСссС Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Π²Π΅Ρ‚ΠΊΡƒ Ρ€Π΅Π»ΠΈΠ·Π°. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ git-bisect1, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ скомпилируСтся ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ тСсты для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ

git-bisect скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ провСряСт Π΄Π΅Ρ€Π΅Π²ΠΎ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибки ΠΈ ΠΈΠ·Π±Π΅ΠΆΠΈΡ‚ Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний. Π­Ρ‚ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ описаниями упростят ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ описаний Ρ€Π΅Π»ΠΈΠ·Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git-shortlog, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ Линус с Ρ€Π΅Π»ΠΈΠ·Π°ΠΌΠΈ Linux.


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

Π‘ΡƒΡ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ. ΠŸΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π±Π΅Π· ошибок, Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ описаниСм — Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ. Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π»Π΅Π³ΠΊΠΎ, ΠΈ это Ρ‡Π°ΡΡ‚ΡŒ эффСктивного Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса git. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с git-rebase ΠΈ свободно Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ rebase для измСнСния порядка, объСдинСния, удалСния, рСдактирования ΠΈ раздСлСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². НапримСр, я ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π½ΠΎΡˆΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² Ρ„Π°ΠΉΠ», ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽ fixup-ΠΊΠΎΠΌΠΌΠΈΡ‚ (git commit -m fixup), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ git rebase -i, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.


  • Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΌΠ°Π½Ρ‹! Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ страницу git man ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΅Ρ‘ сСйчас. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π²Ρ‹ Π½Π΅ Ρ‡ΠΈΡ‚Π°Π»ΠΈ страницу git man Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня (просто
    man git
    ), сдСлайтС это.
  • Π’ Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°Π½Π° для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git высокого уровня ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находится список ΠΊΠΎΠΌΠ°Π½Π΄ git Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ опираСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° высокого уровня. Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° git высокого уровня, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эти справочныС страницы.
  • Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ rev selection.
  • Π’Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· Π½ΠΈΡ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов Π½Π° поясС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ git pull --rebase, git send-email -1 HEAD~2 ΠΈ
    git push origin HEAD~2:master
    .

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

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Git – Hexlet Guides

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅
  1. КакиС Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий
  2. Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий
  3. КакиС Π±Ρ‹Π²Π°ΡŽΡ‚ систСмы контроля вСрсий
  4. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅
  5. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅
  6. Π’Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅
  7. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этом руководствС ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ ΠΎΠ± основах Git. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ систСмы контроля вСрсий. Π’ дальнСйшСм информация ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Git.

КакиС Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий

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

Пока ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· ΠΏΠ°Ρ€Ρ‹-Ρ‚Ρ€ΠΎΠΉΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π΅ создаёт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… слоТностСй. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΊΠΎΠ΄, запускаСт Π΅Π³ΠΎ ΠΈ радуСтся ΠΆΠΈΠ·Π½ΠΈ. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½, Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ Ρ‚ΠΎΠΆΠ΅. Π‘ ростом ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ нСудобства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

  • Как Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ с исходным ΠΊΠΎΠ΄ΠΎΠΌ?
  • Как Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ случайных исправлСний ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ?
  • Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния, Ссли ΠΎΠ½ΠΈ оказались Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ?
  • Как ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½ΠΎΠ²ΠΎΠΉ?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· сотни Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ дСсятков тысяч строк ΠΊΠΎΠ΄Π°. Π’Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Ρƒ, Π² процСссС мСняСтС 15 Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ 300 строк ΠΊΠΎΠ΄Π° ΠΈ Π²Π΄Ρ€ΡƒΠ³ становится понятно, Ρ‡Ρ‚ΠΎ эта Π·Π°Π΄Π°Ρ‡Π° большС Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°. На этом ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ исходного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. И это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· мноТСства Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² событий. Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ стало понятно, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ срочно внСсти исправлСниС Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (сайт). ΠΠΎΠ²ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ состоянии Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° сайт нСльзя, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ исправлСниС Π½ΡƒΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² Ρ‚Ρƒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ΄Π°, которая Π±Ρ‹Π»Π° Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π‘Π°ΠΌΡ‹ΠΉ простой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ β€” ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ. К соТалСнию, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСдостатками. ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹Π΅ измСнСния ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ памяти). Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°ΠΏΠΎΠΊ станСт Π΄Π²Π΅, Π²Ρ‹ сразу Π½Π°Ρ‡Π½Ρ‘Ρ‚Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ Π² Π½ΠΈΡ…. И всё Ρ€Π°Π²Π½ΠΎ этот способ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π²ΡƒΠΌ людям.

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

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, эту Π·Π°Π΄Π°Ρ‡Ρƒ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΅Ρ‰Ρ‘ Π² 80-Ρ… Π³ΠΎΠ΄Π°Ρ…. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ инструмСнтарий сильно развился ΠΈ стал ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ повсСмСстно Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для написания ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΊΠ½ΠΈΠ³. РСшСниСм являСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий. ВыполняСтся ΠΎΠ½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния ΠΊΠΎΠ΄Π°. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· многочислСнных возмоТностСй Π΄Π°Π½Π½Ρ‹Ρ… систСм:

  • Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ любой вСрсии ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ.
  • ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
  • БовмСстная Ρ€Π°Π±ΠΎΡ‚Π° Π±Π΅Π· боязни ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π·Π°Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ Ρ‡ΡƒΠΆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π’ этом руководствС ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий

БистСмы контроля вСрсий (Π‘ΠšΠ’ ΠΈΠ»ΠΈ VCS β€” Version Control System) часто встроСны Π² инструмСнты, ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ Π΄Π°ΠΆΠ΅ Π΄Π°Π»Ρ‘ΠΊΠΈΠΌ ΠΎΡ‚ программирования людям. ИмСнно с Π½ΠΈΡ… ΠΌΡ‹ ΠΈ Π½Π°Ρ‡Π½Ρ‘ΠΌ своё знакомство, Π° Π·Π°ΠΎΠ΄Π½ΠΎ погрузимся Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡŽ.

БСрвисы синхронизации Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ устройствами, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Dropbox, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ практичСски всСми. И всС ΠΎΠ½ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ вСрсии Ρ„Π°ΠΉΠ»ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ это Ρ‚Π°ΠΊ: пСриодичСски ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° синхронизируСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с Ρ‚Π΅ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сСрвиса. Если Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» отличаСтся, ΠΈ врСмя Π΅Π³ΠΎ измСнСния – ΠΏΠΎΠ·ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π°, находящСгося Π½Π° сСрвСрС, Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π½Π° сСрвСрС становится Ρ‡Π°ΡΡ‚ΡŒΡŽ истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ становится послСдний ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

dropbox, история вСрсий

На ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅ тСкущая вСрсия Ρ„Π°ΠΉΠ»Π° ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ current. Всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ – это ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ вСрсии Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π°. Как Π²ΠΈΠ΄Π½ΠΎ, Dropbox позволяСт Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„Π°ΠΉΠ»Π°.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° эту Ρ„Ρ€Π°Π·Ρƒ:

Dropbox keeps a snapshot every time you save a file. (Дропбокс сохраняСт снимок ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ сохраняСтС Ρ„Π°ΠΉΠ»)

Π‘Π½ΠΈΠΌΠΎΠΊ (snapshot; Ρ€Π°Π·Π³. ΡΠ½Π΅ΠΏΡˆΠΎΡ‚) – ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅ понятиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π½Π°ΠΌ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Π•Π³ΠΎ Π΅Ρ‰Ρ‘ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ снимком состояния ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΌ снимком (Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄), Π½ΠΎ для простоты Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ просто «снимок».

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, снимок – это сам Ρ„Π°ΠΉΠ» послС измСнСния. И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ этот Ρ‚Π΅Ρ€ΠΌΠΈΠ½, посмотрим Π½Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ β€” Π΄Π΅Π»ΡŒΡ‚Ρƒ измСнСния (diff). ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ вмСсто сохранСния Π½ΠΎΠ²ΠΎΠΉ вСрсии Ρ„Π°ΠΉΠ»Π° Dropbox Π±Ρ‹ вычислял Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ²Ρ‹ΠΌ ΠΈ старым Ρ„Π°ΠΉΠ»ΠΎΠΌ (Π° это Π½Π΅ слоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ²) ΠΈ сохранял Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Ρ‘. Π—Π°Ρ‡Π΅ΠΌ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ, спроситС Π²Ρ‹? Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ мСсто Π½Π° дискС, хотя ΠΈ вносит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

Π’ дальнСйшСм ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ инструмСнты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π΄Π΅Π»ΡŒΡ‚ΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” со снимками. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «снимок» часто ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΊ дискам. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ снимок диска ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ с этой Ρ‚ΠΎΡ‡ΠΊΠΈ (прямо ΠΊΠ°ΠΊ Π² ΠΈΠ³Ρ€Π°Ρ…).

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

google docs, история вСрсий

БСрвис Google Docs автоматичСски Π΄Π΅Π»Π°Π΅Ρ‚ снимки послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ автосохранСния (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°Π· Π² 5 сСкунд). Если Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π·Π° это врСмя Π½Π΅ измСнился, Ρ‚ΠΎ, СстСствСнно, новая вСрсия Π½Π΅ появляСтся. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Ρ‚Π°ΠΊΠΈΡ… вСрсий ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

На ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅ история вСрсий называСтся β€œRevision history”. РСвизия β€” Π±Π°Π·ΠΎΠ²ΠΎΠ΅ понятиС систСм контроля вСрсий. Π›ΡŽΠ±ΠΎΠ΅ зафиксированноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² систСмС контроля вСрсий называСтся Ρ€Π΅Π²ΠΈΠ·ΠΈΠ΅ΠΉ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ рСвизия ΠΈ снимок – это Π½Π΅ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. Ѐиксация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ создаёт Ρ€Π΅Π²ΠΈΠ·ΠΈΡŽ, Π½ΠΎ сама рСвизия ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя Π»ΠΈΠ±ΠΎ Π΄Π΅

Как Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ людСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Git / Π₯Π°Π±Ρ€

По Ρ€Π°Π±ΠΎΡ‚Π΅ приходится ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, поэтому я Ρ…ΠΎΡ€ΠΎΡˆΠΎ знаю, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ всС ΠΌΠΎΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ. Помню, Ρ‡Ρ‚ΠΎ компания Π½Π°Ρ‡Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Git Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π·Π° ΠΏΠ°Ρ€Ρƒ нСдСль Π΄ΠΎ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π°. На ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΊΡ€ΡƒΠ³ΠΎΠΌ висСли Π½Π°ΠΊΠ»Π΅ΠΉΠΊΠΈ с Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ: сначала add, ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π·Π°Ρ‚Π΅ΠΌ ΠΏΡƒΡˆ.
Они Π½Π΅ Π·Π½Π°Π»ΠΈ, Π·Π°Ρ‡Π΅ΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌ просто сказали строго ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ инструкции, ΠΈΠ½Π°Ρ‡Π΅ Π±Π΅Π΄Π°. Но ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ Ρ‚Π°ΠΊ часто, Ρ‡Ρ‚ΠΎ я Ρ€Π΅ΡˆΠΈΠ»Π° провСсти сСминар ΠΏΠΎ Git.


МнС нравится ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ Π² Π³ΠΎΠ»ΠΎΠ²Π΅. Π― Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΡŽ Β«ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹Β», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстный Ρ‚ΠΈΠΏ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ. Π Π΅Ρ‡ΡŒ ΠΎ Π½Π΅ΠΊΠΈΡ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ…, структурах ΠΈΠ»ΠΈ любом графичСском прСдставлСнии Π² ΡƒΠΌΠ΅. НапримСр, Π² дСтствС я ΡƒΡ‡ΠΈΠ»Π° Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ, прСдставляя ΠΈΠ³Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΡƒΠ±ΠΈΠΊΠΈ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»Π° нСсколько рисунков. НС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ тСкст. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ пояснСниС.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌ. Π˜Π½Π°Ρ‡Π΅ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠΉΠΌΡ‘Ρ‚ сообщСния ΠΎΡ‚ Git. Рисунки β€” Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ.


На рисункС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ области распрСдСлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:
    • Π Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³
    • ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ (staging) ΠΈΠ»ΠΈ индСкс
    • Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
  • Π‘Π΅Ρ€Π²Π΅Ρ€:
    • Π£Π΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ прСимущСства распрСдСлённой систСмы управлСния вСрсиями.

ΠŸΡ€ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π΄Π²Π΅ области:

  • Π Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³
  • Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ


Π’ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²:

  • ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅: Ρ„Π°ΠΉΠ»Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Π΅Ρ‚ Git.
  • НСотслСТиваСмыС: ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Ρ‘ Π½Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹, поэтому Git Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ Π½ΠΈΡ….


ПослС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ (staging area).

Когда Ρ‚Π°ΠΌ накопился ряд ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с ΠΎΠ±Ρ‰Π΅ΠΉ Ρ†Π΅Π»ΡŒΡŽ, самоС врСмя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ с сообщСниСм ΠΎΠ± этой Ρ†Π΅Π»ΠΈ.

Если Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊ совмСстному использованию всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΡ€ΠΎΠΌ, ΠΎΠ½ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… состояниях Ρ„Π°ΠΉΠ»Π° Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠΌ, ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ (staged) ΠΈ зафиксированном (commited).

Π”Π°Π»Π΅Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ:

  • ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния Ρ„Π°ΠΉΠ»Π° Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅: git diff
  • ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния Ρ„Π°ΠΉΠ»Π° Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ области: git diff --staged
  • ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ послС добавлСния Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ
  • ΠΈ Ρ‚.Β Π΄.


ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ (fetching)


ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ git fetch Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

ВытягиваниС (pulling)


ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ git pull Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π΄Π²Π΅ области:

  • Π’ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: fetch
  • Π’ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³: merge

Если Π²Π°ΠΆΠ½Π° история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования git pull --rebase. Π’ΠΎΠ³Π΄Π° вмСсто ΠΊΠΎΠΌΠ°Π½Π΄ fetch + merge Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ fetch + rebase. Π’Π°ΡˆΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ воспроизвСдСны, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚Π°.


ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹Π΅ измСнСния: грязный Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

Когда люди усвоят эти понятия, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ дальнСйшСС: Π²Π΅Ρ‚Π²ΠΈ, ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ ΡƒΠΆΠ΅ Π·Π°Π»ΠΎΠΆΠ΅Π½.


Π― Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами управлСния вСрсиями (Visual SourceSafe, TFS ΠΈ Subversion): ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ скромному ΠΎΠΏΡ‹Ρ‚Ρƒ, нСдостаток Π·Π½Π°Π½ΠΈΠΉ Π²Ρ€Π΅Π΄ΠΈΡ‚ ΠΈ со старым инструмСнтом, ΠΈ с Π½ΠΎΠ²Ρ‹ΠΌ. Π‘ΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΡŒΡ‚Π΅ΡΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π²Ρ‹Π±ΠΎΡ€Π΅ инструмСнта, Π½ΠΎ ΠΈ Π½Π° Π΅Π³ΠΎ освоСнии.


Мой Π΄Ρ€ΡƒΠ³ ΠœΠ°Ρ€ΠΊ Виллаграса Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΊΠΈ Git ΠΈ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

РСсурсы ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π½Π° Hacker News:


ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π° Reddit, я ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»Π°, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π±Ρ‹Π»ΠΎ Π±Ρ‹ «ИдСя, ΠΊΠ°ΠΊ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ людСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GitΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ идСя, которая появилась Π² ΠΌΠΎΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²Π΅, ΠΊΠΎΠ³Π΄Π° я сама нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ ΠΈΠ·ΡƒΡ‡Π°Π»Π° Git ΠΏΠΎ ΠΊΠ½ΠΈΠ³Π΅ Pro Git. Π‘Ρ‚Π°Ρ‚ΡŒΡ Π½Π΅ являСтся ΠΏΠΎΠ»Π½Ρ‹ΠΌ руководством, лишь отправная Ρ‚ΠΎΡ‡ΠΊΠ°. Π£Π²Π΅Ρ€Π΅Π½Π°, Ρ‡Ρ‚ΠΎ всС эти рСсурсы Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹. Бпасибо!

И спасибо Π‘Ρ‚ΡŽΠ°Ρ€Ρ‚Ρƒ ΠœΠ°ΠΊΡΠ²Π΅Π»Π»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ подСлился ссылкой Π½Π° Hacker News, ΠΈ u/cryptoz, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запостил Π΅Ρ‘ Π½Π° Reddit!

Знакомство с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Git – ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ

Git, Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ для самого сСбя

АндрС Π€Π°ΡˆΠ°Ρ‚
ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ 01.09.2015

Git β€” это популярный Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ исходного ΠΊΠΎΠ΄Π°. Π•Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux, для управлСния исходным ΠΊΠΎΠ΄ΠΎΠΌ ядра Linux. На Π½Π΅ΠΌ основаны Ρ†Π΅Π»Ρ‹Π΅ слуТбы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ GitHub. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π°ΠΆΠ΅ Π² IBM DevOps Services – наряду с IBM Rational Team Concertβ„’. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠΈΡ€Π΅ Linux ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ IBM DevOps Services с Git, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Git.

Когда я Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Git, я ΠΈΠΌΠ΅Π» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Concurrent Versions System (CVS) ΠΈ Apache Subversion (SVN), поэтому я пытался ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния этих классичСских систСм хранСния исходного ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π°Π» ΠΌΠ½Π΅ лишь ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ возмоТностСй Git. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ я освоил Git Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ – своСго Ρ€ΠΎΠ΄Π° Β«Π—Π°ΠΌΠ΅Ρ‚ΠΊΠΈ для самого сСбя», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ сСбС, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Git, ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ это всСм Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ, Π±ΠΎΠ»Π΅Π΅ классичСскими Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ исходного ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ CVS ΠΈΠ»ΠΈ SVN.

ΠžΡΠ½ΠΎΠ²Ρ‹

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с простого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° классичСского рСпозитория исходного ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° рисункС 1. Π’ классичСском Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ исходного ΠΊΠΎΠ΄Π° ΠΏΠ°ΠΏΠΊΠ° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ информация (content) (CVS ΠΈ Git Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ с ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ, Π° просто с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ). ВсС вСрсии ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ содСрТатся Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ – это мСсто, Π³Π΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΊΠΎΠ΄ΠΎΠΌ. Из рСпозитория ΠΊΠΎΠ΄ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ (checkout) Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π° измСнСния, внСсСнныС Π² этом Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ (commit) Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Рисунок 1. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ пространством Π² классичСском Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ исходного ΠΊΠΎΠ΄Π°

ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ фиксации создаСтся новая вСрсия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, получСнная ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ вСрсии Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 2. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ хранится Π² Π²ΠΈΠ΄Π΅ ряда вСрсий, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… снимками Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния (snapshots), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ Β«Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈΒ» Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ фиксации. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, измСнСнная ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ вСрсиями ΠΏΡƒΡ‚Π΅ΠΌ фиксации, называСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Вакая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вСрсий называСтся ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π²Π΅Ρ‚Π²ΡŒΡŽ. Π’ SVN основной ΠΏΠΎΡ‚ΠΎΠΊ называСтся стволом; Π² CVS ΠΎΠ½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ носит имя HEAD; Π² Git Π΅Π³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ master. Π’Π΅Ρ‚Π²ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для выдСлСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ старой вСрсии.

Рисунок 2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ вСрсии Π² классичСском Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

Пока Git ΠΌΠ°Π»ΠΎ Ρ‡Π΅ΠΌ отличаСтся ΠΎΡ‚ классичСских Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ исходного ΠΊΠΎΠ΄Π°, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ? К соТалСнию, Π½Π° этом сходство заканчиваСтся. Одна ΠΈΠ· основных особСнностСй CVS ΠΈ SVN Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Git – Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния нСсколько Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° дСйствуСт ΠΈ сообщаСтся с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° сСрвСрС.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Git?

Основной ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Git Π½Π° ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ прост – Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Git ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ΅ снимков Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΈΠ»ΠΈ Β«ΠΊΠΎΠΌΠΌΠΈΡ‚Β», ΠΈ Β«Π·Π½Π°Π΅Ρ‚Β», ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ. Π­Ρ‚ΠΎ ваТная концСпция. По-ΠΌΠΎΠ΅ΠΌΡƒ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ примСнСния Π½Π°Π±ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ освоСниС Git.

Π­Ρ‚ΠΎ поистинС ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ – Π΅Π³ΠΎ слСдствия. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ углубимся Π² Git.

Π Π°Π±ΠΎΡ‚Π° с Git

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Git, достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git init. Она ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Git ΠΈ создаСт Π² Π½Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ .git (скрытый) с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ checkout ΠΈ commit Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… рСпозиториях исходного ΠΊΠΎΠ΄Π°, Π½ΠΎ Π°ΠΊΡ†Π΅Π½Ρ‚ дСлаСтся Π½Π° Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, поэтому Π² Git Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° add (ΠΊΠ°ΠΊ Π² SVN). Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, внСсСнноС Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, пСрСносится Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ фиксации. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ индСксом. Рисунок 3 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ процСсс создания Π½Π°Π±ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· снимка вСрсии A Π² снимок вСрсии B.

Команда git status ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ измСнСния, Π² ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ‹ Π²Π΅Ρ‚Π²ΠΈ Π²Ρ‹ Π½ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ.

Рисунок 3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Git

Команда git log ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Ρ‚.Π΅. ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²) Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° git log <path> – ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ.

Команда git status пСрСчисляСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² индСксС, Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git diff ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git diff (Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²), ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ измСнСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² индСкс. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ находится Π² индСксС, – Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ измСнСния, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ своСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git diff --cached. Команда git diff <name> ΠΈΠ»ΠΈ git diff <name> -- <path> ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ соотвСтствСнно. Name ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ фиксации, ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²Π΅Ρ‚Π²ΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ самоС врСмя ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ….

ИмСна

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅.
Из-Π·Π° Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° своих рисунках Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«(A)Β», Β«(B)Β» ΠΈ Ρ‚.ΠΏ.

Рассмотрим ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ имСнования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Git. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ элСмСнты Git – это снимки Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния. Π˜Ρ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ…Π΅ΡˆΠ΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«c69e0cc32f3c1c8f2730cade36a8f75dc8e3d480Β». Π˜Ρ… ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΈΠ· содСрТимого снимка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ врСмя ΠΏΠΎΠ΄Π°Ρ‡ΠΈ, свСдСния ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°Ρ вСрсия ΠΈ Ρ‚.Π΄. Π‘Π½ΠΈΠΌΠΎΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΊΠ°ΠΊ Π² CVS, ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΈ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня /branches), ΠΊΠ°ΠΊ Π² SVN. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ снимков Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния Git Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ порядок, ΠΊΠ°ΠΊ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… рСпозиториях. Для удобства Git позволяСт ΡΠΎΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ эти Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ…ΡΡˆΠΈ Π΄ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΈΡ… ΠΈΠΌΠ΅Π½ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством символов ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ID, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ имя всС Ρ€Π°Π²Π½ΠΎ ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… рСпозитория. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Β«c69e0ccΒ».

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ commit ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ ΠΊΠ°ΠΊ Π³Π»Π°Π³ΠΎΠ», ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ дСйствиС ΠΏΠΎ созданию снимка Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния, ΠΈ ΠΊΠ°ΠΊ имя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ снимок.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ снимков Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚; Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с вСтвями. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… рСпозиториях Π²Π΅Ρ‚Π²ΡŒΡŽ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ исходного ΠΊΠΎΠ΄Π°. Π’ Git ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ β€” это список Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΏΡ€ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ снимка Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π’Π΅Ρ‚Π²ΡŒ Π² Git – это всСго лишь ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ снимок. Он ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ мСсто, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹Π΅ измСнСния ΠΏΡ€ΠΈ использовании Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. Когда ΠΊ Π²Π΅Ρ‚Π²ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΌΠ΅Ρ‚ΠΊΠ° Π²Π΅Ρ‚Π²ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ пСрСмСщаСтся ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.

Как Git Β«ΡƒΠ·Π½Π°Π΅Ρ‚Β», ΠΊΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области? На это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ HEAD. HEAD Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” это мСсто, ΠΎΡ‚ΠΊΡƒΠ΄Π° взято послСднСС Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ пространство ΠΈ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π²Π°ΠΆΠ½Π΅Π΅, ΠΊΡƒΠ΄Π° Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ измСнСния. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ HEAD ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Π΅Ρ‚Π²ΡŒ послСднСй Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π­Ρ‚ΠΎ отличаСтся ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° HEAD Π² CVS ΠΊΠ°ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Ρ‚Π²ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Команда tag ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ позволяСт Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚Π΅Π³ (tag) β€” это псСвдоним, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π½ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒΡΡ ΠΈ ярлыками. HEAD – это Π²Π΅Ρ€ΡˆΠΈΠ½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. HEAD^1 β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° HEAD, HEAD^2 – Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚.Π΄.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Π½Π° страницС руководства gitrevisions. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚Π΅Π³ΠΈ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π° Π²Π΅Ρ‚Π²Π΅ΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ указатСлями (refnames). Команда reflog ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ измСнилось Π·Π° врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΈΠΌΠ΅Π½ΠΈ, с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅Π³ΠΎ создания (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ вмСстС с Π²Π΅Ρ‚Π²ΡŒΡŽ) Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния.

Π’Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅

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

Рисунок 4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры вСтвлСния Π² Git

Рисунок 4 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ эту структуру Π²Π΅Ρ‚Π²Π΅ΠΉ Π² Git. Π’Π΅Ρ‚Π²ΡŒ master, Π³Π΄Π΅ Π² настоящСС врСмя происходит нСкоторая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° снимок F. Другая Π²Π΅Ρ‚Π²ΡŒ, old, соотвСтствуСт Π±ΠΎΠ»Π΅Π΅ старому снимку, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎΡ‡ΠΊΠ΅ исправлСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π΅Ρ‚Π²ΡŒ feature содСрТит Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния – для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Наборы ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ вСрсии Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«[B->D]Β». Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ снимка Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния B Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°, Π΄Π²Π° направлСния развития, – Π²Π΅Ρ‚Π²ΡŒ feature ΠΈ другая Π²Π΅Ρ‚Π²ΡŒ. ΠšΠΎΠΌΠΌΠΈΡ‚ А Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ исправлСниС ошибки Π½ΠΎΠΌΠ΅Ρ€ 123.

Π’Π΅Ρ‚Π²ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ посрСдством примСнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git branch <branch name> ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ HEAD ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git branch <branch name> <commit id> ΠΊ любой допустимой вСрсии снимка Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ созданию Π½ΠΎΠ²ΠΎΠ³ΠΎ указатСля Π²Π΅Ρ‚Π²ΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΏΡ€ΠΈ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΠΌ способом рабочая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ остаСтся Π² старой Π²Π΅Ρ‚Π²ΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ. Команда git checkout -b <branch name> создаСт Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ ΠΈ пСрСносит Π² эту Π²Π΅Ρ‚Π²ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Π΄Π²Π΅ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

  • git diff <branch> -- <path>, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ различия для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ (Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°) ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ;
  • git checkout <branch> -- <path> ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ измСнСния ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ.

БлияниС

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π²Π΅Ρ‚Π²ΡŒ feature. Когда функция Π³ΠΎΡ‚ΠΎΠ²Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ (master). Для этого Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git merge <branch name>. Π’ΠΎΠ³Π΄Π° git ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ измСнСния ΠΈΠ· Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ с Π²Ρ‹Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ. Для этого Git примСняСт всС Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅Ρ‚Π²ΠΈ feature ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ основной Π²Π΅Ρ‚Π²ΠΈ.

БущСствуСт Ρ‚Ρ€ΠΈ способа достиТСния этой Ρ†Π΅Π»ΠΈ Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² этих Π΄Π²ΡƒΡ… вСтвях ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ².

  • БыстроС прямоС слияниС: Π² ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΊΠ°ΠΊ Π΄Π²Π΅ Π²Π΅Ρ‚Π²ΠΈ Ρ€Π°Π·ΠΎΡˆΠ»ΠΈΡΡŒ. Она ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. Π’ этом случаС Git ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 5. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΡ€ΠΎΠΌΠ΅ продвиТСния указатСля Π²Π΅Ρ‚Π²ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π² Git это называСтся «быстрым прямым слияниСм».
Рисунок 5. БыстроС прямоС слияниС
  • БСсконфликтноС слияниС: ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ измСнСния Π² ΠΎΠ±Π΅ΠΈΡ… вСтвях, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚. Π­Ρ‚ΠΎ происходит, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли измСнСния Π² ΠΎΠ±Π΅ΠΈΡ… вСтвях Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Git автоматичСски примСняСт ΠΊ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ всС измСнСния ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ ΠΈ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с этими измСнСниями. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ Π²Π΅Ρ‚Π²ΡŒ пСрСмСщаСтся Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΊ этому ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 6.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ – merge commit – ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²ΡƒΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. Однако я Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ» здСсь Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π½Π°Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (E) ΠΈ (H) Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ всСх Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅Ρ‚Π²ΠΈ feature с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° расхоТдСния Π΄Π²ΡƒΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ, Π½ΠΎ это, вСроятно, Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ аналогию слишком Π΄Π°Π»Π΅ΠΊΠΎ.

Рисунок 6. БСсконфликтноС слияниС
  • ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½ΠΎΠ΅ слияниС: ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ измСнСния Π² ΠΎΠ±Π΅ΠΈΡ… вСтвях, ΠΈ ΠΎΠ½ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. Π’ этом случаС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ останСтся Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git merge –abort.

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

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈ повторСния Π½Π°Π±ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Π΅Π΄Π΅Ρ‚ Π΅Ρ‰Π΅ дальшС, ΠΊ Ρ‚Π°ΠΊΠΈΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ возмоТностям, ΠΊΠ°ΠΊ сдвиг (rebasing) ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (cherry picking).

Иногда, ΠΏΠΎΠΊΠ° Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, основная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Π°ΠΊΠΆΠ΅ продвигаСтся Π²ΠΏΠ΅Ρ€Π΅Π΄, Π½ΠΎ Π²Ρ‹ ΠΏΠΎΠΊΠ° Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ с Π½Π΅ΠΉ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ±Π΅ Π²Π΅Ρ‚Π²ΠΈ быстро расходятся Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Для этого Git ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сдвига ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π‘Π΄Π²ΠΈΠ³

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

Рисунок 7. Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚Π²ΠΈ

Если ΠΏΠΎΠ²Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ, смСщСниС останавливаСтся ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΆΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ ΠΈ оставляСт ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰Π΅Π΅ состояниС Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ для исправлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π—Π°Ρ‚Π΅ΠΌ смСщСниС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ.

Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ --onto позволяСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ расхоТдСния смСщСния ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ Π½ΠΎΠ²ΠΎΠΌΡƒ снимку Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ.

Π’Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ, работая Π½Π°Π΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π²Ρ‹ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ввСсти Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ исправлСниС ошибки ΠΈΠ»ΠΈ интСрСсноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π²Ρ‹ ΠΏΠΎΠΊΠ° Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π²Π΅Ρ‚Π²ΠΈ. Git позволяСт ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ cherry pick.

Π’ этой ситуации, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 8, Git просто примСняСт Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ снимку Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния, ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ HEAD, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основной Π²Π΅Ρ‚Π²ΠΈ. Для этого ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ…ΡΡˆΠ°.

Рисунок 8. Π’Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚

Команда revert выполняСт ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π° Π·Π°Ρ‚Π΅ΠΌ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. revert – это ΠΏΠΎΡ‡Ρ‚ΠΈ cherry pick Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π‘ΠΌ. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° рисункС 9.

Рисунок 9. Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

Команда revert Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ это Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚Π²ΠΈ Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π½ΠΎ это Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ настоящСй ΡΡ‚Π°Ρ‚ΡŒΠΈ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ я ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽ всС это Ρ‚Π°ΠΊ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ эти особСнности, ΠΊΠΎΠ³Π΄Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ возмоТностях сотрудничСства. На самом Π΄Π΅Π»Π΅ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ усвоил это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ сразу станСт всС ясно. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ основана Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, описанной Π²Ρ‹ΡˆΠ΅.

БотрудничСство

Π’ классичСских Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… исходного ΠΊΠΎΠ΄Π° всСгда Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Π·Π° Π²Π΅Ρ‚Π²ΡŒ; ΠΎΠ½Π° находится Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π’ Git Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ понятия, ΠΊΠ°ΠΊ основная Π²Π΅Ρ‚Π²ΡŒ. ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, Π½ΠΎ Ρ€Π°Π·Π²Π΅ Π²Ρ‹ΡˆΠ΅ я Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сущСствуСт основная Π²Π΅Ρ‚Π²ΡŒ? Π”Π°, Π³ΠΎΠ²ΠΎΡ€ΠΈΠ». Однако эта основная Π²Π΅Ρ‚Π²ΡŒ сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ локально. НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ связи ΠΌΠ΅ΠΆΠ΄Ρƒ основной Π²Π΅Ρ‚Π²ΡŒΡŽ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ создадитС.

Рисунок 10. Π”Π²Π° рСпозитория

Если Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git remote add ΠΊ Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π—Π°Ρ‚Π΅ΠΌ Π² своСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ fetch ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. Π­Ρ‚ΠΎ называСтся Π²Π΅Ρ‚Π²ΡŒ дистанционного отслСТивания, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ отслСТиваСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ систСмС.

ΠŸΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π²Π΅Ρ‚Π²ΠΈ, которая сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Π²Π΅Ρ‚Π²ΡŒ дистанционного отслСТивания (Π½ΠΎ Π½Π΅ ΠΊΠ°ΠΊ локальная Π²Π΅Ρ‚Π²ΡŒ), Git автоматичСски создаСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ ΠΈΠ· Π²Π΅Ρ‚Π²ΠΈ дистанционного отслСТивания ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΅Π΅.

ПослС этого ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ содСрТимоС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ ΠΈ своСй собствСнной. На рисункС 11 ΠΏΠΎΠΊΠ°Π·Π°Π½ процСсс Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ master, Π½ΠΎ это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΠΈΡ‚ΡŒ с любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ с ΠΎΠ±Ρ‰Π΅ΠΉ историСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ merge.

Рисунок 11. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ – ΠΊΠΎΠΌΠ°Π½Π΄Π° git clone, которая ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· слуТбы хостинга. Она автоматичСски ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ всС ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ‚Π²ΠΈ (Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ссылки) ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, создаСтся модСль. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²Π΅Ρ‚Π²ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория – это «просто Π²Π΅Ρ‚Π²ΡŒΒ», всС, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅ ΠΎ вСтвлСниях, слияниях ΠΈ Ρ‚.Π΄., ΠΏΠΎΡ‡Ρ‚ΠΈ бСспрСпятствСнно ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΈ здСсь, особСнно ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория.

Рисунок 12. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

На рисункС 12 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ дСйствиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git fetch; ΠΎΠ½Π° обновляСт Π²Π΅Ρ‚Π²ΡŒ дистанционного отслСТивания. Π—Π°Ρ‚Π΅ΠΌ просто выполняСтся обычная опСрация слияния ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚Π²ΡŒΡŽ дистанционного отслСТивания ΠΈ локальной Π²Π΅Ρ‚Π²ΡŒΡŽ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ – git checkout master; git merge repo1/master. ПослС копирования имя FETCH_HEAD ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ слияния Π² качСствС ярлыка скопированной ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, git merge FETCH_HEAD. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, это слияниС ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ быстрому прямому слиянию, бСсконфликтному слиянию ΠΈΠ»ΠΈ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Команда git pull ΡƒΠ΄ΠΎΠ±Π½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ выполняСт ΠΎΠ±Π° дСйствия fetch ΠΈ merge.

Когда измСнСния зафиксированы Π² локальной Π²Π΅Ρ‚Π²ΠΈ, ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ. Π­Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ push, которая пСрСносит Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ. Π­Ρ‚ΠΎ дСйствиС, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ fetch, Π° Π½Π΅ pull. Однако это большС, Ρ‡Π΅ΠΌ просто ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ обновляСтся ΠΊΠ°ΠΊ локальная копия ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, Ρ‚Π°ΠΊ ΠΈ удалСнная Π²Π΅Ρ‚Π²ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 13. Команда push Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π²Π΅Ρ‚Π²ΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Рисунок 13. ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ измСнСния

БущСствуСт ΠΎΠ΄Π½ΠΎ условиС. Π­Ρ‚ΠΎ срабатываСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли опСрация push ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ быстрому прямому слиянию с ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния (ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹) ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΈΠ»ΠΈ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‚Π΅Ρ€ΠΎΠ². Π’ΠΎΠ³Π΄Π° Git ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ push ΠΈ оставляСт всС ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ измСнСния, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… со своСй локальной Π²Π΅Ρ‚Π²ΡŒΡŽ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΈΡ… случаях ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ слияниС, Π° ΠΌΠΎΠΆΠ½ΠΎ – слияниС со смСщСниСм для пСрСноса ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· локальной Π²Π΅Ρ‚Π²ΠΈ Π² Π½ΠΎΠ²ΡƒΡŽ, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ.

Помимо ΠΊΠΎΠΌΠ°Π½Π΄ fetch ΠΈ push, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ распространСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ; старая добрая ΠΏΠΎΡ‡Ρ‚Π°. БущСствуСт ΠΊΠΎΠΌΠ°Π½Π΄Π° git format-patch <start-name>, которая создаёт Ρ„Π°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π²Π΅Ρ‚Π²ΠΈ. Команда git am <mail files> примСняСт эти Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΡ

Одно прСдостСрСТСниС: Π½Π΅ ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ push Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΡƒΠΆΠ΅ отслСТиваСт Π²Π΅Ρ‚Π²ΡŒ ΠΈ локально Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½Π΅ΠΉ. Π­Ρ‚ΠΎ скорСС всСго ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π΅ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ вСтвями – Git ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ вас ΠΎΠ± этом ΠΈ попросит сначала ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pull.

Π’Π°ΠΊΠΆΠ΅ понятно, Ρ‡Ρ‚ΠΎ Π½Π΅ слСдуСт ΡΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π²Π΅Ρ‚Π²ΡŒ дистанционного отслСТивания. Она пСрСстанСт ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ, ΠΈ быстрого прямого слияния ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ push Π½Π΅ получится. Π’Ρ‹ Π½Π°Ρ€ΡƒΡˆΠΈΠ»ΠΈ структуру рСпозитория.

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Git

Рисунок 14. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры с нСсколькими рСпозиториями

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ использовании Git имССтся структура Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π·Π²Π΅Π·Π΄Ρ‹ с ΠΎΠ΄Π½ΠΈΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слуТит Π² качСствС основного, ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ рСпозиториями ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Но это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. МоТно Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ соСдинСния с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ рСпозиториями с ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡƒΡ‚ΠΈΠ½Ρ‹ пСрСкрСстных соСдинСний, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 14.

Π’Ρ‹ΡˆΠ΅ я описал сдвиг ΠΊΠ°ΠΊ воспроизвСдСниС Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ вСтвлСния (ΠΈΠ»ΠΈ расхоТдСния) исходной Π²Π΅Ρ‚Π²ΠΈ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Git воспроизводит порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ создавались ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ функция git rebase -i позволяСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π΄Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ (squash). Π­Ρ‚ΠΎΠ³ΠΎ нСльзя Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ – ΠΈΠ½Π°Ρ‡Π΅ Ρ‚Π΅, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½ΠΈΠΌΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ².

Π― Ρ‚Π°ΠΊΠΆΠ΅ описал, ΠΊΠ°ΠΊ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ, Π½ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ любой ΠΊΠΎΠΌΠΌΠΈΡ‚ (снимок Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния). Π’ΠΎΠ³Π΄Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ HEAD Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚, Π° Π½Π΅ Π½Π° Π²Π΅Ρ‚Π²ΡŒ. Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ называСтся detached HEAD. ΠŸΡ€ΠΈ фиксации измСнСния Π² этой ситуации начинаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚Π΅ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ Π±Π΅Π· нСобходимости ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ имя этой Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. Π’Π΅Ρ€ΡˆΠΈΠ½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°; Ρƒ Π½Π΅Π΅ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ refname. МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚Π²ΡŒ ΠΎΡ‚ этой Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git branch <branchname>.

Π§Ρ‚ΠΎ происходит с Ρ‚Π΅ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдоступны Π½ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ ссылкС? Если Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΠΎΠ½ΠΈ останутся Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Однако ΠΌΠΎΠΆΠ½ΠΎ – ΠΈ слуТбы хостинга Ρ‚Π°ΠΊ ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ – Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ git gc, сборщик мусора Git для удалСния Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π½Π΅ доступныС Π½ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ, Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ рСкомСндуСтся всСгда Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ, особСнно с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ быстро ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Π²Π΅Ρ‚Π²ΠΈ Π² Git.

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

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

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

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ½ΡΡ‚ΡŒ Git, – это графичСский инструмСнт gitk, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ структуру локального рСпозитория. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ gitk --all, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС Π²Π΅Ρ‚Π²ΠΈ, Ρ‚Π΅Π³ΠΈ ΠΈ Ρ‚.ΠΏ. Он Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт простой интСрфСйс для выполнСния дСйствий Π² Git.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π° Linux-систСмС Git ΡƒΠΆΠ΅ установлСн. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ придСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ· своСго диспСтчСра ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Для Windows Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с Π³Π»Π°Π²Π½ΠΎΠΉ страницы Git.

Π― надСюсь, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Git, ΠΈ Π½Π΅ Π±ΠΎΠΈΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ.

Бпасибо Π·Π° интСрСсныС дискуссии Π½Π° эту Ρ‚Π΅ΠΌΡƒ ΠΈ Π·Π° Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡŽ Π½Π° эту ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΌΠΎΠ΅ΠΌΡƒ ΠΊΠΎΠ»Π»Π΅Π³Π΅ Π’ΠΈΡ‚ΠΎΠ»ΡŒΠ΄Ρƒ Π©Π΅ΠΏΠΎΠ½ΠΈΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Π΅Ρ‚ Git Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ я.

РСсурсы для скачивания
ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹

Π Π°Π±ΠΎΡ‚Π° с Git Ρ‡Π΅Ρ€Π΅Π· консоль β€” Π‘Π»ΠΎΠ³ HTML Academy

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹Β ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅: ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΊ вашСго рСпозитория Π²Β GitHub, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΒ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Когда ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» нСпонятноС Π·Π°Π΄Π°Π½ΠΈΠ΅.

Π§Ρ‚ΠΎ Π·Π°Β GitHub, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π·Π°Ρ‡Π΅ΠΌ, Π°Β Π³Π»Π°Π²Π½ΠΎΠ΅, ΠΊΠ°ΠΊ всСм этим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ? Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ.

БистСма контроля вСрсий Git

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма контроля вСрсий.

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

БистСм контроля вСрсий ΠΌΠ½ΠΎΠ³ΠΎ и всС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎΒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹, Π³Π΄Π΅ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ к мСсту сохранСния, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅Β Ρ‚Π°ΠΊ.

Одна из самых популярных систСм называСтся Git. Π•Ρ‘Β ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚Β Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΒ β€” отсутствиС графичСской вСрсии. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π° с Git вСдётся Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку. Π’Β Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах свои ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для взаимодСйствия с Git.

Π’Β Windows ΠΈΡ…Β Π΄Π²Π΅: PowerShell ΠΈΒ cmd.exe. Π’Β Ubuntu это Terminal. Бамая популярная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Β macOS Ρ‚ΠΎΠΆΠ΅ называСтся Terminal. Если Π²Π°ΠΌ Π½Π΅Β ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ встроСнная в систСму ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с командной строкой, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свою. НапримСр, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π°Β JavaScript ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Hyper, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ на любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС. На Windows популярны ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Cmder ΠΈΒ Git Bash, Π°Β Π½Π°Β macOSΒ β€” iTerm.

Π’Β ΠΌΠΈΡ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Β» ΠΈΠ»ΠΈ «консоль». А работаСт это Ρ‚Π°ΠΊ: ΠΌΡ‹Β Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρ‹: сообщСниС об ошибкС, запрос Π½Π°Β ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… дСйствий.

УстанавливаСм Git

Если Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Ρ‹Β Π½Π΅Β Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с Git, спСрва Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Бпособы зависят ΠΎΡ‚Β ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Установка Π²Β Linux

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² вашСго дистрибутива. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈΒ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ подходящиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

  • Если у вас 21Β ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ранняя вСрсия Fedora, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ yum install git.
  • Для 22Β ΠΈΒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсий Fedora Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ dnf install git.
  • Для дистрибутивов, основанных Π½Π°Β Debian, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ubuntu, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ apt-get: sudo apt-get install git.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дистрибутивов ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь.

Установка Π½Π°Β macOS
  1. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Git со страницы ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  2. ЗапускаСм Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».
  3. БистСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ с ошибкой, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ написано, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» скачан с нСавторизованного сайта и инсталлятор Π½Π΅Β ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½. Π’Β Ρ‚Π°ΠΊΠΎΠΌ случаС Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΉΡ‚ΠΈ в «БистСмныС настройки» — Β«Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΒ» (Security and Privacy), в появившСмся ΠΎΠΊΠ½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ сообщСниС об ошибкС ΠΈΒ ΠΊΠ½ΠΎΠΏΠΊΠ° Open anyway (Всё Ρ€Π°Π²Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ). НаТимаСм.
  4. БистСма ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ, ΡƒΡ‚ΠΎΡ‡Π½ΡΡŽΡ‰Π΅Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅Β Π»ΠΈ Π²Ρ‹Β Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ установку. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅ΠΌ дСйствиС.
  5. Установщик ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Ρ‚ Ρ‡Π΅Ρ€Π΅Π· всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ шаги.
Установка Π²Β Windows

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ exe-Ρ„Π°ΠΉΠ» инсталлятора с сайта Git и запуститС Π΅Π³ΠΎ. Π­Ρ‚ΠΎ Git для Windows, он называСтся msysGit. Установщик спросит Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΒ Π»ΠΈ в мСню ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запуска Ρ„Π°ΠΉΠ»ΠΎΠ² ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Git Bash (консольная вСрсия) ΠΈΒ GUI (графичСская вСрсия). ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ дСйствиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π»Π΅Π΅ вСсти Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‡Π΅Ρ€Π΅Π· консоль Π²Β Git Bash. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Git установлСн

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всС дСйствия по установкС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹, убСдимся, Ρ‡Ρ‚ΠΎ Git появился в систСмС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈΒ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ git --version, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ тСкущая вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ на вашСй машинС. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

Настройка Git

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

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ своё имя: git config --global user.name "вашС имя"

Для добавлСния ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ адрСса Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅: git config --global user.email адрСс

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Β ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅, Π΅ΡΡ‚ΡŒ опция --global. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ сохранСны для всСх Π²Π°ΡˆΠΈΡ… дСйствий Π²Β Git ΠΈΒ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ…Β Π±ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅Β Π½Π°Π΄ΠΎ. Если Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚ΠΎΒ Π²Β Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ эти ТС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π΅Π· ΠΎΠΏΡ†ΠΈΠΈ --global.

GitΒ β€” всСму Π³ΠΎΠ»ΠΎΠ²Π°

А всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅Β β€” Π½Π°Β ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… курсах ΠΏΠΎΒ HTML, CSS ΠΈΒ JavaScript.Β 11Β Π³Π»Π°Π² сСйчас и бСсплатно.

РСгистрация

НаТатиС Π½Π°Β ΠΊΠ½ΠΎΠΏΠΊΡƒΒ β€” согласиС Π½Π°Β ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

РСгистрация Π½Π°Β GitHub

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ GitHub?

GitHubΒ β€” Π²Π΅Π±-сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ основан на систСмС Git. Π­Ρ‚ΠΎ такая ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡΠ΅Ρ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ вСсти ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ IT-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈΒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ за новостями Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ИмСнно Π²Β GitHub Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌΒ ΠΌΡ‹, ΠΊΠΎΠΌΠ°Π½Π΄Π° АкадСмии, и студСнты интСнсивов.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с GitHub, Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ на сайтС, Ссли Π²Ρ‹Β Π΅Ρ‰Ρ‘ этого нС сдСлали. Π—Π°Β Π΄Π΅Π»ΠΎ.

  1. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ на сайт GitHub. Cтартовая страница GitHub.
  2. Для Π½Π°Ρ‡Π°Π»Π° рСгистрации:
    • НаТимаСм ΠΊΠ½ΠΎΠΏΠΊΡƒ SignΒ up (Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ), ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ на страницу рСгистрации, Π³Π΄Π΅ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈΒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ. ПослС заполнСния ΠΏΠΎΠ»Π΅ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг рСгистрации профиля на стартовой страницС GitHub.
    • ПослС заполнСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ прохоТдСния Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π°Β ΠΊΠ½ΠΎΠΏΠΊΡƒ Select aΒ plan. Π’Ρ‚ΠΎΡ€ΠΎΠΉ шаг рСгистрации профиля на стартовой страницС GitHub.
  3. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡˆΠ°Π³Β β€” нСбольшой опрос ΠΎΡ‚Β GitHub, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² всС поля ΠΈΒ Π½Π°ΠΆΠ°Ρ‚ΡŒ Submit ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Π½Π°ΠΆΠ°Π² skip this step. ΠžΠΏΡ€ΠΎΡ Π½Π°Β Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ шагС рСгистрации.
  4. ПослС прохоТдСния всСх этапов на сайтС, Π½Π°Β ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ рСгистрации ящик Π²Π°ΠΌ ΠΏΡ€ΠΈΠ΄Ρ‘Ρ‚ письмо ΠΎΡ‚Β GitHub. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΈΒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ свой ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ адрСс, Π½Π°ΠΆΠ°Π² Verify email address (ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ элСктронный адрСс) ΠΈΠ»ΠΈ скопируйтС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ссылку из письма ΠΈΒ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅Ρ‘Β Π²Β Π°Π΄Ρ€Π΅ΡΠ½ΡƒΡŽ строку Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ элСктронного адрСса.
  5. ПослС Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ GitHub ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎΒ GitHub. Π­Ρ‚ΠΎΡ‚ ΠΏΡƒΠ½ΠΊΡ‚ ΠΏΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΒ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π²Β ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ в ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ.Π’Π°ΠΊ выглядит ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ послС рСгистрации.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ у вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π½Π°Β GitHub.

УстанавливаСм SSH-ΠΊΠ»ΡŽΡ‡ΠΈ

Git установлСн, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π½Π°Β GitHub создан. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ SSH-ΠΊΠ»ΡŽΡ‡ ΠΈΒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊΒ Ρ€Π°Π±ΠΎΡ‚Π΅ с проСктом.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SSH-ΠΊΠ»ΡŽΡ‡ ΠΈΒ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½Β Π½ΡƒΠΆΠ΅Π½?

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со своСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° с GitHub, ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊΒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ, хранящимся на сСрвисС, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ в консоли Π±Π΅Π· постоянного подтвСрТдСния пароля, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ у сСрвСра. В этом ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ SSH-ΠΊΠ»ΡŽΡ‡ΠΈ.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ SSH-ΠΊΠ»ΡŽΡ‡ содСрТит ΠΏΠ°Ρ€Ρƒ: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ) ΠΈΒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ (ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ) ΠΊΠ»ΡŽΡ‡. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ отправляСтся на сСрвСр, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Β ΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ от всСх ΠΈΒ Π½Π΅Β ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΅Π³ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ ΠΈΒ ΡƒΠΊΡ€Π°Π΄Ρ‘Ρ‚. Он бСсполСзСн Π±Π΅Π· своСй ΠΏΠ°Ρ€Ρ‹Β β€” Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. А вот Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡Β β€” сСкрСтная Ρ‡Π°ΡΡ‚ΡŒ. Доступ ΠΊΒ Π½Π΅ΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ у вас.

Вы отправляСтС ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ на сСрвСр, Π³Π΄Π΅ хранится ваш ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, сСрвСр ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вы это вы, Ρ‚ΠΎΒ Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ вас, ΠΈΒ Π΄Π°Ρ‘Ρ‚ Π²Π°ΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚. Π˜Β Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΎΡ‚Π²Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ у вас Π΅ΡΡ‚ΡŒ подходящий Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ связки Π»ΠΎΠ³ΠΈΠ½-ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ бСзопаснСй. Π’Π°Ρˆ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ, Π°Β Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ваш ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ SSH-ΠΊΠ»ΡŽΡ‡, Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ придётся Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΒ SSH-ΠΊΠ»ΡŽΡ‡Ρƒ, Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΆΠ΅ Ρ€Π°Π½Π΅Π΅ созданный ΠΊΠ»ΡŽΡ‡ на своём ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Π΅ΡΡ‚ΡŒΒ Π»ΠΈ ΡƒΠΆΠ΅ Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΊΠ»ΡŽΡ‡. ΠŸΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SSH-ΠΊΠ»ΡŽΡ‡ΠΈ хранятся Π²Β ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ~/.ssh, поэтому Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ содСрТимоС этого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

  1. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ консоль.
  2. Π’Π²ΠΎΠ΄ΠΈΠΌ cd ~/.ssh, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π²Β Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π²Β Π½ΡƒΠΆΠ½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ.
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ls, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ список всСх Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Β ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Β Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Π˜Ρ‰Π΅ΠΌ ΠΏΠ°Ρ€Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² с названиями Π²ΠΈΠ΄Π° имя ΠΈ имя.pub. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ имя — id_rsa, id_dsa, id_ecdsa ΠΈΠ»ΠΈ id_ed25519. Π€Π°ΠΉΠ» ΡΒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .pub β€” ваш ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, Π°Β Π²Ρ‚ΠΎΡ€ΠΎΠΉΒ β€” ваш ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ, сСкрСтный ΠΊΠ»ΡŽΡ‡. Если Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° .ssh у вас Π½Π΅Ρ‚, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ…Β ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Для этого Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.
  4. ДобавляСм ΠΊΠ»ΡŽΡ‡ Π² ssh-agent (сгСнСрированный ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ eval "$(ssh-agent -s)" и добавляСм ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ssh-add ~/.ssh/your_key_name, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎΒ Ρ„Π°ΠΉΠ»Π° ΡΒ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΈΒ Π΅Π³ΠΎ имя. ДобавляСм ΠΊΠ»ΡŽΡ‡ Π²Β shh-agent. НСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ:
    • Если Π²Ρ‹Β Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π˜Ρ…Β ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² ~/.ssh/config связь ΠΊΠ»ΡŽΡ‡Π° с домСном.
    • Если у вас Windows ΠΈΒ Π²Ρ‹Β ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Cmder, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с командой eval "$(ssh-agent -s)". ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠ΅ сообщСниС об ошибкС: Β«eval нС являСтся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΈΠ»ΠΈ внСшнСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, исполняСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌΒ».

      Π’Β Π‘mder для запуска ssh-agent ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ start-ssh-agent.

      Если ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡΡ‚Π°Π»Π°ΡΡŒ, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Β Git Bash.

    • Если у вас macOS Sierra вСрсии 10.12.2 ΠΈΒ Π²Ρ‹ΡˆΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ваш ~/.ssh/config Ρ„Π°ΠΉΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ автоматичСски Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ Π² ssh-agent ΠΈΒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ.
      Host *
       AddKeysToAgent yes
       UseKeychain yes
       IdentityFile ~/.ssh/id_rsa

      Π’Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свой ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² ssh-agent ΠΈΒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊΒ Π½Π΅ΠΌΡƒ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ssh-add -K ~/.ssh/id_rsa. Если ΡƒΒ Π²Π°ΡˆΠ΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ имя, Π½Π΅Β Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ id_rsa Π²Β ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½Π°Β ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.

    • Если у вас Linux, ΠΌΠΎΠΆΠ΅Ρ‚ понадобится ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ для ~/.ssh ΠΏΡ€Π°Π²Π° доступа ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ chmod 700 ~/.ssh/
  5. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ создан ΠΊΠ»ΡŽΡ‡, Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π°Β GitHub. Для этого ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ содСрТимоС ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ·Β ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:
    • Если Π²Ρ‹Β Π½Π°Β Windows clip .
    • Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ macOS pbcopy .
    • На Linux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ sudo apt-get install xclip, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для копирования ΠΏΠ°ΠΊΠ΅Ρ‚ xclip, Π°Β Π·Π°Ρ‚Π΅ΠΌ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ xclip -sel clip . Или Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cat ~/.ssh/id_rsa.pub, ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° появится прямо в консоли и вы смоТСтС ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ ΠΎΡ‚Ρ‚ΡƒΠ΄Π°.
    • МоТно ΠΏΠΎΠΉΡ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» id_rsa.pub прямо Π²Β ΠΏΠ°ΠΏΠΊΠ΅ и просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС ΠΎΡ‚Ρ‚ΡƒΠ΄Π°.

  6. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ на страницу для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡΒ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ в вашСм ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ Π½Π°Β GitHub. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° с настройками ΠΊΠ»ΡŽΡ‡Π΅ΠΉ в вашСм ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅.

    НаТимаСм ΠΊΠ½ΠΎΠΏΠΊΡƒ New SSH key (Π½ΠΎΠ²Ρ‹ΠΉ SSH-ΠΊΠ»ΡŽΡ‡). Π’Π²ΠΎΠ΄ΠΈΠΌ имя ΠΊΠ»ΡŽΡ‡Π° (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ любоС) Π²Β ΠΏΠΎΠ»Π΅ Title (Π½Π°Π·Π²Π°Π½ΠΈΠ΅), Π°Β Π²Β Key (ΠΊΠ»ΡŽΡ‡) вставляСм сам ΠΊΠ»ΡŽΡ‡ ΠΈΠ·Β Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Add SSH key (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ SSH-ΠΊΠ»ΡŽΡ‡).

    ДобавляСм в свой ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ SSH-ΠΊΠ»ΡŽΡ‡.

    Если всё сдСлано Π²Π΅Ρ€Π½ΠΎ, в спискС появится Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

    УспСшно Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ, ΠΌΡ‹Β ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с самим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.

Π Π°Π±ΠΎΡ‚Π° с рСпозиториями

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π­Ρ‚ΠΎ рабочая дирСктория с вашим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ. ΠŸΠΎΒ ΡΡƒΡ‚ΠΈ, это Ρ‚Π°Β ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ° с HTML, CSS, JavaScript ΠΈΒ ΠΏΡ€ΠΎΡ‡ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ хранится у вас Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, но находится на сСрвСрС GitHub. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с проСктом ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎ на любой машинС, нС пСрСТивая, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΈΠ·Β Π²Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ΡΡΒ β€” всС Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π²Ρ‹Β ΠΈΡ…Β Ρ‚ΡƒΠ΄Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅. Но об этом ΠΏΠΎΠ·ΠΆΠ΅.

Если Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ трудится ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, создаётся ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π²Β ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится рабочая вСрсия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π½Π°Π·ΠΎΠ²Ρ‘ΠΌ Π΅Π³ΠΎ мастСр-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ). ΠŸΡ€ΠΈ этом ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ сСбС Π²Β ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ с копиСй. Вакая копия называСтся Ρ„ΠΎΡ€ΠΊΠΎΠΌ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΊΒ β€” ваша ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ вСрсия мастСр-рСпозитория, Π²Β Π½Ρ‘ΠΌ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΒ Π½Π΅Β Π±ΠΎΡΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ в основной вСрсии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΊ мастСр-рСпозитория?

Π—Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π²Β Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π°Β Β«Π²ΠΈΠ»ΠΊΡƒΒ» с надписью fork. Π€ΠΎΡ€ΠΊ рСпозитория создан и находится в вашСм ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ Π½Π°Β GitHub.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΊ сСбС Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вСсти Ρ€Π°Π±ΠΎΡ‚Ρƒ с кодом локально. Π’ΡƒΡ‚ Π½Π°ΠΌ и пригодится SSH.

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ консоль, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π²Β Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, Π³Π΄Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ с проСктом, ΠΈΒ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git clone [email protected]:your-nickname/your-project.git

Если Π²Ρ‹Β ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроили SSH-ΠΊΠ»ΡŽΡ‡ΠΈ, Git Π½Π°Ρ‡Π½Ρ‘Ρ‚ процСсс копирования рСпозитория на ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Если Π²Ρ‹Β Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π²Β ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ написано Error: Permission denied (publickey), скорСС всСго, Π²Ρ‹Β ΠΎΡˆΠΈΠ±Π»ΠΈΡΡŒ Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ инструкции по настройкС SSH-ΠΊΠ»ΡŽΡ‡Π°. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ на нСсколько Π°Π±Π·Π°Ρ†Π΅Π² Ρ€Π°Π½Π΅Π΅ ΠΈΒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ процСсс настройки.

Если Π²Ρ‹Β Π½Π΅Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ адрСс рСпозитория, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΉΡ‚ΠΈ на страницу ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°ΠΆΠ°Ρ‚ΡŒ Π·Π΅Π»Ρ‘Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Clone orΒ download (ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ), Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Clone with SSH (ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΒ SSH) ΠΈΒ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится в тСкстовом ΠΏΠΎΠ»Π΅. Π­Ρ‚ΠΎΡ‚ адрСс Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Β ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git clone.

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ссли Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ с проСктом у вас Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΎΡΡŒ ΠΎΡ‚Β ΠΈΠΌΠ΅Π½ΠΈ рСпозитория, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ клонирования, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²Β ΠΊΠΎΠ½Ρ†Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅:

git clone [email protected]:_your-nickname_/_your-project_.git folder_name

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, на вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π²Β ΠΏΠ°ΠΏΠΊΠ΅ your_project ΠΈΠ»ΠΈ Π²Β Ρ‚ΠΎΠΉ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Β ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, находится полная копия рСпозитория cΒ GitHub.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с проСктом, Π½Π°Π΄ΠΎ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Β Π΅Π³ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cd, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° на вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅: cd your-project

Π‘Π΄Π΅Π»Π°Π»ΠΈ копию рСпозитория.

Π Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ принято вСсти Π²Β Π²Π΅Ρ‚ΠΊΠ°Ρ…. Π’Β ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Π° Π²Π΅Ρ‚ΠΊΠ°. Π­Ρ‚ΠΎ основная Π²Π΅Ρ‚ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ создаёт сам Git, ΠΎΠ½Π° называСтся master . ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Β Π½Π΅ΠΉ находится ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· ошибок. Если Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±Π°Π³, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Β ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, Π½ΠΎΒ Π½Π΅Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ в основной Π²Π΅Ρ‚ΠΊΠ΅, Π²Ρ‹Β ΠΎΡ‚Π²Π΅Ρ‚Π²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ ΠΈΠ· master ΠΈΒ Ρ‚Ρ€ΡƒΠ΄ΠΈΡ‚Π΅ΡΡŒ в своСй Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. Π—Π΄Π΅ΡΡŒ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свои ΠΈΠ΄Π΅ΠΈ, нС пСрСТивая, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄ сломаСтся. КаТдая Π²Π΅Ρ‚ΠΊΠ°Β β€” Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ второстСпСнной Π΄ΠΎΡ€ΠΎΠ³ΠΈ, которая Π·Π°Ρ‚Π΅ΠΌ снова соСдиняСтся с основной.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git branch. Она ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ список Π²Π΅Ρ‚ΠΎΠΊ, с которыми ΠΌΡ‹Β Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π²Β ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, и выдСляСт Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ. Если мы находимся Π² master создаём Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ: git checkout -b имя-Π½ΠΎΠ²ΠΎΠΉ-Π²Π΅Ρ‚ΠΊΠΈ.

Новая Π²Π΅Ρ‚ΠΊΠ°.

Если тСкущая Π²Π΅Ρ‚ΠΊΠ° Π½Π΅ master, сначала ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ Π²Β ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ: git checkout master. ΠœΡ‹Β Π΄Π΅Π»Π°Π΅ΠΌ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ новая Π²Π΅Ρ‚ΠΊΠ° содСрТала ΡΠ²Π΅ΠΆΡƒΡŽ, Π½Π°Β ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания, Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° позволяСт ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π²Β ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, послС git checkout Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

Если Π²Ρ‹Β ΠΎΡˆΠΈΠ±Π»ΠΈΡΡŒ Π²Β Π½Π°Π·Π²Π°Π½ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, допустили ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΡƒ, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git branch -m староС-имя-Π²Π΅Ρ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ΅-имя-Π²Π΅Ρ‚ΠΊΠΈ.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ вы создали Π²Π΅Ρ‚ΠΊΡƒ, ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π²Β Π½Π΅ΠΉ у сСбя Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΒ β€” Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Β Π½Π΅Β ΠΏΡ€ΠΎΠΏΠ°Π» ΠΈΒ Π²Β ΠΈΡ‚ΠΎΠ³Π΅ оказался Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Если Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния нС во всСх Ρ„Π°ΠΉΠ»Π°Ρ…, для Π½Π°Ρ‡Π°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git status. Она ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС в вашСй Π²Π΅Ρ‚ΠΊΠ΅, Π°Β ΠΈΠΌΠ΅Π½Π½ΠΎ список с названиями ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, ΠΈΒ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π°Β Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ записи и сохранСния (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ красным Ρ†Π²Π΅Ρ‚ΠΎΠΌ).

БостояниС Π²Π΅Ρ‚ΠΊΠΈ.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π²Β Π½Π°Π±ΠΎΡ€ этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git add имя-Ρ„Π°ΠΉΠ»Π°. Если Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠ°Ρ‚ΡŒ Tab и консоль сама ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π²Π°ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ ΠΊΒ Ρ„Π°ΠΉΠ»Ρƒ.

Если Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС измСнСния Ρ€Π°Π·ΠΎΠΌ, Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ git add -A.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹Β ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‚ΠΎΒ Π΅ΡΡ‚ΡŒ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС сохранённыС измСнСния ΠΈΒ Π΄Π°Ρ‚ΡŒ ΠΈΠΌΒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ дСлаСтся ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git commit -m "вашС сообщСниС". ВСкст сообщСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈΒ Π²Β Ρ‚ΠΎΒ ΠΆΠ΅ врСмя ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎΒ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚ (внСсённыС измСнСния). НапримСр, «добавляСт имя наставника Π²Β ReadmeΒ», Β«Π²Π²ΠΎΠ΄ΠΈΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сортировки ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉΒ», Β«ΠΏΡ€Π°Π²ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ в поискС Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² Π½Π°Β ΠΊΠ°Ρ€Ρ‚Π΅Β».

Π”Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚.

БохранСния зафиксированы, всё? Они Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΒ Π²ΠΈΠ΄Π½Ρ‹ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ? Пока Π½Π΅Ρ‚. ВС измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ мы внСсли и сохранили, ΠΏΠΎΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹. Π˜Ρ…Β Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Π½Π°Β GitHub.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свои измСнСния (ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹) Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π°Β GitHub, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git push origin Π½Π°Π·Π²Π°Π½ΠΈΠ΅-Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ-Π²Π΅Ρ‚ΠΊΠΈ, Π³Π΄Π΅ origin ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» склонирован Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Ρ‚ΠΎΒ Π΅ΡΡ‚ΡŒ ваш Ρ„ΠΎΡ€ΠΊ.

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ измСнСния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ на страницу нашСго Ρ„ΠΎΡ€ΠΊΠ° и создаём пулрСквСст, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ»ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ с данными в мастСр-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пулрСквСст? Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π›ΡŽΠ±ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ€Π³Π½ΡƒΡ‚ΡŒ. Π’Π°ΠΊΒ ΠΆΠ΅ и с пулрСквСстом. ПослС Π΅Π³ΠΎ создания, ΠΎΠ½Β Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π²ΡŒΡŽ ΠΈΒ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ»Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Β β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ GitHub, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²Π° администратора в мастСр-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π˜ΠΌΒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ваш ΠΊΠΎΠ»Π»Π΅Π³Π°-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Ρ‚Π΅Ρ…Π»ΠΈΠ΄, наставник. Если ΠΊΒ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ Π½Π΅Ρ‚ вопросов, пулрСквСст принимаСтся и измСнСния из вашСй Π²Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² master Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ рСпозитория. Если Π²Β ΠΊΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎ внСсти измСнСния, пулрСквСст отклоняСтся, ΠΈΒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ снова ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎΒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния — сохранСниС — ΠΊΠΎΠΌΠΌΠΈΡ‚Β β€” ΠΏΡƒΡˆ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пулрСквСст Π·Π°Π½ΠΎΠ²ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Β Π½ΡƒΠΆΠ½ΠΎ. Если Π²Ρ‹Β ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚Π΅ вСсти Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Β Ρ‚ΠΎΠΉΒ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠ΅ и пулрСквСст Π΅Ρ‰Ρ‘ нС принят, всС ваши измСнСния автоматичСски добавятся в пулрСквСст, созданный из этой Π²Π΅Ρ‚ΠΊΠΈ послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push origin Π½Π°Π·Π²Π°Π½ΠΈΠ΅-Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ-Π²Π΅Ρ‚ΠΊΠΈ.

Вы исправили ΠΊΠΎΠ΄, наставник ΠΈΠ»ΠΈ Ρ‚Π΅Ρ…Π»ΠΈΠ΄ ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΠ» ваши ΠΏΡ€Π°Π²ΠΊΠΈ и принял пулрСквСст. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ΄ в мастСр-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ обновился, а в вашСм Ρ„ΠΎΡ€ΠΊΠ΅ Π½Π΅Ρ‚, Π²Ρ‹Β Π²Π΅Π΄ΡŒ нС обновляли свою Π²Π΅Ρ€ΡΠΈΡŽ рСпозитория с тСх ΠΏΠΎΡ€, ΠΊΠ°ΠΊ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Сё сСбС Π½Π°Β ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Ρ„ΠΎΡ€ΠΊ Π²Β Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ состояниС.

  1. Π’Β Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git checkout master, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² master.
  2. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π±ΠΈΡ€Π°Π΅ΠΌ (подтягиваСм) измСнСния ΠΈΠ·Β Π²Π΅Ρ‚ΠΊΠΈ master мастСр-рСпозитория git pull academy master. Academy Π·Π΄Π΅ΡΡŒΒ β€” сокращённоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ мастСр-рСпозитория, Ρ‚Π°ΠΊΠΎΠ΅ имя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Β ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… студСнтов АкадСмии, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Π—Π°Π±ΠΈΡ€Π°Π΅ΠΌ измСнСния из мастСр-рСпозитория. Если консоль Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈΒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Β Π·Π½Π°Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с таким ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ссылку на этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:
    git remote add academy [email protected]:your-repo.git
    ВмСсто academy ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ своё Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΒ ΠΎΠ½ΠΎ закрСпится за этим Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ.
  3. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ измСнСния ΡƒΠΆΠ΅ из своСй Π²Π΅Ρ‚ΠΊΠΈ master в ваш Ρ„ΠΎΡ€ΠΊ Π½Π°Β GitHub ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push origin master. ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ измСнСния Π²Β Ρ„ΠΎΡ€ΠΊ.

Π“ΠΎΡ‚ΠΎΠ²ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„ΠΎΡ€ΠΊ ΠΈΒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ находятся Π²Β Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии.

руководство ΠΏΠΎ использованию / Π₯Π°Π±Ρ€

Rebase β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… способов ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ измСнСния, сдСланныС Π² ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ. ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ git ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ видят смысла ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ измСнСния, ΠΊΠΎΠ³Π΄Π° ΡƒΠΆΠ΅ ΠΈ Ρ‚Π°ΠΊ прСкрасно Π²Π»Π°Π΄Π΅ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ merge. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ использования rebase.

ВСория


Π˜Ρ‚Π°ΠΊ, освСТим тСорСтичСскиС знания ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ rebase. Для Π½Π°Ρ‡Π°Π»Π° Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ β€” Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Π²Π΅Ρ‚ΠΊΠΈ β€” master ΠΈ feature, ΠΎΠ±Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅, feature Π±Ρ‹Π»Π° создана ΠΎΡ‚ master Π² состоянии A ΠΈ содСрТит Π² сСбС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ C, D ΠΈ E. Π’ Π²Π΅Ρ‚ΠΊΡƒ master послС отдСлСния ΠΎΡ‚ Π½Π΅Π΅ Π²Π΅Ρ‚ΠΊΠΈ feature Π±Ρ‹Π» сдСлан 1 ΠΊΠΎΠΌΠΌΠΈΡ‚ B.

ПослС примСнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ rebase master Π² Π²Π΅Ρ‚ΠΊΠ΅ feature, Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ C’, D’ ΠΈ E’ β€” Π½Π΅ Ρ€Π°Π²Π½Ρ‹ C, D ΠΈ E, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ…Π΅ΡˆΠΈ, Π½ΠΎ измСнСния (Π΄Π΅Π»ΡŒΡ‚Ρ‹), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π² сСбС нСсут, Π² ΠΈΠ΄Π΅Π°Π»Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ… обусловлСно Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π±Π°Π·Ρƒ (Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС β€” A, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” B), отличия Π² Π΄Π΅Π»ΡŒΡ‚Π°Ρ…, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, обусловлСны Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹Ρ… ситуаций, Π²ΠΎΠ·Π½ΠΈΠΊΡˆΠΈΡ… ΠΏΡ€ΠΈ rebase. Об этом Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π΄Π°Π»Π΅Π΅.

Π’Π°ΠΊΠΎΠ΅ состояниС ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΏΡ€ΠΈ слиянии Π²Π΅Ρ‚ΠΊΠΈ feature Π² master Π²Π΅Ρ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объСдинСна ΠΏΠΎ fast-forward, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ΄ Π² Π²Π΅Ρ‚ΠΊΠ΅ feature Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ измСнСния сдСланныС Π² Π²Π΅Ρ‚ΠΊΠ΅ master Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ B.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ rebase-Π° Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ разбСрСмся с ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΎΠΉ этого процСсса, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ 1 ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ 2?

Напомню, ΠΏΠ΅Ρ€Π΅Π΄ rebase Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄Ρ‚Π΅ΡΡŒ Π² Π²Π΅Ρ‚ΠΊΠ΅ feature, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ваш HEAD смотрит Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ feature, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ смотрит Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ E. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Π΅Ρ‚ΠΊΠΈ master Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚:

git rebase master

Для Π½Π°Ρ‡Π°Π»Π° git Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ β€” ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ этих Π΄Π²ΡƒΡ… состояний. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΊΠΎΠΌΠΌΠΈΡ‚ A. Π”Π°Π»Π΅Π΅ двигаясь Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ вашСго Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ HEAD git вычисляСт Ρ€Π°Π·Π½ΠΈΡ†Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС ΠΌΠ΅ΠΆΠ΄Ρƒ A ΠΈ Π‘, Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π΅ Ξ”AC. Π­Ρ‚Π° Π΄Π΅Π»ΡŒΡ‚Π° примСняСтся ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π²Π΅Ρ‚ΠΊΠΈ master. Если ΠΏΡ€ΠΈ этом Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½ΠΎΠ΅ состояниС, создаСтся ΠΊΠΎΠΌΠΌΠΈΡ‚ C’, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ C’ = B + Ξ”AC. Π’Π΅Ρ‚ΠΊΠΈ master ΠΈ feature ΠΏΡ€ΠΈ этом Π½Π΅ ΡΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, HEAD пСрСмСщаСтся Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ (C’), приводя ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ состояниС Β«ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²Ρ‹Β» (detached HEAD).

УспСшно создав ΠΊΠΎΠΌΠΌΠΈΡ‚ C’, git ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ пСрСносу ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ β€” Ξ”CD. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ этих ΠΈΠ·ΠΌΠ΅Π½Π½ΠΈΠΉ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ C’ Π²ΠΎΠ·Π½ΠΈΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚. ΠŸΡ€ΠΎΡ†Π΅ΡΡ rebase останавливаСтся (ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π½Π°Π±Ρ€Π°Π² git status Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² состоянии detached HEAD). ИзмСнСния, внСсСнныС Ξ”CD находятся Π² вашСй Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΈ (ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹Ρ…) ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ (ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€ΠΎΠΌ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° stage-Π·ΠΎΠ½Π°):

Π”Π°Π»Π΅Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

1. ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ процСсс rebase Π½Π°Π±Ρ€Π°Π² Π² консоли

git rebase --abort

ΠŸΡ€ΠΈ этом ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ HEAD, Π±ΡƒΠ΄Π΅Ρ‚ пСрСнСсСн ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ feature, Π° ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ повиснут Π² Π²ΠΎΠ·Π΄ΡƒΡ…Π΅ (Π½Π° Π½ΠΈΡ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ) ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ вскорС ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.

2. Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π² вашСм любимом merge-tool’Π΅, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, Π½Π°Π±Ρ€Π°Π² git add %filename%. ΠŸΡ€ΠΎΠ΄Π΅Π»Π°Π² это со всСми ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ процСсс rebase-Π° Π½Π°Π±Ρ€Π°Π² Π² консоли

git rebase --continue

ΠŸΡ€ΠΈ этом, Ссли всС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹, Π±ΡƒΠ΄Π΅Ρ‚ создан ΠΊΠΎΠΌΠΌΠΈΡ‚ D’ ΠΈ rebase ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ послСднСму ΡˆΠ°Π³Ρƒ.

3. Если измСнСния, сдСланныС ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° B ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° D ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΌΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅Β» измСнСния сдСланы Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ B, Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ смоТСтС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π½Π°Π±Ρ€Π°Π² git rebase --continue, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠΎΠΏΠΈΠΈ Π½Π΅Ρ‚. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ созданиС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° D’, Π½Π°Π±Ρ€Π°Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

git rebase --skip

ПослС примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ξ”DE Π±ΡƒΠ΄Π΅Ρ‚ создан послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ E’, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚ΠΊΠΈ feature Π±ΡƒΠ΄Π΅Ρ‚ установлСн Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ E’, Π° HEAD станСт ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ feature β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² состоянии Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ рисункС, rebase ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ C, D ΠΈ E Π²Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

ΠŸΡ€ΠΈ этом ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, созданныС Π² процСссС rebase-Π°, Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΎΠ± ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π°Π²Ρ‚ΠΎΡ€Π΅ ΠΈ Π΄Π°Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Author), Ρ‚Π°ΠΊ ΠΈ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, сдСлавшСм rebase (Commiter):

commit 0244215614ce6886c9e7d75755601f94b8e19729
Author:     sloot69 <***@****.com>
AuthorDate: Mon Nov 26 13:19:08 2012 +0400
Commit:     Alex <***@****.com>
CommitDate: Mon Nov 26 13:33:27 2012 +0400

Π‘ нСбСс Π½Π° зСмлю β€” rebase Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях


На самом Π΄Π΅Π»Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π΅ с двумя Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, Π° с Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ Π² самом простом случаС: master, origin/master, feature ΠΈ origin/feature. ΠŸΡ€ΠΈ этом rebase Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΊΠ°ΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠΎΠΉ ΠΈ Π΅Π΅ origin-ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ feature ΠΈ origin/feature, Ρ‚Π°ΠΊ ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ feature ΠΈ master.
Rebase Π²Π΅Ρ‚ΠΊΠΈ с origin-ΠΎΠΌ

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с rebase, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго Π½Π°Ρ‡Π°Ρ‚ΡŒ с Ρ€Π΅Π±Π΅ΠΉΠ·Π° своих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π²Π΅Ρ‚ΠΊΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Π΅ ΠΊΠΎΠΏΠΈΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ добавляСтС ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ добавляСтся ΠΊΠΎΠΌΠΌΠΈΡ‚, для объСдинСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ merge. Выглядит это ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ ΡƒΠΌΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ β€” 3 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π²Π΅Ρ‚ΠΊΠΎΠΉ master Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ. ДСлая ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠΈΡ‚Ρ‹ Π½Π° своих ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… ΠΎΠ½ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎ 1 измСнСнию Π² Π²Π΅Ρ‚ΠΊΡƒ. ΠŸΡ€ΠΈ этом ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ отправляСт ΠΈΡ… Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ сталкиваСтся с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ git push origin master, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½Π΅ΠΉ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ синхронизированы Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Оба Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° (2 ΠΈ 3) Π΄Π΅Π»Π°ΡŽΡ‚ git pull origin master, создавая ΠΏΡ€ΠΈ этом Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ merge-ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Ρƒ сСбя Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ git push ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ измСнСния снова сталкиваСтся с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ снова Π΄Π΅Π»Π°Π΅Ρ‚ git pull, создавая Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ merge-ΠΊΠΎΠΌΠΌΠΈΡ‚. И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄Π΅Π»Π°Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ git push origin master. Если ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ располоТСн Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° github, Ρ‚ΠΎ network, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π³Ρ€Π°Ρ„ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:


Π’Ρ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ Π² 6 (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ считаСм), история ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π½Π°, информация ΠΎΠ± объСдинСнии Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ, Π½Π° ΠΌΠΎΠΉ взгляд, лишняя. Если ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π½Π° нСсколько тСматичСских Π²Π΅Ρ‚ΠΎΠΊ ΠΈ большСС количСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π³Ρ€Π°Ρ„ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

Анализ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ‚Π°ΠΊΠΎΠΌ Π³Ρ€Π°Ρ„Π΅ Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΠ΅ занятиС. Как Ρ‚ΡƒΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ rebase?
Если вмСсто git pull origin master Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git pull --rebase origin master, Ρ‚ΠΎ ваши Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ C, D ΠΈ E ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄ΡƒΡ‚ пСрСнСсСны Π½Π°Π²Π΅Ρ€Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ состояния Π²Π΅Ρ‚ΠΊΠΈ origin/master, позволяя Π±Π΅Π· создания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git push origin master. Π’ΠΎ Π΅ΡΡ‚ΡŒ слияниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡƒΠΆΠ΅ Ρ‚Π°ΠΊ:

Как Π²ΠΈΠ΄Π½ΠΎ, Β«Π»ΠΈΡˆΠ½ΠΈΡ…Β» merge-ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² создано Π½Π΅ Π±Ρ‹Π»ΠΎ, ваши измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ C Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для создания ΠΊΠΎΠΌΠΌΠΈΡ‚Π° C’. Π‘Π°ΠΌ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ C остался Ρƒ вас Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ, Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ C’. Если всС программисты Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΠΎΠ·ΡŒΠΌΡƒΡ‚ Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ git pull --rebase, Ρ‚ΠΎΠ³Π΄Π° каТдая ΠΈΠ· Π²Π΅Ρ‚ΠΎΠΊ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ.

Как ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π²Π΅Ρ‚ΠΊΠΎΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ rebase, с ΠΊΠΎΠ»Π»Π΅Π³ΠΎΠΉ

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ процСсс rebase-Π° локальной тСматичСской Π²Π΅Ρ‚ΠΊΠΈ ΠΎΡ‚ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π΅Ρ‚ΠΊΠΈ master Π±Ρ‹Π» рассмотрСн Π² самом Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠžΠ³ΠΎΠ²ΠΎΡ€ΡŽΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ процСсс rebase содСрТит количСство шагов Ρ€Π°Π²Π½ΠΎΠ΅ количСству ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² вашСй локальной Π²Π΅Ρ‚ΠΊΠ΅. Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΊ ΠΈ Π² случаС с merge, растСт ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ росту количСства ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ (master). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ пСриодичСски ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ rebase для Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… тСматичСских Π²Π΅Ρ‚ΠΎΠΊ. Но Ссли тСматичСская Π²Π΅Ρ‚ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ свой ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ? Если Π΄Π΅Π»Π°Ρ‚ΡŒ push ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ приняты ΠΏΠΎ fast-forward, Π° Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, это Π½Π΅ Ρ‚Π°ΠΊ:

Π’ΡƒΡ‚ всС просто, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² консоли ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git push origin feature --force

Force-Ρ€Π΅ΠΆΠΈΠΌ просто ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²Π΅Ρ‚ΠΊΠΈ feature Π½Π° origin ΠΈ насильно устанавливаСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΈ ваш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ.

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹! Если Π²Ρ‹ Π·Π°Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Π΅Ρ‚ΠΊΠΈ, Ρ‚ΠΎ force-push Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ для всСх Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π». ΠŸΡ€ΠΈ этом Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π² Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии. Π’ΠΎ Π΅ΡΡ‚ΡŒ измСнСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ успСли Π·Π°Ρ‚ΡΠ½ΡƒΡ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π² origin-Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, сами ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ β€” сбросятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π²Π΅Ρ‚ΠΊΠΈ. Π­Ρ‚Π° ситуация ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌΠ° β€” достаточно для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π½Π°ΠΉΡ‚ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ послСдним ΠΏΡƒΡˆΠΈΠ» измСнСния Π² Π½Π΅Π΅ ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ успСл ΠΈΡ… Π·Π°Π±Ρ€Π°Ρ‚ΡŒ. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ push, вновь ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΠΈΡ… Π½Π° origin. Но вся эта ΠΌΠΎΡ€ΠΎΠΊΠ° Π²Π°ΠΌ Π½ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ просто Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹.

Π’Π°Ρˆ ΠΊΠΎΠ»Π»Π΅Π³Π°, находится Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ситуации ΠΏΠ΅Ρ€Π΅Π΄ pull, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ сдСлали push. Волько ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ feature ΠΈ origin/feature ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Если ΠΎΠ½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ git pull origin feature, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° объСдинСния старой ΠΈ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ merge. Π’Π°ΠΊ ΠΊΠ°ΠΊ старая ΠΈ новая Π²Π΅Ρ‚ΠΊΠΈ содСрТат ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ измСнСния, Ρ‚ΠΎ всС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹ΠΌΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°ΠΌ снова ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

git pull --rebase origin feature

Она Π·Π°Π±Π΅Ρ€Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ feature ΠΈ пСрСмСстит Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния вашСго ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π½Π° Π΅Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ.
Π’ΠΎΠΎΠ±Ρ‰Π΅ git pull --rebase origin feature β€” это Π±Π΅Π·ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли rebase Π½Π΅ трСбуСтся, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ объСдинСниС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎ fast-forward.

РСинтСграция тСматичСской Π²Π΅Ρ‚ΠΊΠΈ Π² master


ΠœΡ‹ рассмотрСли всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π² стилС rebase. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π² Π²Π΅Ρ‚ΠΊΡƒ master ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git merge feature. Π’Π΅Ρ‚ΠΊΠ°, подготовлСнная rebase-ΠΎΠΌ Π²ΠΎΠ»ΡŒΠ΅Ρ‚ΡΡ Π² master ΠΏΠΎ fast-forward, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ Π²ΠΏΠ΅Ρ€Π΅Π΄.

Однако, Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ нСдостаток β€” послС merge ΠΏΠΎ fast-forward Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ сдСланы Π² вашСй Π²Π΅Ρ‚ΠΊΠ΅, Π° ΠΊΠ°ΠΊΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, Π²Π»ΠΈΡ‚ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄ вашСй ΠΈΠ»ΠΈ нСпосрСдствСнно Π² мастСрС. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ принятиС Π² вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° β€” ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· тСматичСской Π²Π΅Ρ‚ΠΊΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ merge с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ —no-ff. ΠŸΡ€ΠΈ этом Π±ΡƒΠ΄Π΅Ρ‚ создан merge-ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ позиция Π²Π΅Ρ‚ΠΊΠΈ master, Π΄Ρ€ΡƒΠ³ΠΈΠΌ β€” позиция Π²Π΅Ρ‚ΠΊΠΈ feature. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ Π³Ρ€Π°Ρ„ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΏΡ€ΠΈ объСдинСнии Π²Π΅Ρ‚ΠΎΠΊ ΠΏΠΎ fast-forward (слСва) ΠΈ c merge-ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ —no-ff (справа):


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

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


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

Π’ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ руководствС ΠΏΠΎ git ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ rebase ΠΊ Π²Π΅Ρ‚ΠΊΠ΅, которая Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡˆΠ΅Π½Π° Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ, приводятся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с merge-Π΅ΠΌ старой Π²Π΅Ρ‚ΠΊΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ rebase (хранящСйся Ρƒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ, ΠΊΡ‚ΠΎ успСл Π΅Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ· рСпозитария) ΠΈ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ ΠΈ появлСнию ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Ρ‚Π°ΠΌΠΈ ΠΈ сообщСниями Π² Π»ΠΎΠ³Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, здСсь ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git pull —rebase.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ сдСлано ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅. ВсС это Π²Π΅Ρ€Π½ΠΎ ΠΏΡ€ΠΈ простой ΠΌΠΎΠ΄Π΅Π»ΠΈ вСтвлСния β€” Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° главная Π²Π΅Ρ‚ΠΊΠ° master ΠΈ нСсколько тСматичСских, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π½Π΅Π΅. Когда ΠΎΡ‚ тСматичСской Π²Π΅Ρ‚ΠΊΠΈ создаСтся другая тСматичСская Π²Π΅Ρ‚ΠΊΠ°, Π΅ΡΡ‚ΡŒ свои Π½ΡŽΠ°Π½ΡΡ‹ ΠΏΡ€ΠΈ rebase-Π΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΉ ΠΈ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ. О Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ самом ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ руководствС.

Иногда споры, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ merge ΠΈΠ»ΠΈ rebase доходят Π΄ΠΎ Ρ…ΠΎΠ»ΠΈΠ²Π°Ρ€Π°. ΠžΡ‚ сСбя ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС Π²Ρ‹Π±ΠΎΡ€ Π·Π° Π²Π°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ этот Π²Ρ‹Π±ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π½ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ владСния Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ инструмСнтом. ΠžΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° для вас Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π² Ρ‚ΠΎΠΌ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ стилС. Π― Π½Π΅ Π°Π³ΠΈΡ‚ΠΈΡ€ΡƒΡŽ Π·Π° повсСмСстноС использованиС rebase-Π°, Π° просто объясняю ΠΊΠ°ΠΊ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. НадСюсь, это ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠ½ΡΡ‚ΡŒ вопросы, связанныС с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ rebase ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π² Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

PS. Π₯ΠΎΡ‡Ρƒ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ своих ΠΊΠΎΠ»Π»Π΅Π³, ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ бСсСды с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΠΌΠ½Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π² основу этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Моя ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git

НСкотороС врСмя Π½Π°Π·Π°Π΄ я ΠΎΡ‚ΠΊΡ€Ρ‹Π» для сСбя Git. И Π·Π½Π°Π΅Ρ‚Π΅, я проникся. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠΎ-настоящСму проникся. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Git Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ (Π³Π΄Π΅ я с Π½ΠΈΠΌ, собствСнно, познакомился), Π½ΠΎ ΠΈ для своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я стал Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π° BitBucket. ПослСдний Π½Π°Ρ‡Π°Π» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Git ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ GitHub, BitBucket позволяСт ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ бСсплатно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π’ Ρ‡Π΅ΠΌ состоит ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Git ΠΎΡ‚ Subversion?

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Git ΠΎΡ‚ Subversion Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Git β€” распрСдСлСнная систСма контроля вСрсий. Π—Π²ΡƒΡ‡ΠΈΡ‚ ΡƒΠΆΠ°ΡΠ°ΡŽΡ‰Π΅, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π²Π΅Ρ‰ΡŒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄Π΅Ρ€ΠΆΠΈΡ‚ Ρƒ сСбя Π½Π° дискС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ β€” Π½Π΅ копию рСпозитория, Π½Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ€Π°Π½Ρ‡ΠΈ, Π° Ρ‚ΡƒΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΈ этом Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Пока ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… своСго рСпозитория, всС происходит Π² точности, ΠΊΠ°ΠΊ Π² Subversion. ΠœΡ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠΌ ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅ΠΌ измСнСния, создаСм, ΠΌΠ΅Ρ€ΠΆΠΈΠΌ ΠΈ удаляСм Π±Ρ€Π°Π½Ρ‡ΠΈ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈ Ρ‚Π΄. Помимо этого, прСдусмотрСны ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСпозиториями Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…. НапримСр, Β«git pushΒ» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ€ΠΆ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π° Β«git pullΒ» β€” Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΌΠ΅Ρ€ΠΆ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ. ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎ сСти ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ происходит с использованиСм ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° SSH.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΠΌΠ΅Π΅ΠΌ:

  • Git присущи всС Ρ‚Π΅ ΠΆΠ΅ прСимущСства ΠΎΡ‚ использования VCS, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π² Subversion.
  • Git Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ», Π±Π΅Π·ΠΎ всяких Ρ‚Π°Π½Ρ†Π΅Π² с Π±ΡƒΠ±Π½Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Π² случаС с Subversion.
  • Если сСрвСр с Β«Π³Π»Π°Π²Π½Ρ‹ΠΌΒ» Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ, ΠΊΡƒΠ΄Π° ΠΏΡƒΡˆΠ°Ρ‚ свои измСнСния всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (хотя Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π² Git Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Β«Π³Π»Π°Π²Π½ΠΎΠ³ΠΎΒ» рСпозитория), Π²Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΈΠ»Π΅Π³ β€” Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ. Π”Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΆΠ΄Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° сСрвСр вСрнСтся.
  • Π”Π°ΠΆΠ΅ Ссли сСрвСр доступСн, всС Ρ€Π°Π²Π½ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ пяток Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° сСрвСр ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡƒΡˆΠ΅ΠΌ.
  • Π‘Π΅Ρ€Π²Π΅Ρ€ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Git Ρ‚ΠΎΠ»ΡŒΠΊΠΎ локально. И Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с исходниками. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Git для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ вСрсиям Ρ„Π°ΠΉΠ»ΠΎΠ² (ΠΊΠ°ΠΊΠΈΡ…-Π½ΠΈΠ±ΡƒΠ΄ΡŒ элСктронных Ρ‚Π°Π±Π»ΠΈΡ†) ΠΈΠ»ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ случайно ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅.
  • Git Π½Π΅ раскидываСт ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ ΡΠ»ΡƒΠΆΠ΅Π±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Β«.svnΒ»?), вмСсто этого ΠΎΠ½Π° хранится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΡ€Π½Π΅ рСпозитория.
  • Git Π½Ρ‹Π½Ρ‡Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΠ΄Π΅Π½ (хотя это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ СдинствСнная распрСдСлСнная систСма контроля вСрсий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΅ΡΡ‚ΡŒ Mercurial ΠΈ Darcs), Π² связи с Ρ‡Π΅ΠΌ растСт число Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ. Как слСдствиС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Git, Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΠΎΡ€ΡƒΠΌΠ΅ ΠΈΠ»ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с этой VCS.
  • БущСствуСт мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Git β€” Qgit, gitk, gitweb ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. «Из ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ» Π΅ΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈ экспорт Π²/ΠΈΠ· Subversion/CVS.
  • Git ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ хостинги Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² (GitHub, BitBucket, SourceForge, Google Code, …) β€” Π΅ΡΡ‚ΡŒ ΠΈΠ· Ρ‡Π΅Π³ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ.
  • Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ GitHub. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Git, Π²Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚Π΅ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ Π±Π΅Π·Π²ΠΎΠ·ΠΌΠ΅Π·Π΄Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡ для вашСго open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

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

Π― использовал Git ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ГСнСрация ΠΏΠΎΡ‡Ρ‚ΠΈ осмыслСнных тСкстов Π½Π° Haskell, сидя ΠΏΠΎΠ΄ своСй любимой FreeBSD. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ выглядСла моя Ρ€Π°Π±ΠΎΡ‚Π° с Git.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Git:

Π—Π°Ρ‚Π΅ΠΌ создаСм ΠΏΠ°Ρ€Ρƒ ssh ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ссли Π½Π΅ создавали Π΅Π΅ Ρ€Π°Π½Π΅Π΅:

ssh-keygen
cat ~/.ssh/id_rsa.pub

Π—Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° Π‘ΠΈΡ‚Π‘Π°ΠΊΠ΅Ρ‚, создаСм git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΠ΄ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° Π² свойствах Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° прописываСм свой ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ssh-ΠΊΠ»ΡŽΡ‡. Π—Π°Ρ‚Π΅ΠΌ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

cd ~/projects/haskell
git clone [email protected]:afiskon/hs-textgen.git
cd hs-textgen

Π”Π΅Π»Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ измСнСния:

ДобавляСм Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚:

git add TODO.TXT
git commit -a

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я Π½Π΅ ΡƒΠΊΠ°Π·Π°Π» описаниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, запускаСтся Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ VIM, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ я ΠΈ Π²Π²ΠΎΠΆΡƒ описаниС. Π—Π°Ρ‚Π΅ΠΌ я ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽ всС сдСланныС мною измСнСния Π½Π° Π‘ΠΈΡ‚Π‘Π°ΠΊΠ΅Ρ‚:

Допустим, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я Ρ…ΠΎΡ‡Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π½ΠΎ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Π»ΠΈ ΠΈΠ· этого Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях создаСтся новая Π²Π΅Ρ‚ΠΊΠ°:

git branch new_feature
git checkout new_feature

Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с этой Π²Π΅Ρ‚ΠΊΠΎΠΉ. Если Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π½Π΅ Π²Ρ‹ΡˆΠ»ΠΎ, возвращаСмся ΠΊ основной Π²Π΅Ρ‚ΠΊΠ΅ (ΠΎΠ½Π° ΠΆΠ΅ Β«trunkΒ» ΠΈΠ»ΠΈ «ствол»):

Если Π²Ρ‹ΡˆΠ»ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅, ΠΌΠ΅Ρ€ΠΆΠΈΠΌ Π²Π΅Ρ‚ΠΊΡƒ Π² master (ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² рассказано Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅):

git commit -a # Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² new_feature
git checkout master # ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ Π½Π° master
git merge new_feature # ΠΌΠ΅Ρ€ΠΆΠΈΠΌ Π²Π΅Ρ‚ΠΊΡƒ new_feature

НС Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ наш ΠΊΠΎΠ΄ Π½Π° BitBucket:

Если ΠΌΡ‹ ΠΏΡ€Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ Β«Π½Π°ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΒ» Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ΄Π°:

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

Fun fact! Нравится ΡΡ‚Π°Ρ‚ΡŒΡ? ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈ Π°Π²Ρ‚ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ ΠΏΠΈΡΠ°Ρ‚ΡŒ большС ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… статСй!

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Git ΠΏΠΎΠ΄ Windows ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ TortoiseGit. Если ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ‚, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ Git for Windows. Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ PuTTyGen. Волько Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Β«Conversions β†’ Export OpenSSH keyΒ».

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π»ΠΈΡ‡Π½ΠΎ TortoiseGit показался Π½Π΅ слишком ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это всСго лишь Π΄Π΅Π»ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠΈ, Π½ΠΎ ΠΌΠ½Π΅ каТСтся Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Git ΠΈΠ· консоли, Ρ‡Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ контСкстного мСню Π² ΠŸΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ΅.

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ

Π’ этом ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° сухая ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Git. Π― Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ спСц Π² этой систСмС контроля вСрсий, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ошибки Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Π² Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹. Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΎΡ‚ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ, поТалуйста, Π² коммСнтариях.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ ssh с ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‚Π°ΠΊΠΆΠ΅ скаТитС:

git config —bool core.bare true

… ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈ git push Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ странныС ошибки Π²Ρ€ΠΎΠ΄Π΅:

Refusing to update checked out branch: refs/heads/master
By default, updating the current branch in a non-bare repository
is denied, because it will make the index and work tree inconsistent
with what you pushed, and will require ‘git reset —hard’ to match
the work tree to HEAD.

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹:

git clone [email protected]:afiskon/hs-textgen.git

Если Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡƒΡˆΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ΄ Π² нСсколько Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²:

git remote add remotename [email protected]:repo.git

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»:

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС рСпозитория (измСнСния, Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈ Ρ‚ΠΏ):

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚:

git commit -a -m «Commit description»

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, ввСдя Π΅Π³ΠΎ описаниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ $EDITOR:

Π—Π°ΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ всС Π²Π΅Ρ‚ΠΊΠΈ локального рСпозитория Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ вмСсто origin ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈ remotename, см Π²Ρ‹ΡˆΠ΅):

Аналогично ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ, Π½ΠΎ дСлаСтся ΠΏΡƒΡˆ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ‚ΠΊΠΈ master:

Π—Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Π½Π΅ вводя Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅:

Π—Π°ΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ всС Π²Π΅Ρ‚ΠΊΠΈ с ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория:

Аналогично ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ, Π½ΠΎ накатываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ‚ΠΊΠ° master:

ΠΠ°ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Π½Π΅ вводя Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ имя:

Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ всС Π²Π΅Ρ‚ΠΊΠΈ с origin, Π½ΠΎ Π½Π΅ ΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ ΠΈΡ… Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

Аналогично ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ:

ΠΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²Π΅Ρ‚ΠΊΠΎΠΉ some_branch (ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ):

git checkout -b some_branch origin/some_branch

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π±Ρ€Π°Π½Ρ‡ (отвСтвится ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ):

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ (ΠΈΠ· Ρ‚Π΅Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ):

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ список Π²Π΅Ρ‚ΠΎΠΊ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ:

git branch # Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° тСкущая Π²Π΅Ρ‚Π²ΡŒ

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ‚Π²ΠΈ:

git branch -a # | grep something

Π—Π°ΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ some_branch Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ:

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π±Ρ€Π°Π½Ρ‡ (послС ΠΌΠ΅Ρ€ΠΆΠ°):

git branch -d some_branch

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π±Ρ€Π°Π½Ρ‡ (тупиковая Π²Π΅Ρ‚Π²ΡŒ):

git branch -D some_branch

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС:

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

Аналогично ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ, Π½ΠΎ с просмотром сдСланных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ псСвдографичСским ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ€Π°Π½Ρ‡Π΅ΠΉ:

ИзмСнСния, сдСланныС Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅:

git show d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ΅ΠΌ Π² послСдний Ρ€Π°Π· ΠΏΡ€Π°Π²ΠΈΠ»Π°ΡΡŒ каТдая строка Ρ„Π°ΠΉΠ»Π°:

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π±Ρ€Π°Π½Ρ‡ ΠΈΠ· рСпозитория Π½Π° сСрвСрС:

git push origin :branch-name

ΠžΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ (Ρ…ΡΡˆ смотрим Π² Β«git logΒ»):

git reset —hard d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4

Аналогично ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ, Π½ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° дискС ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

git reset —soft d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4

ΠŸΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ commit:

git revert d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (суммарных, Π° Π½Π΅ всСх ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, ΠΊΠ°ΠΊ Π² Β«git logΒ»):

git diff # подробности см Π² «git diff —help»

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ vimdiff Π² качСствС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² (mergetool) ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

git config —global merge.tool vimdiff

ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ Β«ΠΊΠ°ΠΊΠΎΠΉ mergetool Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΒ»:

git config —global mergetool.prompt false

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Ρ‚Π°Π±Ρ‹ ΠΊΠ°ΠΊ 4 ΠΏΡ€ΠΎΠ±Π΅Π»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Β«git diffΒ»:

git config —global core.pager ‘less -x4’

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ глобального Ρ„Π°ΠΉΠ»Π° .gitignore:

git config —global core.excludesfile ~/.gitignore_global

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² (ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΠ΅Ρ€ΠΆΠ°):

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ тэга:

git tag some_tag # Π·Π° тэгом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ untracked files:

Β«Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°Β» рСпозитория для увСличСния скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ:

Иногда трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию рСпозитория ΠΈΠ»ΠΈ пСрСнСсти Π΅Π³ΠΎ с ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Π­Ρ‚ΠΎ дСлаСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

mkdir -p /tmp/git-copy
cd /tmp/git-copy
git clone —bare [email protected]:afiskon/cpp-opengl-tutorial1.git
cd cpp-opengl-tutorial1.git
git push —mirror [email protected]:afiskon/cpp-opengl-tutorial2.git

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Git позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ запись Ρ…ΡΡˆΠ΅ΠΉ. ВмСсто Β«d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4Β» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Β«d8578edfΒ» ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Β«d857Β».

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: Π’Π°ΠΊΠΆΠ΅ Π² 6-ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ Мини-Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ Π½ΠΎΠΌΠ΅Ρ€ 9 приводится ΠΏΡ€ΠΈΠΌΠ΅Ρ€ объСдинСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git rebase, Π° Π² 10-ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ Мини-Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ Π½ΠΎΠΌΠ΅Ρ€ 11 Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ объСдинСния Π΄Π²ΡƒΡ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π² ΠΎΠ΄ΠΈΠ½ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ истории.

Π Π°Π±ΠΎΡ‚Π° с сабмодулями

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ сабмодули ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ кроссплатформСнный OpenGL-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° C++. Π—Π΄Π΅ΡΡŒ упомянСм самоС Π³Π»Π°Π²Π½ΠΎΠ΅.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ°Π±ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

git submodule add https://github.com/glfw/glfw glfw

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ сабмодулСй:

ОбновлСниС сабмодулСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли послС git pull помСнялся ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смотрит ΡΠ°Π±ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ сабмодуля производится Ρ‚Π°ΠΊ:

  1. Π‘ΠΊΠ°ΠΆΠΈΡ‚Π΅ git rm --cached имя_сабмодуля;
  2. Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ строчки ΠΈΠ· Ρ„Π°ΠΉΠ»Π° .gitmodules;
  3. Π’Π°ΠΊΠΆΠ΅ Π³Ρ€ΠΎΡ…Π½ΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ Π² .git/config;
  4. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚;
  5. Π£Π΄Π°Π»ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ сабмодуля;
  6. Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ .git/modules/имя_сабмодуля;

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Π’ качСствС источников Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ я Π±Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π»ΡŽΠ±Ρ‹Π΅ замСчания, дополнСния ΠΈ вопросы катСгоричСски ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ. И кстати, с Π½Π°ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΌ вас!

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с систСмами контроля вСрсий

ΠœΠ΅Ρ‚ΠΊΠΈ: Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Git? — Π‘Π±ΠΎΡ€ΠΊΠ° Smart. Π‘Π±ΠΎΡ€ΠΊΠ° БСзопасная. IBM Developer

Git — это ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ исходного ΠΊΠΎΠ΄Π°. Он Π±Ρ‹Π» создан создатСлСм Linux Линусом Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄ΡΠΎΠΌ для управлСния исходным ΠΊΠΎΠ΄ΠΎΠΌ ядра Linux. Π¦Π΅Π»Ρ‹Π΅ сСрвисы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ GitHub, основаны Π½Π° Π½Π΅ΠΌ. Он Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² IBM DevOps Services вмСстС с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ исходного ΠΊΠΎΠ΄Π° IBM Rational Team Concert β„’. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠΈΡ€Π΅ Linux ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DevOps Services ΠΎΡ‚ IBM с Git, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Git.

Когда я Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Git, Ρƒ мСня Π±Ρ‹Π» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Concurrent Versions System (CVS) ΠΈ Apache Subversion (SVN), поэтому я попытался ΠΏΠΎΠ½ΡΡ‚ΡŒ это с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния этих классичСских систСм рСпозитория исходного ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΎΠ΅ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π»ΠΎ ΠΌΠ½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ возмоТностСй Git. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ я стал Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Git, поэтому эта ΡΡ‚Π°Ρ‚ΡŒΡ являСтся своСго Ρ€ΠΎΠ΄Π° Β«ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ΠΌ ΠΊ сСбС», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΌΠ½Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Git, ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Π΅Π³ΠΎ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±ΠΎΠ»Π΅Π΅ классичСскими рСпозиториями исходного ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ CVS ΠΈΠ»ΠΈ SVN.

ΠžΡΠ½ΠΎΠ²Ρ‹

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² классичСском Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ исходного ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ Π½Π° рисункС 1. Π’ классичСском Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ исходного ΠΊΠΎΠ΄Π° ΠΏΠ°ΠΏΠΊΠ° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ обрабатываСтся ΠΊΠ°ΠΊ содСрТимоС (CVS ΠΈ Git фактичСски Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠ°ΠΏΠΊΠΈ ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΡƒΡ‚ΠΈ ΠΏΡƒΡ‚ΠΈ). Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ хранятся всС вСрсии ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ — это мСсто, Π³Π΄Π΅ Π²Ρ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄. Π’Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚Π΅ ΠΊΠΎΠ΄ ΠΈΠ· рСпозитория Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ фиксируСтС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ сдСлали Π² этом Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ содСрТимого Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Рисунок 1. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° исходного ΠΊΠΎΠ΄Π°
Commit sends to a repository, checkout retrieves

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

Π­Ρ‚Π° сСрия вСрсий называСтся stream ΠΈΠ»ΠΈ branch . Π’ SVN основной ΠΏΠΎΡ‚ΠΎΠΊ называСтся Ρ‚Ρ€Π°Π½ΠΊΠΎΠΌ ; Π² CVS ΠΎΠ½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСтся HEAD ; Π² Git Π΅Π³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ , мастСр . Π’Π΅Ρ‚Π²ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ внСдрСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ старой вСрсии.

Рисунок 2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ вСрсии Π² классичСском Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ
check out the content, change then commit

Пока Ρ‡Ρ‚ΠΎ Git ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ классичСскиС Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ исходного ΠΊΠΎΠ΄Π°, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ? К соТалСнию, Π½Π° этом сходство заканчиваСтся.Одной ΠΈΠ· основных особСнностСй CVS ΠΈ SVN являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Git Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½. НСсколько Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ вмСстС ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ фактичСски Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ взаимодСйствуСт Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ любой сСрвСрный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Git

Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Git, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прост.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Git ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ содСрТимоС Π² снимках, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΈ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя снимками.Π­Ρ‚ΠΎ ваТная концСпция. На ΠΌΠΎΠΉ взгляд, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ примСнСния ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Git.

Π­Ρ‚ΠΎ настоящий основной ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ слСдуСт ΠΈΠ· этого. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ углубимся Π² Git.

Π Π°Π±ΠΎΡ‚Π° с Git

git init — ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

git checkout — ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ· рСпозитория Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

git add — добавляСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π² Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

git commit — фиксируСт Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Git, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git init . Он ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Git ΠΈ создаСт Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ .git (скрытом), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ Ρ‚Π°ΠΌ создаСт. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Git. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ checkout ΠΈ commit Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌ рСпозиториям исходного ΠΊΠΎΠ΄Π°, Π½ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ Π½Π°Π±ΠΎΡ€Π°ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ являСтся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² Git Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° add (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ SVN).Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ добавляСтся Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π­Ρ‚Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСтся индСксом . На рисункС 3 ΠΏΠΎΠΊΠ°Π·Π°Π½ процСсс создания Π½Π°Π±ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· вСрсии снимка A Π² Π²Π΅Ρ€ΡΠΈΡŽ снимка B.

git status ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π² ΠΊΠ°ΠΊΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ.

Рисунок 3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Git
Add change to staging area then commit to repository

git log ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Ρ‚.Π΅.Π΅. фиксируСт) Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ с git log <ΠΏΡƒΡ‚ΡŒ> измСнСния, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ git status пСрСчисляСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² индСксС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° различия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git diff . ΠŸΡ€ΠΎΡΡ‚ΠΎ использованиС git diff (Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²) ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ измСнСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² индСкс. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git diff --cached , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π² индСксС: поэтапныС измСнСния. git diff <имя> ΠΈΠ»ΠΈ git diff <имя> - <ΠΏΡƒΡ‚ΡŒ> ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ для Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ соотвСтствСнно. Имя ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ фиксации, ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²Π΅Ρ‚Π²ΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ.

НаимСнованиС

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:
Из-Π·Π° Π΄Π»ΠΈΠ½Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² фиксации я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊΠΈΠ΅ сокращСния, ΠΊΠ°ΠΊ Β«(A)Β», Β«(B)Β» ΠΈ Ρ‚. Π”.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° названия Π²Π΅Ρ‰Π΅ΠΉ Π² Git. Π‘Π½ΠΈΠΌΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основными элСмСнтами Π² Git. Они Π½Π°Π·Π²Π°Π½Ρ‹ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ фиксации , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой Ρ…Π΅Ρˆ-ΠΊΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«c69e0cc32f3c1c8f2730cade36a8f75dc8e3d480Β». Он ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΈΠ· содСрТимого снимка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя фактичСскоС содСрТимоС ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ врСмя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΠΈ Ρ‚. Π”. Π‘Π½ΠΈΠΌΠΎΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ вСрсии с Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ , ΠΊΠ°ΠΊ Π² CVS, ΠΈΠ»ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½ΠΎΠΌΠ΅Ρ€ (ΠΈ ΠΏΡƒΡ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ / branch top) ΠΊΠ°ΠΊ Π² SVN.Из-Π·Π° этого Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ порядок ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ снимков Git, ΠΊΠ°ΠΊ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… рСпозиториях. Git ΠΌΠΎΠΆΠ΅Ρ‚ для удобства ΡΠΎΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ эти Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ…ΡΡˆΠΈ Π΄ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈΠΌΠ΅Π½, бСря минимальноС количСство символов ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ имя ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ имя Β«c69e0ccΒ».

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ commit ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π² качСствС Π³Π»Π°Π³ΠΎΠ»Π° для создания снимка, Ρ‚Π°ΠΊ ΠΈ Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ для ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ снимка.

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

Как Git ΡƒΠ·Π½Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области? ИмСнно Π½Π° это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ HEAD. Π“Π»Π°Π²ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ являСтся Ρ‚ΠΎ мСсто, Π³Π΄Π΅ Π²Ρ‹ Π² послСдний Ρ€Π°Π· провСряли своС Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ пространство ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΡƒΠ΄Π° Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ послСдний Ρ€Π°Π· провСряли. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это отличаСтся ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ CVS ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ HEAD ΠΊΠ°ΠΊ совСт развития Π²Π΅Ρ‚ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Команда tag Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ позволяСт Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.2 Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Π΄.

Для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ смотритС Π³Π»Π°Π²Π½ΡƒΡŽ страницу gitrevisions . ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π½Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚Π΅Π³ΠΈ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π° Π²Π΅Ρ‚Π²Π΅ΠΉ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ссылками Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ рСфлСксов . reflog ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ измСнилось Π·Π° врСмя сущСствования ΠΈΠΌΠ΅Π½ΠΈ, с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅Π³ΠΎ создания (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π΅Ρ‚Π²ΡŒΡŽ) Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния.

Π’Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ вСтвлСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ снимка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ снимку создаСт Π½ΠΎΠ²Ρ‹ΠΉ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.И Ссли ΠΎΠ½ Π½Π°Π·Π²Π°Π½, ΠΎΠ½ называСтся Π²Π΅Ρ‚Π²ΡŒΡŽ.

Рисунок 4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры Π²Π΅Ρ‚Π²ΠΈ Π² Git
flow of a branch structure

Рисунок 4 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ структуры Π²Π΅Ρ‚Π²Π΅ΠΉ Π² Git. Π’Π΅Ρ‚Π²ΡŒ master , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ происходит нСкоторая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° снимок F . Другая Π²Π΅Ρ‚Π²ΡŒ , старая , ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ старый снимок, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ исправлСния. Ѐункция Π’ Π²Π΅Ρ‚Π²ΠΈ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Наборы ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ вСрсии ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«[B-> D]Β».Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ снимок B ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²ΡƒΡ… Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов, ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΠΈΠ΄ΡƒΡ‚ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΎΠ΄ΠΈΠ½ для Π²Π΅Ρ‚Π²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠ΄ΠΈΠ½ для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…. ΠšΠΎΠΌΠΌΠΈΡ‚ А Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡˆΠΈΠ±ΠΊΡƒ β„– 123.

git branch — создаСт Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ HEAD (Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³).

git checkout -b — создаСт Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ HEAD ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

git diff — — ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ.

git checkout — — ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

git merge — ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π΄Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ.

git merge -abort — ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ слияниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ.

Π’Π΅Ρ‚Π²ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git branch <имя-Π²Π΅Ρ‚Π²ΠΈ> Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ HEAD ΠΈΠ»ΠΈ Π²Π΅Ρ‚ΠΊΠΈ git <имя-Π²Π΅Ρ‚Π²ΠΈ> <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€_ΠΌΠΈΡ‚Π°> Π² любой допустимой вСрсии снимка.Π­Ρ‚ΠΎ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚ΠΊΠΈ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны, Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ оставляСт вашС Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ пространство Π² старой Π²Π΅Ρ‚ΠΊΠ΅. Π‘Π½Π°Ρ‡Π°Π»Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π· Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git checkout -b <имя Π²Π΅Ρ‚Π²ΠΈ> создаСтся новая Π²Π΅Ρ‚ΠΊΠ°, ΠΈ вашС Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ пространство Ρ‚Π°ΠΊΠΆΠ΅ пСрСмСщаСтся Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

Π”Π²Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ довольно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹:

  • git diff - , ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ diff Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ (Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°) ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ.
  • git checkout - ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ измСнСния ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ.

БлияниС

Когда Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ свою Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²Ρ‹ зарСгистрировали Π΅Π΅ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² своСй Π²Π΅Ρ‚ΠΊΠ΅ Β«FeatureΒ». Когда функция Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΅Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π’Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ это, провСряя ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ git merge <имя Π²Π΅Ρ‚Π²ΠΈ> .Π—Π°Ρ‚Π΅ΠΌ Git ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ измСнСния ΠΈΠ· Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ с ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ. Для этого Git примСняСт всС Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅Ρ‚Π²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° ΠΊΠΎΠ½Ρ‡ΠΈΠΊΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ.

Π’ зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π²ΡƒΡ… вСтвях ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Ρ‚Ρ€ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

  • УскорСнноС слияниС : ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π°Ρ Π²Π΅Ρ‚Π²ΡŒ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π²Π΅ Π²Π΅Ρ‚ΠΊΠΈ Ρ€Π°Π·ΠΎΡˆΠ»ΠΈΡΡŒ. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ Π²Π΅Ρ‚Π²ΡŒ всС Π΅Ρ‰Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ другая Π²Π΅Ρ‚Π²ΡŒ Ρ€Π°Π·ΠΎΡˆΠ»Π°ΡΡŒ.Π’ этом случаС Git ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚Π²ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 5. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΡ€ΠΎΠΌΠ΅ пСрСмСщСния указатСля Π²Π΅Ρ‚Π²ΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄, Git Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ это слияниСм быстрой ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄.

    Рисунок 5. БыстроС слияниС Π²ΠΏΠ΅Ρ€Π΅Π΄
    moves receiving branch pointer to latest commit
  • БСсконфликтноС объСдинСниС : Π΅ΡΡ‚ΡŒ измСнСния Π² ΠΎΠ±Π΅ΠΈΡ… вСтвях, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚. Π­Ρ‚ΠΎ происходит, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли измСнСния Π² ΠΎΠ±Π΅ΠΈΡ… Π²Π΅Ρ‚ΠΊΠ°Ρ… Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Git ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС измСнСния ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² Π²Π΅Ρ‚ΠΊΡƒ-получатСля ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с этими измСнСниями.ΠŸΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π°Ρ Π²Π΅Ρ‚Π²ΡŒ Π·Π°Ρ‚Π΅ΠΌ пСрСмСщаСтся Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΊ этой фиксации, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 6.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ фиксации, фиксация слияния ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²ΡƒΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. Π― Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» здСсь Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с (E) Π½Π° (H) Π±Ρ‹Π» Π±Ρ‹ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ всСх Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅Ρ‚Π²ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° отклонСния Π΄Π²ΡƒΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ, Π½ΠΎ это, вСроятно, слишком Π΄Π°Π»Π΅ΠΊΠΎ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ.

Рисунок 6. БСсконфликтноС слияниС
new commit with merged content and receiving branch pointing to it
  • ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰Π΅Π΅ слияниС : Π² ΠΎΠ±Π΅ΠΈΡ… Π²Π΅Ρ‚ΠΊΠ°Ρ… Π΅ΡΡ‚ΡŒ измСнСния, Π½ΠΎ ΠΎΠ½ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚.Π’ этом случаС ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ остаСтся Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ слияниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git merge –abort .

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ Π²Π΅Ρ‰ΡŒ: объСдинСниС Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠ°Ρ‚Ρ‡ Π±Ρ‹Π» ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ Π² ΠΎΠ±Π΅ΠΈΡ… вСтвях. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ вас Π΅ΡΡ‚ΡŒ измСнСния Π² ΠΎΠ±Π΅ΠΈΡ… Π²Π΅Ρ‚ΠΊΠ°Ρ…, это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Git достаточно ΡƒΠΌΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ эту ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ слияниС Π² ускорСнном Ρ€Π΅ΠΆΠΈΠΌΠ΅.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈ воспроизвСдСния Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ благодаря Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ функциям, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ , ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠΉ ΠΈ , ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠΌ вишню .

Иногда Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½ΠΎ основная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ΄Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, ΠΈ Π²Π°ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. БлСдствиСм этого Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π²Π΅ Π²Π΅Ρ‚Π²ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° довольно быстро. Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Для этого Git ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π΅Π±Π°Π· ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сбора вишни.

Π Π΅Π±Π°Π·ΠΈΠ½Π³

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

Рисунок 7. ΠŸΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ
replay changes on top new base commit/branch tip

git rebase — пСрСбрасываСт Π²Π°ΡˆΡƒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π½Π° Π²Π΅Ρ€Ρ…ΡƒΡˆΠΊΡƒ Π΄Π°Π½Π½ΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ.

git rebase -i — интСрактивная ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²ΠΊΠ°.

git cherry-pick — ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ вишни, приводящий ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ.

git revert — восстанавливаСт ΠΏΠ°Ρ‚Ρ‡.

Если воспроизвСдСниС ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ, rebase останавливаСтся ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ ΠΈ оставляСт ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰Π΅Π΅ состояниС Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ для исправлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π—Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π±Π°Π· ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½.

Π‘ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ --onto , Ρ€Π΅Π±Π°Π· ΠΌΠΎΠΆΠ΅Ρ‚ фактичСски ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ отклонСния Β«Π½Π°Β» любой Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΉ снимок Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ.

Π‘Π±ΠΎΡ€ вишни

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ внСсСны Π² Π²Π°ΡˆΡƒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ исправлСниС ошибки ΠΈΠ»ΠΈ отличная функция, Π½ΠΎ Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π²Π΅Ρ‚Π²ΠΈ. Git позволяСт ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹Π±ΠΎΡ€Π° вишни.

Π’ этой ситуации, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 8, Git просто примСняСт Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ снимку Π² HEAD, скаТСм, Π² основной Π²Π΅Ρ‚Π²ΠΈ.Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ фиксации, Ρ‚Π°ΠΊΠΆΠ΅ извСстный ΠΊΠ°ΠΊ Ρ…ΡΡˆ-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Рисунок 8. Π’ΠΈΡˆΠ½Ρ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚
replays single commits on top of another branch

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ

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

Рисунок 9. Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°
replay older commit on top of the branch backwards

Команда revert Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π±Ρ‹Π»ΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½ΠΎ это Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я ΠΏΡ€ΠΎΡˆΠ΅Π» этот Ρ€Π°Π·Π΄Π΅Π» Ρ‚Π°ΠΊ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ? Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ обсуТдСнии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. ЀактичСски, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ этот ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ сразу понятСн. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ основана Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π²ΡˆΠ΅ΠΉΡΡ Π΄ΠΎ сих ΠΏΠΎΡ€.

БотрудничСство

Π’ классичСских Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… исходного ΠΊΠΎΠ΄Π° всСгда Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅Ρ‚Π²ΡŒ; это Ρ‚ΠΎΡ‚, Ρ‡Ρ‚ΠΎ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Однако Π² Git Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ главная Π²Π΅Ρ‚Π²ΡŒ. ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, Ρ€Π°Π·Π²Π΅ я Π½Π΅ написал Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΅ΡΡ‚ΡŒ главная Π²Π΅Ρ‚ΠΊΠ°? Π”Π°, я сдСлал. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½ΠΈΠ΅. Π­Ρ‚Π° основная Π²Π΅Ρ‚Π²ΡŒ сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ локально. ΠœΠ΅ΠΆΠ΄Ρƒ Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ связи, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ создаСтС.

Рисунок 10. Π”Π²Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°
Two repositories without connection?

Если Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git remote add . Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² своСм собствСнном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ fetch . Π­Ρ‚ΠΎ называСтся Π²Π΅Ρ‚Π²ΡŒΡŽ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ отслСТивания , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° отслСТиваСт Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ систСмС.

Когда Π²Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ, которая сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ удалСнная Π²Π΅Ρ‚Π²ΡŒ отслСТивания (Π½ΠΎ Π½Π΅ ΠΊΠ°ΠΊ локальная Π²Π΅Ρ‚Π²ΡŒ), Git автоматичСски создаСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ отслСТивания ΠΈ провСряСт эту.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² это, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ содСрТимоС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ с вашСй собствСнной Π²Π΅Ρ‚ΠΊΠΎΠΉ. На рисункС 11 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π² локальной Π²Π΅Ρ‚ΠΊΠ΅ master, Π½ΠΎ Π² этом Π½Π΅Ρ‚ нСобходимости, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΅Π΅ с любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ с ΠΎΠ±Ρ‰Π΅ΠΉ историСй, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ обычная ΠΊΠΎΠΌΠ°Π½Π΄Π° merge.

Рисунок 11. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΠΈΠ°Π»Π°
creates a local tracking branch for remote branch

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ являСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° git clone , которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· слуТбы хостинга.Π­Ρ‚ΠΎ автоматичСски ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ всС ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ‚Π²ΠΈ (Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ссылки) ΠΈ провСряСт ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π΅Ρ‚Π²ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория являСтся «просто Π²Π΅Ρ‚Π²ΡŒΡŽΒ», всС, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ вСтвлСния, слияния ΠΈ Ρ‚. Π”., ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ практичСски Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, особСнно ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория.

Рисунок 12. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
Changes played on local branch for remote branch

git clone — создаСт Β«ΠΊΠ»ΠΎΠ½Β» ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

git remote add — добавляСт ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ URL-адрСсом соСдинСния.

git fetch — ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ измСнСния Π² Π²Π΅Ρ‚ΠΊΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ отслСТивания для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория.

git pull — Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ слияниСм.

git push — ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ· локальной Π²Π΅Ρ‚Π²ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ отслСТивания Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

На Π€ΠΈΠ³ΡƒΡ€Π΅ 12 ΠΏΠΎΠΊΠ°Π·Π°Π½ git fetch ; обновляСт Π²Π΅Ρ‚ΠΊΡƒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ отслСТивания.Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ просто выполняСтС ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ слияния ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ отслСТивания ΠΈ локальной Π²Π΅Ρ‚Π²ΡŒΡŽ, Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ git checkout master; git merge repo1 / master . ПослС Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя FETCH_HEAD Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ слияния Π² качСствС ярлыка для ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½ΠΎΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, git merge FETCH_HEAD . ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ Π²Ρ‹ΡˆΠ΅, это объСдинСниС ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ускорСнному слиянию, слиянию Π±Π΅Π· ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Команда git pull — это удобная ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ с слияниСм .

ПослС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΈΠ»ΠΈΠ°Π» ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСрСнСсти Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„ΠΈΠ»ΠΈΠ°Π». Π­Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ push , которая ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для получСния , Π° Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для . Однако ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ большС, Ρ‡Π΅ΠΌ просто Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ обновляСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ копию ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 13. push Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π²Π΅Ρ‚Π²ΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Рисунок 13. НаТатиС Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
Changes pushed to local branch then remote branch

Π•ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°. Π­Ρ‚ΠΎ происходит ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π° Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС прСрываСтся, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ускорСнному слиянию Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Если это Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния (ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹) ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‚Π΅Ρ€ΠΎΠ². Git ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡˆ ΠΈ оставляСт всС ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Π—Π°Ρ‚Π΅ΠΌ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ измСнСния, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… с вашСй локальной Π²Π΅Ρ‚ΠΊΠΎΠΉ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Ρ€Π°Π·.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΈΡ… случаях Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ слияниС, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ слияниС rebase, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Π² вашСй локальной Π²Π΅Ρ‚ΠΊΠ΅ Π² Π½ΠΎΠ²Ρ‹ΠΉ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

Помимо ΠΊΠΎΠΌΠ°Π½Π΄ fetch ΠΈ push Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ распространСния ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ; старый ΡΡ‚ΠΈΠ»ΡŒ, ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅. Для этого Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° git format-patch , которая создаСт Ρ„Π°ΠΉΠ» исправлСний для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Π΄Π΅Ρ‚ ΠΎΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ. git am примСняСт эти Ρ„Π°ΠΉΠ»Ρ‹ исправлСний ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΡ

Одно ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π³Π΄Π΅ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ фактичСски отслСТиваСт Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ Π½Π΅ΠΉ локально.Π­Ρ‚ΠΎ, вСроятно, испортит ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΠΈΠ»ΠΈΠ°Π»ΠΎΠΌ, поэтому Git ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ вас ΠΎΠ± этом ΠΈ попросит сначала ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ с pull .

Π’Π°ΠΊΠΆΠ΅ становится ясно, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ отслСТивания. Π­Ρ‚ΠΎ большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, это Π½Π΅ даст быстрого слияния Π½Π° push . Π’Ρ‹ Π½Π°Ρ€ΡƒΡˆΠΈΠ»ΠΈ свою структуру Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

Advanced Git

Рисунок 14. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры с нСсколькими Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ
Many repositories exchange with fetch and push

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, Π΄Π°ΠΆΠ΅ с Git, сущСствуСт структура Ρ‚ΠΈΠΏΠ° star , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слуТит Π² качСствС основного, ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.Но это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ соСдинСния с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ Π² сСти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с пСрСкрСстными соСдинСниями, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 14.

Π’Ρ‹ΡˆΠ΅ я описал ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ воспроизвСдСниС Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ вСтвлСния (ΠΈΠ»ΠΈ отклонСния) ΠΎΡ‚ исходной Π²Π΅Ρ‚ΠΊΠΈ. Git ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСт воспроизвСдСниС Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΈ сдСланы ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π’ качСствС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ git rebase -i позволяСт Π²Π°ΠΌ фактичСски Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ слСдуСт Π΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС, ΠΈ Π΄Π°ΠΆΠ΅ Ссли ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ Π΄Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ («сдавлСны»).ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ это с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ — Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° основС этих ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ².

Π― Ρ‚Π°ΠΊΠΆΠ΅ написал, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Π½ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ любой ΠΊΠΎΠΌΠΌΠΈΡ‚ (снимок). Π­Ρ‚ΠΎ позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ HEAD ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚, Π° Π½Π΅ Π½Π° Π²Π΅Ρ‚Π²ΡŒ. Π­Ρ‚ΠΎ называСтся Ρ€Π΅ΠΆΠΈΠΌ отсоСдинСнного HEAD . Когда Π²Ρ‹ фиксируСтС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² этой ситуации, Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ развития. Π’ основном Π²Ρ‹ Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ, Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ этой Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ.Π‘ΠΎΠ²Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ использовании ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° фиксации; это Π½Π΅ достиТимо Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ refname. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ· этого HEAD, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β« git branch Β».

Π§Ρ‚ΠΎ происходит с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдоступны ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ссылкС? Ну, Ссли Π²Ρ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ особСнного, ΠΎΠ½ΠΈ хранятся Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈ слуТбы хостинга ΠΌΠΎΠ³ΡƒΡ‚ фактичСски Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Git GC , сборщик мусора Git для удалСния Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ доступны Π½ΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ рСфлСкса, Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ поэтому Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ рСкомСндуСтся всСгда Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ, особСнно ΠΊΠΎΠ³Π΄Π° Π² Git Ρ‚Π°ΠΊ быстро ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

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

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

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ инструмСнтом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Git, являСтся графичСский инструмСнт gitk , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ структуру локального рСпозитория. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ gitk --all , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π²Π΅Ρ‚Π²ΠΈ ΠΈ Ρ‚Π΅Π³ΠΈ ΠΈ Ρ‚. Π”. Он Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт простой интСрфСйс для запуска дСйствий Π² Git.

Git ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΆΠ΅ установлСн Π² вашСй систСмС Linux. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ придСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ· вашСго ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Для Windows Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° домашнСй страницС Git.

Π― надСюсь, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ Git ΠΈ Π½Π΅ Π±ΠΎΠΈΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ.

Бпасибо Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ интСрСсныС дискуссии Π½Π° эту Ρ‚Π΅ΠΌΡƒ ΠΈ Π·Π° Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΠΌΠΎΠ΅ΠΌΡƒ ΠΊΠΎΠ»Π»Π΅Π³Π΅ Π’ΠΈΡ‚ΠΎΠ»ΡŒΠ΄Ρƒ Π©Π΅ΠΏΠΎΠ½ΠΈΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Git Π΄Π°ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ я.

Git Β· GitHub

ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡŽ Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ
  • ΠŸΠΎΡ‡Π΅ΠΌΡƒ GitHub? ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ β†’
    • ΠžΠ±Π·ΠΎΡ€ ΠΊΠΎΠ΄Π°
    • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ
    • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ
    • ДСйствия
    • ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹
    • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ
    • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
    • Π₯остинг
    • ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ
    • ΠžΡ‚Π·Ρ‹Π²Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² β†’
    • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ β†’
  • ΠΊΠΎΠΌΠ°Π½Π΄Π°
  • прСдприятиС
  • ΠŸΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ исслСдования
    • Π˜ΡΡΠ»Π΅Π΄ΡƒΠΉΡ‚Π΅ GitHub β†’
    ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈ внСсти свой Π²ΠΊΠ»Π°Π΄
    • Π’Π΅ΠΌΡ‹
    • ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ
    • Π’Π΅Π½Π΄Π΅Π½Ρ†ΠΈΠΈ
    • Learning Lab
    • Руководства с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ
    ΠžΠ±Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ
    • Бобытия
    • ΠžΠ±Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΡƒΠΌ
.

ИспользованиС Git — GitHub Docs

GitHub Docs
  • ВсС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹
  • GitHub.com
    • Начиная
      • Быстрый старт
        • ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Git
        • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎ
        • Π’ΠΈΠ»ΠΊΠ° Ρ€Π΅ΠΏΠΎ
        • Π‘Ρ‹Ρ‚ΡŒ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ
      • Π£Π·Π½Π°Π² ΠΎ GitHub
        • ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ GitHub
        • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсий доступа с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ просмотром Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
        • Π’ΠΈΠΏΡ‹ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй GitHub
        • FAQ ΠΎΠ± измСнСниях Π² ΠΏΠ»Π°Π½Π°Ρ… GitHub
        • GitHub CLI
        • GitHub Desktop
        • GitHub для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ…
        • ΠŸΡ€Π°Π²Π° доступа Π½Π° GitHub
        • GitHub глоссарий
        • Git ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ°
        • Git ΠΈ GitHub ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ рСсурсы
      • РСгистрация Π½Π° GitHub
        • РСгистрация Π½ΠΎΠ²ΠΎΠΉ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи GitHub
        • ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ вашСго адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹
        • Настройка ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсии GitHub Enterprise Cloud
        • Настройка ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсии GitHub Enterprise Server
      • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° GitHub
        • Поиск способов внСсти свой Π²ΠΊΠ»Π°Π΄ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ Π½Π° GitHub
        • Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² со Π·Π²Π΅Π·Π΄Π°ΠΌΠΈ
        • Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ люди
      • ИспользованиС GitHub
        • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹
        • УстранСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ
        • ГорячиС клавиши
    • Π£Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ записи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
      • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ настройками ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
        • О вашСй Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ
        • ИзмСнСниС вашСго ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° GitHub
        • БлияниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
        • ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ
        • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ вашСй ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи
        • Π£Ρ€ΠΎΠ²Π½ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
        • Π£Ρ€ΠΎΠ²Π½ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²
        • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ настройками бСзопасности ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° для вашСй ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
        • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом ΠΊ доскам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² вашСй ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи
        • Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ для ΡƒΡ…ΠΎΠ΄Π° ΠΈΠ· вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
        • Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ„Π»Π°ΠΆΠΎΠΊ «Доступно для ΠΏΡ€ΠΎΠΊΠ°Ρ‚Π°Β»?
      • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ настройками элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹
.

github — Как Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ git fork?

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка
  1. Π’ΠΎΠ²Π°Ρ€Ρ‹
  2. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹
  3. Π‘Π»ΡƒΡ‡Π°ΠΈ использования
  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹
  2. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ЧастныС вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ для вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
  3. прСдприятиС ЧастныС вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ для вашСго прСдприятия
  4. Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ связанныС с Π½ΠΈΠΌ тСхничСскиС возмоТности ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠ³ΠΎ роста
  5. Π’Π°Π»Π°Π½Ρ‚ ΠΠ°Π½ΠΈΠΌΠ°Ρ‚ΡŒ тСхничСский Ρ‚Π°Π»Π°Π½Ρ‚
  6. Ρ€Π΅ΠΊΠ»Π°ΠΌΠ° Π‘Π²ΡΠ·Π°Ρ‚ΡŒΡΡ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ
,