Π Π°Π·Π½ΠΎΠ΅

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ git bash: cyberspacedk/Git-commands: Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ 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.
    ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ измСнСния Π²Β Ρ„ΠΎΡ€ΠΊ.

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

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ Git, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ прСдставлСны основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Git сСгодня — это ΠΎΡ‡Π΅Π½ΡŒ популярная систСма контроля вСрсий. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ Git, состоящая ΠΈΠ· основных ΠΊΠΎΠΌΠ°Π½Π΄ — это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ.

git add

Команда git add добавляСт содСрТимоС Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² индСкс (staging area) для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ git commitΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ лишь этот индСкс, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΒ git add для сборки слСпка вашСго ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

git status

Команда git statusΒ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ состояния Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ индСксС: ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² индСкс; ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² индСксС. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ этому выводятся подсказки ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС Ρ„Π°ΠΉΠ»ΠΎΠ².

git diff

Команда git diffΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вычислСния Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ двумя Git Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ вашСй Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ ΠΈ индСксом (собствСнно git diff), Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ индСксом ΠΈ послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ (git diff --staged), ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ двумя ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ (git diff master branchB).

git difftool

Команда git difftool просто запускаСт внСшнюю ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ сравнСния для ΠΏΠΎΠΊΠ°Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² Π΄Π²ΡƒΡ… Π΄Π΅Ρ€Π΅Π²ΡŒΡΡ…, Π½Π° случай Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ встроСнного просмотрщика git diff.

git commit

Команда git commitΒ Π±Π΅Ρ€Ρ‘Ρ‚ всС Π΄Π°Π½Π½Ρ‹Π΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π² индСкс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽΒ git add, ΠΈ сохраняСт ΠΈΡ… слСпок Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ сдвигаСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° этот слСпок.

git reset

Команда git reset, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ ΠΈΠ· названия, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² основном для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Она измСняСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΒ HEADΒ ΠΈ, ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, состояниС индСкса. Π’Π°ΠΊΠΆΠ΅ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΈ использовании ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Β --hard, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΡΡ‚ΠΈ своих Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

git rm

Команда git rmΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Git для удалСния Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· индСкса ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Она ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π°Β git add с Ρ‚Π΅ΠΌ лишь ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° удаляСт, Π° Π½Π΅ добавляСт Ρ„Π°ΠΉΠ»Ρ‹ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

git mv

Команда git mvΒ β€” это всСго лишь ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ», Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΒ git addдля Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΒ git rm для старого.

git clean

Команда git cleanΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния мусора ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² слияний.

git branch

Команда git branchΒ β€” это своСго Ρ€ΠΎΠ΄Π° β€œΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ вСток”. Она ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ваши Π²Π΅Ρ‚ΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ….

git checkout

Команда git checkoutΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π΅Ρ‚ΠΎΠΊ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΡ… содСрТимого Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ.

git merge

Команда git mergeΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для слияния ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½Π° устанавливаСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

git mergetool

Команда git mergetool просто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ внСшнюю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ слияний, Π² случаС Ссли Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ слияния.

git log

Команда git logΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для просмотра истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², начиная с самого свСТСго ΠΈ уходя ΠΊ истокам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΠ½Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ лишь ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ настроСна Π½Π° Π²Ρ‹Π²ΠΎΠ΄ истории Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сразу, Π²Π΅Ρ‚ΠΎΠΊ. Π’Π°ΠΊΠΆΠ΅ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для просмотра Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

git stash

Команда git stashΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ сохранСния всСх Π½Π΅Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для очистки Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π±Π΅Π· нСобходимости ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

git tag

Команда git tagΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для задания постоянной ΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² истории ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π΅Π»ΠΈΠ·ΠΎΠ².

НС Ρ‚Π°ΠΊ ΡƒΠΆ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ Π² Git Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ сСтСвого ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹, практичСски всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ с локальной ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Когда Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своими Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ, всСго нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ рСпозиториями.

git fetch

Команда git fetch связываСтся с ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ ΠΈ Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· Π½Π΅Π³ΠΎ всС измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρƒ вас ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚ ΠΈ сохраняСт ΠΈΡ… локально.

git pull

Команда git pullΒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ комбинация ΠΊΠΎΠΌΠ°Π½Π΄Β git fetchΒ ΠΈΒ git merge, Ρ‚.Π΅. Git Π²Π½Π°Ρ‡Π°Π»Π΅ Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ измСнСния ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория, Π° Π·Π°Ρ‚Π΅ΠΌ пытаСтся ΡΠ»ΠΈΡ‚ΡŒ ΠΈΡ… с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ.

git push

Команда git pushΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для установлСния связи с ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ, вычислСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Π½Ρ‘ΠΌ, ΠΈ собствСнно ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π­Ρ‚ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΎ Π½Π° запись Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, поэтому ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ.

git remote

Команда git remote слуТит для управлСния списком ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π². Она позволяСт ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ URL Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π² Π²ΠΈΠ΄Π΅ понятных ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… строк, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «origin», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ придётся Π·Π°Π±ΠΈΠ²Π°Ρ‚ΡŒ Π³ΠΎΠ»ΠΎΠ²Ρƒ всякой Π΅Ρ€ΡƒΠ½Π΄ΠΎΠΉ ΠΈ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· для связи с сСрвСром. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΒ git remoteΒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΡ….

git archive

Команда git archiveΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π² Π°Ρ€Ρ…ΠΈΠ² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ»ΠΈ всСго рСпозитория.

git submodule

Команда git submoduleΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ рСпозиториями. НапримСр, это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ рСсурсы. Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹Β submoduleΒ Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠΎΠ΄-ΠΊΠΎΠΌΠ°Π½Π΄ β€”Β add,Β update,Β syncΒ ΠΈ Π΄Ρ€. β€” для управлСния Ρ‚Π°ΠΊΠΈΠΌΠΈ рСпозиториями.

git show

Команда git showΒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² простом ΠΈ чСловСкопонятном Π²ΠΈΠ΄Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для просмотра ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠ΅Ρ‚ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅.

git shortlog

Команда git shortlog слуТит для подвСдСния ΠΈΡ‚ΠΎΠ³ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹Β git log. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ практичСски Ρ‚Π΅ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈΒ git log, Π½ΠΎ вмСсто простого листинга всСх ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ сгруппированы ΠΏΠΎ Π°Π²Ρ‚ΠΎΡ€Ρƒ.

git describe

Команда git describeΒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚ (Π²Π΅Ρ‚ΠΊΡƒ, Ρ‚Π΅Π³) ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡƒΡŽ строку, которая Π½Π΅ измСнится Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ удобная, Π½ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ, Π·Π°ΠΌΠ΅Π½Π° SHA-1.

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

git bisect

Команда git bisectΒ β€” это Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ полСзная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для поиска ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ проявился Π±Π°Π³ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ автоматичСского Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска.

git blame

Команда git blameΒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкой Ρ„Π°ΠΉΠ»Π° SHA-1 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, послСдний Ρ€Π°Π· мСнявшСго эту строку ΠΈ Π°Π²Ρ‚ΠΎΡ€Π° этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π² поисках Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопросы ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΌ кускС ΠΊΠΎΠ΄Π°.

git grep

Команда git grepΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для поиска любой строки ΠΈΠ»ΠΈ рСгулярного выраТСния Π² любом ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄Π°ΠΆΠ΅ Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… Π΅Π³ΠΎ вСрсиях.

Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Git, ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Git с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π‘ΠšΠ’, Ρ‚ΠΎ такая ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅:

https://proglib.io/p/git-github-gitflow/

https://proglib.io/p/system-git/

Книга по Git

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²ΠΈΠ΄Π΅ΠΎ ΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ Git

Моя ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с 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 β€” Π‘Π»ΠΎΠ³ HTML Academy

Π Π°Π±ΠΎΡ‚Π° с Git Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» β€” это ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соврСмСнного Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-спСциалиста. Однако, для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слоТным. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс обучСния, ΠΌΡ‹ собрали для вас всС самыС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пригодятся Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Git Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ врСмя.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ настройка Git

Π Π°Π±ΠΎΡ‚Π° с любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ всСгда начинаСтся с Π΅Ρ‘ настройки. Git ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости.

Установка ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ΄Ρ‚ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

git config --global user.name "User Name"

Установка адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ адрСс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΌ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зарСгистрирован Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π² Π“ΠΈΡ‚Ρ…Π°Π±Π΅.

git config --global user.email [email protected]

Установка тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ»Ρ‹ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ².

git config --global core.editor editor

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git config --list ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список всСх установлСнных настроСк.

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория

Для клонирования рСпозитория Π½ΡƒΠΆΠ½ΠΎ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git clone ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ адрСс. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ клонируСтся Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Ρ‹Π±Ρ€Π°Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ Π² консоли.

Π Π°Π±ΠΎΡ‚Π° с измСнСниями

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

ПослС внСсСния Π»ΡŽΠ±Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ статус Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git status. Она ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ‹ измСнСния, ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΈ Π½ΠΎΠ²Ρ‹Π΅, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ добавлСния.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ отслСТиваниС Π½ΠΎΠ²Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git add <filename> <filename> для добавлСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

Π’ случаС Ссли Ρƒ вас ΠΌΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² для добавлСния, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git add ., которая добавляСт отслСТиваниС для всСх Π½ΠΎΠ²Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. А ΠΊΠΎΠΌΠ°Π½Π΄Π° git add -A добавляСт Π΅Ρ‰Ρ‘ ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π½ΠΎ ΠΈ ΠΈΠ· всСго локального рСпозитория.

Помимо добавлСния Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ. Для этого сущСствуСт ΠΊΠΎΠΌΠ°Π½Π΄Π° git rm <filename> <filename>, которая удаляСт Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΠΈΡ… ΠΈΠΌΠ΅Π½ΠΈ.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ всС Π½ΠΎΠ²Ρ‹Π΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ старыС Ρ„Π°ΠΉΠ»Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Ѐиксация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎ выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ваши Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ Π·Π°ΠΏΠΈΡˆΡƒΡ‚ΡΡ. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git commit -m "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ".

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π° эту Ρ‚Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь.

Если Π²Ρ‹ внСсли измСнСния ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ быстро ΠΈΡ… ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git reset, которая отмСняСт всС нСзафиксированныС измСнСния.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, эта ΠΊΠΎΠΌΠ°Π½Π΄Π° удаляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· индСкса. А ΠΊΠΎΠΌΠ°Π½Π΄Π° git reset --hard Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ удаляСт нСзафиксированныС Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ измСнСния ΠΈΠ· локального рСпозитория ΠΈ ΠΈΠ· индСкса.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ дСйствия производятся Π² локальной ΠΊΠΎΠΏΠΈΠΈ рСпозитория, эту копию Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° сСрвСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ участники процСсса смогли ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. Для этого Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° git push, которая отправляСт всС зафиксированныС измСнСния Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π Π°Π±ΠΎΡ‚Π° с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ

Работая с Git, приходится постоянно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π²Π΅Ρ‚ΠΊΠ°ΠΌ.

Команда git checkout -b branch-name создаст Π²Π΅Ρ‚ΠΊΡƒ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ автоматичСски ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Π½Π° Π½Π΅Ρ‘.

ПослС создания Π²Π΅Ρ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° сСрвСр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push origin branch-name.

Аналогично ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ сСбС Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π²Π΅Ρ‚ΠΊΡƒ с ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git checkout origin/branch-name -b branch-name.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ названия Π²Π΅Ρ‚ΠΎΠΊ Π² памяти ΠΈΠ»ΠΈ Π½Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ названия Π²Π΅Ρ‚ΠΎΠΊ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ локального рСпозитория git branch ΠΈΠ»ΠΈ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория git branch -r.

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π»ΡŽΠ±ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git checkout branch-name.

ΠŸΡ€ΠΎΡ‡Π΅Π΅

ПослС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅, нСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΉ мусор. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всё лишнСС, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git clean -f -d.

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° с основными ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ для Git

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

git config --global user.name "[name]" β€” ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.

git config --global user.email "[email address]" β€” ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ email, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.

git config --global color.ui auto β€” Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ подсвСтку ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

git config --global push.default current β€” ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ локальная, ΠΏΡ€ΠΈ ΠΏΡƒΡˆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ³ΠΎ).

git config --global core.editor [editor] β€” ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ для рСдактирования сообщСний ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

git config --global diff.tool [tool] β€” ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ слиянии.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²

git init [project-name] β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.

git clone [url] β€” Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π Π°Π±ΠΎΡ‚Π° с измСнСниями

git status β€” ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

git status -s β€” ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Π²ΠΈΠ΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

git diff β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния Π² Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² индСкс ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (staged).

git add [file] β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ для ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

git add . β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ для ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

git add '*.txt' β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ.

git add --patch filename β€” позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния ΠΈΠ· Ρ„Π°ΠΉΠ»Π° добавятся Π² ΠΊΠΎΠΌΠΌΠΈΡ‚.

git diff --staged β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎ Π² индСкс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git add, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½ΠΎ.

git diff HEAD β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ измСнилось с послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

git diff HEAD^ β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ измСнилось с прСдпослСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

git diff [branch] β€” ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ.

git difftool -d β€” Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ diff, Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ измСнСния Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ difftool.

git difftool -d master.. β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния, сдСланныС Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅.

git diff --stat β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ статистику ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΈ ΠΊΠ°ΠΊ.

git reset [file] β€” ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· индСкса ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (измСнСния Π½Π΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ).

git commit β€” Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. для написания сообщСния откроСтся Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.

git commit -m "[descriptive message]" β€” Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ измСнСния с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ сообщСниСм.

git commit --amend β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ измСнСния ΠΊ послСднСму ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.

Π Π°Π±ΠΎΡ‚Π° с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ

git branch β€” список всСх Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

git branch [branch-name] β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

git checkout [branch-name] β€” ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ.

git checkout -b <name> <remote>/<branch> β€” ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

git checkout [filename] β€” Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС Ссли ΠΎΠ½ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² индСкс ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

git merge [branch] β€” ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ измСнСния Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅ с измСнСниями ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠΉ.

git merge --no-ff [branch] β€” ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΠΈ Π±Π΅Π· Ρ€Π΅ΠΆΠΈΠΌΠ° β€œfast forwarding”.

git branch -a β€” ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ.

git branch -d [branch] β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

git branch -D [branch] β€” ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, игнорируя ошибки.

git branch -m <oldname> <newname> β€” ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ.

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

git rm [file] β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² индСкс ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ.

git rm --cached [file] β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈΠ· рСпозитория, Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ локально.

git mv [file-original] [file-renamed] β€” ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² индСкс ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

.gitignore β€” тСкстовый Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· рСпозитория. НапримСр:

git ls-files --other --ignored --exclude-standard β€” список всСх ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ²

git stash β€” ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ всС отслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹.

git stash pop β€” Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ послСдниС Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

git stash list β€” список всСх сохранСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

git stash drop β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдниС Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ истории

git log β€” список измСнСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

git log --follow [file] β€” список измСнСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ пСрСимСнования.

git log --pretty=format:"%h %s" --graph β€” ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° отобраТСния истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

git log --author='Name' --after={1.week.ago} --pretty=oneline --abbrev-commit β€” ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π°Π΄ Ρ‡Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ послСднюю нСдСлю.

git log --no-merges master.. β€” ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ.

git diff [file-branch]..[second-branch] β€” ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ различия ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

git show [commit] β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Ρ‚Ρƒ ΠΈ измСнСния Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅.

git show [branch]:[file] β€” ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ„Π°ΠΉΠ» Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡΡΡŒ Π½Π° Π½Π΅Ρ‘.

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

git reset β€” ΡƒΠ±Ρ€Π°Ρ‚ΡŒ измСнСния ΠΈΠ· индСкса ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, сами измСнСния останутся.

git reset [commit/tag] β€” ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ послС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, измСнСния Π±ΡƒΠ΄ΡƒΡ‚ сохранСны локально.

git reset --hard [commit] β€” ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ вСрнутся ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, Π½Π΅ сохраняя ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ измСнСния.

Бинхронизация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

git fetch [bookmark] β€” Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всю ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ с Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория.

git merge [bookmark]/[branch] β€” ΡΠ»ΠΈΡ‚ΡŒ измСнСния локальной Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ.

git push β€” Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

git push [remote] [branch] β€” Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

git push [bookmark] :[branch] β€” Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

git push -u origin master β€” Ссли удалСнная Π²Π΅Ρ‚ΠΊΠ° Π½Π΅ установлСна ΠΊΠ°ΠΊ отслСТиваСмая, Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ Ρ‚Π°ΠΊΠΎΠΉ.

git pull β€” Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ измСнСния ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ произвСсти слияниС с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ.

git pull [remote][branch] β€” ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ для слияния.

git remote β€” ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список доступных ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π².

git remote -v β€” ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ список доступных ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π².

git remote add [remote][url] β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки

ЭННЕРА — ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ энциклопСдия. — GIT BASH ΠšΠΎΠΌΠ°Π½Π΄Ρ‹|Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ GIT

GIT BASH ΠšΠΎΠΌΠ°Π½Π΄Ρ‹|Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ GIT

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ — Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΊΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° нСбольшая ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ°Β ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Git.

Π― Π½Π΅Π΄Π°Π²Π½ΠΎ Π½Π°Ρ‡Π°Π» Π΅Ρ‘ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, поэтому, Ссли Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ ошибки, Π±ΡƒΠ΄ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½ Ссли ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΈΡ… Π² коммСнтариях.

ΠŸΠΎΠ΅Ρ…Π°Π»ΠΈ!

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с удалСнного сСрвСра:


1

git clone Π­Ρ‚ΠΎΡ‚ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½ ΠΎΡ‚ спам-Π±ΠΎΡ‚ΠΎΠ². Π£ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ JavaScript для просмотра.:afiskon/hs-textgen.git

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

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈΠ· рСпозитория:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС рСпозитория:

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ (Π·Π°ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС рСпозитория):


1

git commit -a -m "Commit description"

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


1

git commit -m "description"

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΒ Π²ΡΠ΅ Π²Π΅Ρ‚ΠΊΠΈΒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ:

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

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

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

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

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

ΠΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²Π΅Ρ‚ΠΊΠΎΠΉ some_branch (-b создаСт Π½ΠΎΠ²ΡƒΡŽ):


1

git checkout -b some_branch origin/some_branch

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ:

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ (Π½Π° ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ):

Бписок доступных Π²Π΅Ρ‚ΠΎΠΊ:

Бписок всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ:

Π‘Π»ΠΈΡ‚ΡŒ some_branch с тСкущСй вСткой:

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ (послС ΠΌΠ΅Ρ€Π΄ΠΆΠ°):


1

git branch -d some_branch

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π»ΠΎΠ³:

Π›ΠΎΠ³ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

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

Π›ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ Π²Π΅Ρ‚ΠΎΠΊ ΠΈ слияний:

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

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΡ‚ΠΎ мСнял строчку Ρ„Π°ΠΉΠ»Π°:

ΠžΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ (Ρ…ΡΡˆ смотрим Π² Β«git logΒ» — послСдниС 7 символов):

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ тэга (для быстрой Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ):

ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Git

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΒΆ

Git (ΠΏΡ€ΠΎΠΈΠ·Π½. Β«Π³ΠΈΡ‚Β») — распрСдСлённая систСма управлСния вСрсиями Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» создан Линусом Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄ΡΠΎΠΌ для управлСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ядра Linux. На сСгодняшний дСнь поддСрТиваСтся Π”ΠΆΡƒΠ½ΠΈΠΎ Π₯Π°ΠΌΠ°Π½ΠΎ.

БистСма спроСктирована ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΈΡ… использования Π² скриптах. Π­Ρ‚ΠΎ позволяСт ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ спСциализированныС систСмы контроля вСрсий Π½Π° Π±Π°Π·Π΅ Git ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы. НапримСр, Cogito являСтся ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° ΠΊ рСпозиториям Git, Π° StGit ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Git для управлСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ.

Git ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ быстроС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ слияниС вСрсий, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ инструмСнты для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ истории Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Как ΠΈ Darcs, BitKeeper, Mercurial, SVK, Bazaar ΠΈ Monotone, Git прСдоставляСт ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ копию всСй истории Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ; измСнСния ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ рСпозитория Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Π£Π΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ доступ ΠΊ рСпозиториям Git обСспСчиваСтся git-daemon, gitosis, SSH- ΠΈΠ»ΠΈ HTTP-сСрвСром. TCP-сСрвис git-daemon Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² дистрибутив Git ΠΈ являСтся наряду с SSH Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённым ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ доступа. ΠœΠ΅Ρ‚ΠΎΠ΄ доступа ΠΏΠΎ HTTP, нСсмотря Π½Π° ряд ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΎΡ‡Π΅Π½ΡŒ популярСн Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… сСтях, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСтСвых Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².

ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌΒΆ

git clone β€” созданиС ΠΊΠΎΠΏΠΈΠΈ (ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ) рСпозитория¢

Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ, слСдуСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° со всСй Π΅Π³ΠΎ историСй локально.

ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» http:

git clone http://user@somehost:port/~user/repository/project.git

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

git clone /home/username/project myrepo

ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ бСзопасный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ssh:

git clone ssh://user@somehost:port/~user/repository

Π£ git имССтся ΠΈ собствСнный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»:

git clone git://user@somehost:port/~user/repository/project.git/

Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ svn Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» http:

git svn clone -s http://repo/location

-s – ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ стандартныС ΠΏΠ°ΠΏΠΊΠΈ SVN (trunk, branches, tags)

git fetch ΠΈ git pull β€” Π·Π°Π±ΠΈΡ€Π°Π΅ΠΌ измСнСния ΠΈΠ· Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория¢

Для синхронизации Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git fetch ΠΈ git pull.

git fetch β€” Π·Π°Π±Ρ€Π°Ρ‚ΡŒ измСнСния ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈΠ· рСпозитория ΠΏΠΎ умолчания, основной Π²Π΅Ρ‚ΠΊΠΈ; Ρ‚ΠΎΠΉ, которая Π±Ρ‹Π»Π° использована ΠΏΡ€ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ рСпозитория. ИзмСнСния обновят ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ (remote tracking branch), послС Ρ‡Π΅Π³ΠΎ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ провСсти слияниС с локальной Π²Π΅Ρ‚ΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git merge.

git fetch /home/username/project β€” Π·Π°Π±Ρ€Π°Ρ‚ΡŒ измСнСния ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ синонимы для адрСсов, создаваСмыС ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git remote:

git remote add username-project /home/username/project

git fetch username-project β€” Π·Π°Π±Ρ€Π°Ρ‚ΡŒ измСнСния ΠΏΠΎ адрСсу, опрСдСляСмому синонимом.

ЕстСствСнно, Ρ‡Ρ‚ΠΎ послС ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git diff, Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния с основной:

git merge username-project/master

Команда git pull сразу Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ измСнСния ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ слияниС с Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ.

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

git pull

Π—Π°Π±Ρ€Π°Ρ‚ΡŒ измСнСния ΠΈ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория:

git pull username-project --tags

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сразу ΠΊΠΎΠΌΠ°Π½Π΄Π° git pull.

git push β€” вносим измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉΒΆ

ПослС провСдСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, слияния с основной, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ (ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ). Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° git push.

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свои измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

git push

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ master Π² Π²Π΅Ρ‚ΠΊΡƒ experimental ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория:

git push ssh://yourserver.com/~you/proj.git master:experimental

Π’ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ origin ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ experimental:

git push origin :experimental

Π’ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ master рСпозитория origin (синоним рСпозитория ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Π²Π΅Ρ‚ΠΊΠΈ локальной Π²Π΅Ρ‚ΠΊΠΈ master:

git push origin master:master

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ master рСпозитория origin:

git push origin master --tags

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ master рСпозитория origin (master Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ develop)

git push origin origin/develop:master

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ test Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ origin, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ Π²Π΅Ρ‚ΠΊΠΈ develop:

git push origin origin/develop:refs/heads/test

Π Π°Π±ΠΎΡ‚Π° с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌΒΆ

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ΒΆ

git init β€” созданиС рСпозитория

Команда git init создаСт Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ пустой Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ .git, Π³Π΄Π΅ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π² дальнСйшСм Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ вся информация ΠΎΠ± истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Ρ‚Π΅Π³Π°Ρ… β€” ΠΎ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

mkdir project-dir
cd project-dir
git init
git add ΠΈ git rm β€” индСксация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ β€” ΠΊΠΎΠΌΠ°Π½Π΄Π° git add. Она позволяСт внСсти Π² индСкс β€” Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ β€” измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠΉΠ΄ΡƒΡ‚ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования:

индСксация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π»ΠΈΠ±ΠΎ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ:

git add EDITEDFILE

внСсти Π² индСкс всС измСнСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹:

git add .

Из индСкса ΠΈ Π΄Π΅Ρ€Π΅Π²Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git rm:

ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹:

git rm FILE1 FILE2

Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ удалСния ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ git, ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ сразу всС Ρ„Π°ΠΉΠ»Ρ‹ txt ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ:

git rm Documentation/\*.txt

внСсти Π² индСкс всС ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹:

git rm -r --cached .

Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ вСсь индСкс ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ измСнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ
ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git reset:

ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ вСсь индСкс:

git reset

ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· индСкса ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»:

git reset β€” EDITEDFILE

Команда git reset ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сбрасывания индСкса, поэтому дальшС
Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС внимания.

git status β€” состояниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, индСксированныС Ρ„Π°ΠΉΠ»Ρ‹

ΠšΠΎΠΌΠ°Π½Π΄Ρƒ git status, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ самой часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ наряду с
ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ индСксации. Она Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх измСнСниях,
внСсСнных Π² Π΄Π΅Ρ€Π΅Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ
Π²Π΅Ρ‚ΠΊΠΈ; ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ выводятся внСсСнныС Π² индСкс ΠΈ нСиндСксированныС
Ρ„Π°ΠΉΠ»Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΡ€Π°ΠΉΠ½Π΅ просто:

git status

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, git status ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ с Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌΠΈ слияния ΠΈ
Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ git.

git commit β€” ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

ΠšΠΎΠΌΠΌΠΈΡ‚ β€” Π±Π°Π·ΠΎΠ²ΠΎΠ΅ понятиС Π²ΠΎ всСх систСмах контроля вСрсий, поэтому ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ
ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΠΎ возмоТности быстро. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС достаточно
послС индСксации Π½Π°Π±Ρ€Π°Ρ‚ΡŒ:

git commit

Если индСкс Π½Π΅ пустой, Ρ‚ΠΎ Π½Π° Π΅Π³ΠΎ основС Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ ΠΊΠΎΠΌΠΌΠΈΡ‚, послС Ρ‡Π΅Π³ΠΎ
ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ попросят ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вносимыС измСнСния Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
edit. БохраняСмся, ΠΈ вуаля! ΠšΠΎΠΌΠΌΠΈΡ‚ Π³ΠΎΡ‚ΠΎΠ².

Π•ΡΡ‚ΡŒ нСсколько ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ с git commit:

git commit -a

ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚, автоматичСски индСксируя измСнСния Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НовыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈ этом ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚! Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΆΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‡Ρ‚Π΅Π½ΠΎ.

git commit -m Β«commit commentΒ»

ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ прямо ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки вмСсто тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.

git commit FILENAME

внСсСт Π² индСкс ΠΈ создаст ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π° основС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ СдинствСнного Ρ„Π°ΠΉΠ»Π°.

git reset β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, «ТСсткий» ΠΈΠ»ΠΈ «мягкий»

Помимо Ρ€Π°Π±ΠΎΡ‚Ρ‹ с индСксом (см. Π²Ρ‹ΡˆΠ΅), git reset позволяСт ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ состояниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² истории. Π’ git Π΄Π°Π½Π½ΠΎΠ΅ дСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ²: «мягкого»(soft reset) ΠΈ «ТСсткого» (hard reset).

«Мягкий» (с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ --soft) Ρ€Π΅Π·Π΅Ρ‚ оставит Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ ваши индСкс ΠΈ всС Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, вСрнСтся ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ. Π˜Π½Ρ‹ΠΌΠΈ словами, Ссли Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π½Π΅ΠΌΡƒ, Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ:

  1. git commit β€” Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚
  2. git reset —soft HEAD^ β€” ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ ΡƒΠΆΠ΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, сохраняя всС состояниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ проиндСксированныС Ρ„Π°ΠΉΠ»Ρ‹
  3. edit WRONGFILE
  4. edit ANOTHERWRONGFILE
  5. git add .
  6. git commit -c ORIG_HEAD β€” Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ послСднСму ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ сообщСниС. Если сообщСниС ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ, Ρ‚ΠΎ достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ рСгистр ΠΊΠ»ΡŽΡ‡Π° -с:
    git commit -C ORIG_HEAD

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ HEAD^, ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄ΠΊΡƒ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Β». ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉ описан синтаксис Ρ‚Π°ΠΊΠΎΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ адрСсации Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π₯эши, тэги, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ адрСсация». БоотвСтствСнно, HEAD β€” ссылка Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚. Бсылка ORIG_HEAD послС «мягкого» Ρ€Π΅Π·Π΅Ρ‚Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

ЕстСствСнно, ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΈ Π½Π° Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²,

«ЖСсткий» Ρ€Π΅Π·Π΅Ρ‚ (ΠΊΠ»ΡŽΡ‡ --hard) β€” ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с
ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ. git reset --hard Π²Π΅Ρ€Π½Π΅Ρ‚ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ индСкс Π² состояниС,
ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, ΡƒΠ΄Π°Π»ΠΈΠ² измСнСния ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:

git add .
git commit -m Β«destined to deathΒ»
git reset --hard HEAD~1 β€” большС Π½ΠΈΠΊΡ‚ΠΎ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ этот ΠΏΠΎΠ·ΠΎΡ€Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚...
git reset --hard HEAD~3 β€” ...Π²Π΅Ρ€Π½Π΅Π΅, Ρ‚Ρ€ΠΈ послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Никто. Никогда!

Если ΠΊΠΎΠΌΠ°Π½Π΄Π° достигнСт Ρ‚ΠΎΡ‡ΠΊΠΈ вСтвлСния, удалСния ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚.

Для ΠΊΠΎΠΌΠ°Π½Π΄ слияния ΠΈΠ»ΠΈ выкачивания послСдних ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория
ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π·Π΅Ρ‚Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….

git revert β€” ΠΎΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ситуация, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ трСбуСтся ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния, внСсСнныС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ. git revert создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ измСнСния.

ΠžΡ‚ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ΠΎΠΌ:

git revert config-modify-tag

ΠžΡ‚ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ Ρ…ΡΡˆ:

git revert cgsjd2h

Для использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ состояниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΎΡΡŒ ΠΎΡ‚ состояния, зафиксированного послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.

git log β€” разнообразная информация ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ… Π² Ρ†Π΅Π»ΠΎΠΌ

Иногда трСбуСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²; ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡˆΠΈΡ…
ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»; ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ… Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Для этих
Ρ†Π΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° git log.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ приводится короткая справка ΠΏΠΎ всСм
ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ, ΠΊΠΎΡΠ½ΡƒΠ²ΡˆΠΈΠΌΡΡ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Π΅Ρ‚ΠΊΠΈ (ΠΎ Π²Π΅Ρ‚ΠΊΠ°Ρ… ΠΈ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΈ
ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½ΠΈΠΆΠ΅, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «ВСтвлСния ΠΈ слияния»):

git log

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΏΠΎ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈΠ· ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²
ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊΠ»ΡŽΡ‡ -p (ΠΈΠ»ΠΈ -u):

git log -p

Бтатистика измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Ρ€ΠΎΠ΄Π΅ числа ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², внСсСнных Π² Π½ΠΈΡ…
строк, ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² вызываСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ --stat:

git log --stat

Π—Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ созданиям, пСрСимСнованиям ΠΈ ΠΏΡ€Π°Π²Π°ΠΌ доступа Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡
--summary:

git log --summary

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°
Π΅Π³ΠΎ имя (кстати, Π² ΠΌΠΎΠ΅ΠΉ старой вСрсии git этот способ Π½Π΅ срабатываСт,
ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ » β€” » ΠΏΠ΅Ρ€Π΅Π΄ Β«READMEΒ»):

git log README

ΠΈΠ»ΠΈ, Ссли вСрсия git Π½Π΅ совсСм свСТая:

git log β€” README

Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ приводится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ соврСмСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ синтаксиса. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ
ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ врСмя, начиная Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° (Β«weeksΒ», Β«daysΒ», Β«hoursΒ», Β«sΒ»
ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅):

git log --since=Β«1 day 2 hoursΒ» README
git log --since=Β«2 hoursΒ» README

измСнСния, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ:

git log --since=Β«2 hoursΒ» dir/

МоТно ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π΅Π³ΠΎΠ².

ВсС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, начиная с Ρ‚Π΅Π³Π° v1:

git log v1...

ВсС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ измСнСния Ρ„Π°ΠΉΠ»Π° README, начиная с Ρ‚Π΅Π³Π° v1:

git log v1... README

ВсС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ измСнСния Ρ„Π°ΠΉΠ»Π° README, начиная с Ρ‚Π΅Π³Π° v1 ΠΈ заканчивая Ρ‚Π΅Π³ΠΎΠΌ v2:

git log v1..v2 README

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ возмоТности ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ прСдоставляСт ΠΊΠ»ΡŽΡ‡ --pretty.

ВывСсти Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΏΠΎ строчкС, состоящСй ΠΈΠ· Ρ…ΡΡˆΠ° (здСсь β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉ β€” дальшС):

git log --pretty=oneline

Лаконичная информация ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…, приводятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π²Ρ‚ΠΎΡ€ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:

git log --pretty=short

Π‘ΠΎΠ»Π΅Π΅ полная информация ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…, с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π°Π²Ρ‚ΠΎΡ€Π°, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ, Π΄Π°Ρ‚ΠΎΠΉ создания ΠΈ внСсСния ΠΊΠΎΠΌΠΌΠΈΡ‚Π°:

git log --pretty=full/fuller

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ:

git log --pretty=format:'FORMAT'

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠΎ git log ΠΈΠ· Git Community Book
ΠΈΠ»ΠΈ справкС. ΠšΡ€Π°ΡΠΈΠ²Ρ‹ΠΉ ASCII-Π³Ρ€Π°Ρ„ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² выводится с использованиСм ΠΊΠ»ΡŽΡ‡Π°
--graph.

git diff β€” отличия ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ ΠΈ Ρ‚.Π΄.

Π‘Π²ΠΎΠ΅Π³ΠΎ Ρ€ΠΎΠ΄Π° подмноТСством ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git log ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git diff,
ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ измСнСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ — Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ (Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ
Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ).

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния, Π½Π΅ внСсСнныС Π² индСкс:

git diff

ИзмСнСния, внСсСнныС Π² индСкс:

git diff --cached

ИзмСнСния Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ:

git diff HEAD

ΠŸΡ€Π΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ:

git diff HEAD^

МоТно ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Β«Π³ΠΎΠ»ΠΎΠ²Ρ‹Β» Π²Π΅Ρ‚ΠΎΠΊ:

git diff master..experimental

ΠΈΠ»ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ:

git diff experimental
git show β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ измСнСния, внСсСнныС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния, внСсСнныС Π»ΡŽΠ±Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Π² истории, ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git show:

git show COMMIT_TAG
git blame ΠΈ git annotate β€” ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ часто трСбуСтся Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ написал ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ
ΠΊΠΎΠ΄. Π£Π΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git blame, Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΏΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ
послСднСм ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, ΠΊΠΎΡΠ½ΡƒΠ²ΡˆΠ΅ΠΌΡΡ строки, имя Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°:

git blame README

МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ строки для отобраТСния:

git blame -L 2,+3 README β€” Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ Ρ‚Ρ€Π΅ΠΌ строкам, начиная со Π²Ρ‚ΠΎΡ€ΠΎΠΉ.

Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° git annotate, выводящая ΠΈ строки, ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ
ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…, ΠΈΡ… ΠΊΠΎΡΠ½ΡƒΠ²ΡˆΠΈΡ…ΡΡ:

git annotate README
git grep β€” поиск слов ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ

git grep, Π² Ρ†Π΅Π»ΠΎΠΌ, просто Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚ΠΎΠΉ юниксовой
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Однако ΠΎΠ½ позволяСт слова ΠΈ ΠΈΡ… сочСтания ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ
Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.

Поиск слова tst Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅:

git grep tst

ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ число ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ tst Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅:

git grep -с tst

Поиск Π² старой вСрсии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

git grep tst v1

Команда позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ логичСскоС И ΠΈ Π˜Π›Π˜.

Найти строки, Π³Π΄Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ слово, ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ΅:

git grep -e 'first' --and -e 'another'

Найти строки, Π³Π΄Π΅ встрСчаСтся хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ· слов:

git grep --all-match -e 'first' -e 'second'

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

git branch β€” созданиС, пСрСчислСниС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΎΠΊ

Π Π°Π±ΠΎΡ‚Π° с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ β€” ΠΎΡ‡Π΅Π½ΡŒ лСгкая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π² git, всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ сконцСнтрированы Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ, ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ² Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ:

git branch

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ new-branch:

git branch new-branch

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ, Ссли Ρ‚Π° Π±Ρ‹Π»Π° Π·Π°Π»ΠΈΡ‚Π° (merged) с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ:

git branch -d new-branch

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Π² любом случаС:

git branch -D new-branch

ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ:

git branch -m new-name-branch

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π΅ Π²Π΅Ρ‚ΠΊΠΈ, срСди ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚:

git branch --contains v1.2
git checkout β€” ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

Команда git checkout позволяСт ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ послСдними ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ (Ссли ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎ) Π²Π΅Ρ‚ΠΎΠΊ:

checkout some-other-branch

Боздаст Π²Π΅Ρ‚ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

checkout -b some-other-new-branch

Если Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅ Π±Ρ‹Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ измСнСния ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Π² Π²Π΅Ρ‚ΠΊΠ΅(HEAD), Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° откаТСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π΄Π°Π±Ρ‹ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ. ΠŸΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΊΡ‚ позволяСт ΠΊΠ»ΡŽΡ‡ -f:

checkout -f some-other-branch

Π’ случаС, ΠΊΠΎΠ³Π΄Π° измСнСния Π½Π°Π΄ΠΎ всС ΠΆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ -m. Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚ Π·Π°Π»ΠΈΡ‚ΡŒ измСнСния Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ, послС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π² Π½ΠΎΠ²ΡƒΡŽ:

checkout -m some-other-branch

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ„Π°ΠΉΠ» (ΠΈΠ»ΠΈ просто Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) позволяСт ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΈΠ΄Π°:

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ somefile ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°:

git checkout somefile

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ somefile ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° Π΄Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π°Π·Π°Π΄ ΠΏΠΎ Π²Π΅Ρ‚ΠΊΠ΅:

git checkout HEAD~2 somefile
git merge β€” слияниС Π²Π΅Ρ‚ΠΎΠΊ (Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²)

БлияниС Π²Π΅Ρ‚ΠΎΠΊ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… систСм, Π² git происходит практичСски ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь. ЕстСствСнно, Ρ‡Ρ‚ΠΎ имССтся ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс ΠΊ популярной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡŽΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Π²Π΅Ρ‚ΠΊΡƒ new-feature:

git merge new-feature

Π’ случаС возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π΅ происходит, Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ Ρ€Π°ΡΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ Π°-ля svn; сами ΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² индСксС ΠΊΠ°ΠΊ Β«Π½Π΅ соСдинСнныС» (unmerged). Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅ΡˆΠ΅Π½Ρ‹, ΠΊΠΎΠΌΠΌΠΈΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ нСльзя.

НапримСр, ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊ Π² Ρ„Π°ΠΉΠ»Π΅ TROUBLE, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² git status.

ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° нСудачная ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° слияния:

git merge experiment

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ мСста:

git status

Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

edit TROUBLE

Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΠ΅ΠΌ наши измСнСния, Ρ‚Π΅ΠΌ самым снимая ΠΌΠ΅Ρ‚ΠΊΠΈ:

git add .

Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния:

git commit

Π’ΠΎΡ‚ ΠΈ всС, Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного. Если Π² процСссС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ΡƒΠΌΠ°Π»ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚, достаточно Π½Π°Π±Ρ€Π°Ρ‚ΡŒ (это Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΠΎΠ±Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π² исходныС состояния):

git reset --hard HEAD

Если ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния Π±Ρ‹Π» ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git reset --hard ORIG_HEAD
git rebase β€” построСниС Ρ€ΠΎΠ²Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π²Π΅Π» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ возмоТности ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ» Π² Π½Π΅ΠΉ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π² основной Π²Π΅Ρ‚ΠΊΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Ρ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π½Π΅Π΅ Π±Ρ‹Π»ΠΈ Π·Π°Π»ΠΈΡ‚Ρ‹ измСнСния с ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСрвСра, Π»ΠΈΠ±ΠΎ сам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π» Π² Π½Π΅ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ git merge. Но Ρ‚ΠΎΠ³Π΄Π° услоТняСтся сама линия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² слишком Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π³Π΄Π΅ участвуСт мноТСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, имССтся Π΄Π²Π΅ Π²Π΅Ρ‚ΠΊΠΈ, master ΠΈ topic, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² начиная с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° вСтвлСния. Команда git rebase Π±Π΅Ρ€Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ topic ΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π²Π΅Ρ‚ΠΊΠΈ master.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ явно указываСтся, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΡƒΠ΄Π° накладываСтся:

git-rebase master topic

Π½Π° master накладываСтся активная Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Π΅Ρ‚ΠΊΠ°:

git-rebase master

ПослС использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ история становится Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ. ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Π° Π² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ мСстах Ρ„Π°ΠΉΠ»ΠΎΠ² появятся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ. ПослС рСдактирования β€” Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² β€” Ρ„Π°ΠΉΠ»Ρ‹ слСдуСт внСсти Π² индСкс ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git add ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git rebase --continue. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π°ΠΌΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git rebase --skip (ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ) ΠΈΠ»ΠΈ git rebase --abort (ΠΎΡ‚ΠΌΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ всСх внСсСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ).

Π‘ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -i (--interactive) ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π±ΡƒΠ΄Π΅Ρ‚ прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ порядок внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, автоматичСски Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

git cherry-pick β€” ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсСнных ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

Если вСдСтся слоТная история Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, с нСсколькими Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсСнных ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, ΠΊ Π΄Π΅Ρ€Π΅Π²Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ (Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚).

ИзмСнСния, внСсСнныС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ Π΄Π΅Ρ€Π΅Π²Ρƒ, автоматичСски проиндСксированы ΠΈ станут ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅:

git cherry-pick BUG_FIX_TAG

ΠšΠ»ΡŽΡ‡ -n ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ измСнСния Π½Π°Π΄ΠΎ просто ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Π΅Π· индСксации ΠΈ создания ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

git cherry-pick BUG_FIX_TAG -n

ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ возмоТности¢

Π₯эш β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ идСнтификация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π’ git для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π»ΡŽΠ±Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ) Ρ…ΡΡˆ ΠΈΠ· 40 символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСтся Ρ…ΡΡˆΠΈΡ€ΡƒΡŽΡˆΠ΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π° основС содСрТимого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€” это всС: ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Ρ„Π°ΠΉΠ»Ρ‹, тэги, Π΄Π΅Ρ€Π΅Π²ΡŒΡ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ…ΡΡˆ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ для содСрТимого, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ β€” достаточно просто ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π΅ строки Π² сорок символов.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ всСго нас интСрСсуСт Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Ρ…ΡΡˆΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π’ этом смыслС Ρ…ΡΡˆ β€” ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ Ρ€Π΅Π²ΠΈΠ·ΠΈΠΉ Subversion. НСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Ρ…ΡΡˆΠ΅ΠΉ Π² качСствС способа адрСсации:

Π½Π°ΠΉΡ‚ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π·Π° номСром… сами Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠΌ:

git diff f292ef5d2b2f6312bc45ae49c2dc14588eef8da2

Π’ΠΎ ΠΆΠ΅ самоС, Π½ΠΎ оставляСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡˆΠ΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… символов. Git ΠΏΠΎΠΉΠΌΠ΅Ρ‚, ΠΎ ΠΊΠ°ΠΊΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ, Ссли Π½Π΅ сущСствуСт Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° с Ρ‚Π°ΠΊΠΈΠΌ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ…ΡΡˆΠ°:

git diff f292ef5

Иногда Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… символов:

git diff f292

Π§ΠΈΡ‚Π°Π΅ΠΌ Π»ΠΎΠ³ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚:

git log febc32...f292

РазумССтся, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ…ΡΡˆΠ°ΠΌΠΈ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠ°ΠΊ машинС, ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€” тэги.

git tag β€” тэги ΠΊΠ°ΠΊ способ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚

Вэг (tag) β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, связанный с ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ; хранящий ссылку Π½Π° сам ΠΊΠΎΠΌΠΌΠΈΡ‚, имя Π°Π²Ρ‚ΠΎΡ€Π°, собствСнноС имя ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π° Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅Π³Π°Ρ… ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ подпись.

ΠšΡ€ΠΎΠΌΠ΅ этого Π² git прСдставлСнныС Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ «лСгковСсныС тэги» (lightweight tags), состоящиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΠΈ ссылки Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚. Π’Π°ΠΊΠΈΠ΅ тэги, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для упрощСния Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ истории; ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ «лСгковСсный» тэг, связанный с послСдним ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ; Ссли тэг ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ создан Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚:

git tag stable-1

ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚:

git tag stable-2 f292ef5

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π΅Π³:

git tag -d stable-2

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ тэги:

git tag -l

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ тэг для послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ ΡƒΠΆΠ΅ Π±Ρ‹Π»:

git tag -f stable-1.1

ПослС создания тэга Π΅Π³ΠΎ имя ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто Ρ…ΡΡˆΠ° Π² Π»ΡŽΠ±Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… Π²Ρ€ΠΎΠ΄Π΅ git diff, git log ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅:

git diff stable-1.1...stable-1

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ тэги ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для прилоТСния ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π²Ρ€ΠΎΠ΄Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии ΠΈ коммСнтария ΠΊ Π½Π΅ΠΌΡƒ. Π˜Π½Ρ‹ΠΌΠΈ словами, Ссли Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ пишСшь «исправил Ρ‚Π°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π±Π°Π³Β», Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ тэгу ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Β«v1.0Β» Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Β«ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия, готовая ΠΊ использованию».

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тэг для послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°; Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ для составлСния коммСнтария:

git tag -a stable

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тэг, сразу ΡƒΠΊΠ°Π·Π°Π² Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:

git tag -a stable -m "production version" 

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ пСрСчислСния, удалСния, пСрСзаписи для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… тэгов Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ для «лСгковСсных» тэгов.

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ адрСсация

ВмСсто Ρ€Π΅Π²ΠΈΠ·ΠΈΠΉ ΠΈ тэгов Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ β€” ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π°Π΄Ρ€Π΅ΡΠ°Ρ†ΠΈΡŽ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ прямо ΠΊ ΠΏΡ€Π΅Π΄ΠΊΡƒ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π²Π΅Ρ‚ΠΊΠΈ master:

git diff master^

Если послС Β«ΠΏΡ‚ΠΈΡ‡ΠΊΠΈΒ» ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€Ρƒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ нСскольким ΠΏΡ€Π΅Π΄ΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² слияния:

Π½Π°ΠΉΡ‚ΠΈ измСнСния ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² master; HEAD здСсь β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ:

git diff HEAD^2

Аналогично, Ρ‚ΠΈΠ»ΡŒΠ΄ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, насколько Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π²Π΅Ρ‚ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ:

Ρ‡Ρ‚ΠΎ привнСс Β«Π΄Π΅Π΄ΡƒΡˆΠΊΠ°Β» Π½Ρ‹Π½Π΅ΡˆΠ½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°:

git diff master^^

Во ТС самоС:

git diff master~2

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°:

git diff master~3^~2
git diff master~6
Ρ„Π°ΠΉΠ» .gitignore β€” объясняСм git, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ слСдуСт ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

Иногда ΠΏΠΎ дирСкториям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ хочСтся постоянно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² сводкС git status. НапримСр, Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ тСкстовых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΉ мусор.

Π—Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ git status ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ, создав Π² ΠΊΠΎΡ€Π½Π΅ ΠΈΠ»ΠΈ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ (Ссли ограничСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… дирСктория) Ρ„Π°ΠΉΠ» .gitignore. Π’ этих Ρ„Π°ΠΉΠ»Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ содСрТимого Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

#ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ .gitignore
#ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ сам .gitignore
.gitignore
#всС html-Ρ„Π°ΠΉΠ»Ρ‹...
*.html
#...ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ
!special.html
#Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΈΠΊΠΈ ΠΈ Π°Ρ€Ρ…ΠΈΠ²Ρ‹
*.[ao]

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы указания ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ· справки git help gitignore.

Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ рСпозитория¢

; git update-server-info : Команда создаСт Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для dumb-сСрвСра Π² $GIT_DIR/info ΠΈ $GIT_OBJECT_DIRECTORY/info ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ссылки ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π΅ΡΡ‚ΡŒ Π½Π° сСрвСрС.

; git count-objects : ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, сколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ потСряно ΠΈ ΠΎΠ±ΡŠΡ‘ΠΌ освобоТдаСмого мСста ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ рСпозитория.
; git gc : ΠŸΠ΅Ρ€Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° локального рСпозитория.

Π Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ΒΆ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пустого рСпозитория Π½Π° сСрвСрС

repo="repo.git" 
mkdir $repo
cd $repo
git init --bare
chown git. -R ./
cd ../

Π˜ΠΌΠΏΠΎΡ€Ρ‚ svn рСпозитория Π½Π° Git-сСрвСр

repo="repo.svn" 
svnserver="http://svn.calculate.ru" 
git svn clone -s $svnserver/$repo $repo
mv $repo/.git/refs/remotes/tags $repo/.git/refs/tags
rm -rf $repo/.git/refs/remotes
rm -rf $repo/.git/svn
mv $repo/.git $repo.git
rm -rf $repo
cd $repo.git
chown git. -R ./
cd ../

Бсылки¢

Git bash: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹

По своСй сути Git прСдставляСт собой Π½Π°Π±ΠΎΡ€ слуТСбных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для выполнСния Π² срСдС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² стилС Unix. ОбС соврСмСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Linux ΠΈ macOS, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ встроСнныС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Unix. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Linux ΠΈ macOS Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git. Microsoft Windows вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку Windows, Π° Π½Π΅ срСду Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Unix.

Π’ срСдС Windows Git часто Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с графичСским интСрфСйсом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π±ΠΎΠ»Π΅Π΅ высокого уровня.ГрафичСскиС интСрфСйсы для Git ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ систСмы контроля вСрсий. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ΄ΡΠΏΠΎΡ€ΡŒΠ΅ΠΌ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² Git, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстро внСсти свой Π²ΠΊΠ»Π°Π΄ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Когда трСбования ΠΊ совмСстной Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° растут вмСстС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ фактичСскиС Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Git. Π­Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ вСрсии с графичСским интСрфСйсом для инструмСнтов ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Git Bash прСдлагаСтся Π² качСствС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Git.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Git Bash?

Git Bash — это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для срСд Microsoft Windows, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обСспСчиваСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ эмуляции для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой Git.Π‘Π°Ρˆ — это Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ Bourne Again Shell. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° — это Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для взаимодСйствия с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΈΡΡŒΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄. Bash — популярная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Linux ΠΈ macOS. Git Bash — это ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСт Bash, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ распространСнныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ bash ΠΈ Git Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Windows.

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Git Bash

Git Bash Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΏΠ°ΠΊΠ΅Ρ‚Π° Git для Windows. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΈ установитС Git для Windows, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния для Windows. ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ .exe ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ для выполнСния Git Bash.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Git Bash

Git Bash выполняСт Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ стандартный интСрфСйс Bash. Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС Bash. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ использованиС Bash Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, посвящСнного Git.

Как ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ°ΠΌ

Команда Bash pwd ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. pwd эквивалСнтно Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ cd Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ DOS (хост консоли Windows).Π­Ρ‚ΠΎ ΠΏΠ°ΠΏΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡƒΡ‚ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ сСанс Bash.

Команда Bash ls ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для «пСрСчислСния» содСрТимого Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. ls эквивалСнтно DIR Π½Π° хост-Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ консоли Windows.

И Bash, ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ хост Windows ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cd. cd — это Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ Β«Change DirectoryΒ». cd вызываСтся с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ cd ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ сСансов Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Git Bash

Git Bash содСрТит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ / usr / bin эмуляции Git Bash. Git Bash Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ довольно Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ Π² Windows. Git Bash поставляСтся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выходят Π·Π° Ρ€Π°ΠΌΠΊΠΈ этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°: Ssh , scp , cat , find .

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Ρ€Π°Π½Π΅Π΅ описанному Π½Π°Π±ΠΎΡ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ Bash, Git Bash Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ основных ΠΊΠΎΠΌΠ°Π½Π΄ Git, обсуТдаСмых Π½Π° этом сайтС.Π£Π·Π½Π°ΠΉΡ‚Π΅ большС Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… страницах Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для git clone , git commit , git checkout , git push , ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ….

.

20 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ Git с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Π±Π»ΠΎΠ³Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ git. Π’ этом Π±Π»ΠΎΠ³Π΅ я расскаТу ΠΎ 20 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… Git, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git.

Π’ΠΎΡ‚ описываСмыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Git:

  • git config
  • git init
  • git clone
  • git Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ
  • git commit
  • git diff
  • git сброс
  • git статус
  • Π³ΠΈΡ‚ Ρ€ΠΌ
  • ΠΆΡƒΡ€Π½Π°Π» git
  • git ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ
  • Ρ‚Π΅Π³ git
  • Π²Π΅Ρ‚ΠΊΠ° git
  • git checkout
  • git слияниС
  • git ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ
  • git push
  • git pull
  • git stash

Π˜Ρ‚Π°ΠΊ, приступим!

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Git

git config

ИспользованиС: git config –global user.имя Β«[имя]Β»

ИспользованиС: git config –global user.email Β«[адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹]Β»

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° устанавливаСт соотвСтствСнно имя Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ….

git init

ИспользованиС: git init [имя рСпозитория]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для запуска Π½ΠΎΠ²ΠΎΠ³ΠΎ рСпозитория.

git clone

ИспользованиС: git clone [url]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния рСпозитория ΠΏΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ URL-адрСсу.

git Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ИспользованиС: git add [Ρ„Π°ΠΉΠ»]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° добавляСт Ρ„Π°ΠΉΠ» Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ.

ИспользованиС: git add *

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° добавляСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько элСмСнтов Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ.

git ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ

ИспользованиС: git commit -m Β«[Π’Π²Π΅Π΄ΠΈΡ‚Π΅ сообщСниС фиксации]Β»

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° постоянно записываСт ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ снимки Ρ„Π°ΠΉΠ»Π° Π² истории вСрсий.

ИспользованиС: git commit -a

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° фиксируСт всС Ρ„Π°ΠΉΠ»Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git add, Π° Ρ‚Π°ΠΊΠΆΠ΅ фиксируСт всС Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€.

git diff

ИспользованиС: git diff

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ различия Π² Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ установлСны.

ИспользованиС: git diff –staged

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ области ΠΈ послСднСй ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉΡΡ вСрсиСй.

ИспользованиС: git diff [пСрвая Π²Π΅Ρ‚Π²ΡŒ] [вторая Π²Π΅Ρ‚Π²ΡŒ]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ различия ΠΌΠ΅ΠΆΠ΄Ρƒ двумя упомянутыми вСтвями.

git сброс

ИспользованиС: git reset [Ρ„Π°ΠΉΠ»]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ», Π½ΠΎ сохраняСт Π΅Π³ΠΎ содСрТимоС.

ИспользованиС: git reset [commit]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° отмСняСт всС фиксации послС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ фиксации ΠΈ сохраняСт измСнСния локально.

ИспользованиС: git reset –hard [commit] Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° отбрасываСт всю ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ возвращаСтся ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ фиксации.

git статус

ИспользованиС: git status

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список всСх Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π³ΠΈΡ‚ RM

ИспользованиС: git rm [Ρ„Π°ΠΉΠ»]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° удаляСт Ρ„Π°ΠΉΠ» ΠΈΠ· вашСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ выполняСт этап удалСния.

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

ИспользованиС: git log

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΆΡƒΡ€Π½Π°Π»Π° вСрсий для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ.

ИспользованиС: git log – ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ [Ρ„Π°ΠΉΠ»]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список вСрсий Ρ„Π°ΠΉΠ»Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ².

git ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ

ИспользованиС: git show [commit]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ измСнСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ содСрТимого ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ фиксации.

Ρ‚Π΅Π³ git

ИспользованиС: git tag [commitID]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для присвоСния Ρ‚Π΅Π³ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ фиксации.

Π²Π΅Ρ‚ΠΊΠ° git

ИспользованиС: git branch

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список всСх Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚Π²Π΅ΠΉ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

ИспользованиС: Π²Π΅Ρ‚ΠΊΠ° git [Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

ИспользованиС: git branch -d [имя Π²Π΅Ρ‚ΠΊΠΈ]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° удаляСт Π²Π΅Ρ‚Π²ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

git ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

ИспользованиС: git checkout [Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

ИспользованиС: git checkout -b [Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° Π½Π΅Π΅.

git слияниС

ИспользованиС: git merge [Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ.

git ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ

ИспользованиС: git remote add [имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ] [Бсылка Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ вашСго локального рСпозитория ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ сСрвСру.

git push

ИспользованиС: git push [имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ] master

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° отправляСт зафиксированныС измСнСния Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² ваш ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

ИспользованиС: git push [имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ] [Π²Π΅Ρ‚ΠΊΠ°]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° отправляСт фиксации Π²Π΅Ρ‚ΠΊΠΈ Π² ваш ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

ИспользованиС: git push –all [имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ всС Π²Π΅Ρ‚ΠΊΠΈ Π² ваш ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

ИспользованиС: git push [имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ]: [имя Π²Π΅Ρ‚ΠΊΠΈ]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° удаляСт Π²Π΅Ρ‚ΠΊΡƒ Π² вашСм ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

git pull

ИспользованиС: git pull [ссылка Π½Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ измСнСния Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС Π² ваш Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

git stash

ИспользованиС: git stash save

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сохраняСт всС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ отслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹.

ИспользованиС: git stash pop

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° восстанавливаСт послСдниС сохранСнныС Ρ„Π°ΠΉΠ»Ρ‹.

ИспользованиС: git stash list

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список всСх сохранСнных Ρ€Π΅Π²ΠΈΠ·ΠΈΠΉ.

ИспользованиС: git stash drop

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° отмСняСт послСдний сохранСнный Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… git? Π’ΠΎΡ‚ руководство ΠΏΠΎ Git, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ. Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ свСрху Π²Π½ΠΈΠ· ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ с этого ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° DevOps.

.

ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС

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