πŸ”¬ Как Git Ρ…Ρ€Π°Π½ΠΈΡ‚ измСнСния: всС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ πŸ”

Git Ρ…Ρ€Π°Π½ΠΈΡ‚ измСнСния Π² своСй Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ систСму контроля вСрсий для сохранСния истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Git прСдставляСт собой снимок всСх Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Он Ρ…Ρ€Π°Π½ΠΈΡ‚ измСнСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эффСктивноС сТатиС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ссылки Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Git ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру для прСдставлСния Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ссылаСтся Π½Π° своСго родитСля, создавая Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ†Π΅Π»Ρ‹ΠΉ Ρ„Π°ΠΉΠ» сохраняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, измСнСния Π² Ρ„Π°ΠΉΠ»Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ разностСй (diff) с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями Ρ„Π°ΠΉΠ»Π°, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ эффСктивным. Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Git Ρ…Ρ€Π°Π½ΠΈΡ‚ измСнСния:

    # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» "hello.txt"
    touch hello.txt
    
    # ДобавляСм Π² Ρ„Π°ΠΉΠ» строку "Hello, World!"
    echo "Hello, World!" >> hello.txt
    
    # ЀиксируСм измСнСния Π² Git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ
    git add hello.txt
    git commit -m "Added hello.txt"
    
    # ИзмСняСм содСрТимоС Ρ„Π°ΠΉΠ»Π° Π½Π° "Hello, Git!"
    echo "Hello, Git!" > hello.txt
    
    # ЀиксируСм измСнСния Π² Git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ
    git add hello.txt
    git commit -m "Modified hello.txt"
    
    # МоТСм Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии Ρ„Π°ΠΉΠ»Π°
    git checkout HEAD~1 hello.txt
    
Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Git сохраняСт измСнСния для Ρ„Π°ΠΉΠ»Π° "hello.txt". Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, Ρ„Π°ΠΉΠ» создаСтся ΠΈ ΠΊ Π½Π΅ΠΌΡƒ добавляСтся строка "Hello, World!". Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, содСрТимоС Ρ„Π°ΠΉΠ»Π° измСняСтся Π½Π° "Hello, Git!". ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "git checkout".

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Git Ρ…Ρ€Π°Π½ΠΈΡ‚ измСнСния

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

Π”Π΅Ρ€Π΅Π²ΠΎ вСрсий ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹

Π’ Git ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ прСдставляСт собой слСпок Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Он содСрТит ссылку Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΡ€, Π΄Π°Ρ‚Π° ΠΈ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

Π’ Π΄Π΅Ρ€Π΅Π²Π΅ вСрсий Git всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ацикличСского Π³Ρ€Π°Ρ„Π° (DAG). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ SHA-1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСтся с использованиСм Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ позволяСт Git эффСктивно ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈΡ… Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ

Git Ρ…Ρ€Π°Π½ΠΈΡ‚ измСнСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, Π° Π½Π΅ сами ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. Когда Π²Ρ‹ создаСтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Git ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, ΠΈ сохраняСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ состояниСм Ρ„Π°ΠΉΠ»Π°.

Git ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "delta-компрСссия" для хранСния Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ. Π­Ρ‚ΠΎ позволяСт ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ мСсто Π½Π° дискС ΠΈ ускоряСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ ΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Git

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Git Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ (commits) - слСпки Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • Π”Π΅Ρ€Π΅Π²ΡŒΡ (trees) - структуры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранят список Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ссылки Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ.
  • Π‘Π»ΠΎΠ±Ρ‹ (blobs) - сТатыС Ρ„Π°ΠΉΠ»Ρ‹, хранящиС содСрТимоС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.
  • Π’Π΅Π³ΠΈ (tags) - ссылки Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ вСрсий.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Git ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΈΠ»ΠΈ использован ΠΏΠΎ Π΅Π³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ…Π΅ΡˆΡƒ. Π­Ρ‚ΠΎ позволяСт Π»Π΅Π³ΠΊΠΎ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ состояния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Git с измСнСниями ΠΈ обращСниями

git init       # Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Git рСпозитория

touch file.txt  # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° file.txt
git add file.txt     # Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π² индСкс
git commit -m "Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» file.txt"

echo "Hello, World!" > file.txt    # ИзмСнСниС содСрТимого Ρ„Π°ΠΉΠ»Π°
git commit -am "ИзмСнСно содСрТимоС Ρ„Π°ΠΉΠ»Π° file.txt"

echo "Second line" >> file.txt     # Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки
git commit -am "Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° вторая строка"

git log        # ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ Git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "git init". Π”Π°Π»Π΅Π΅ ΠΌΡ‹ создаСм Ρ„Π°ΠΉΠ» "file.txt" ΠΈ добавляСм Π΅Π³ΠΎ Π² индСкс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "git add". Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², измСняя содСрТимоС Ρ„Π°ΠΉΠ»Π° ΠΈ добавляя Π½ΠΎΠ²Ρ‹Π΅ строки. Команда "git log" позволяСт ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

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

Git – это ΠΌΠΎΡ‰Π½ΠΎΠ΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ срСдство, ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

#7 Π£Ρ€ΠΎΠΊΠΈ Git+GitHub - ΠžΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ

ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹. Как ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. 3.3. ΠšΡƒΡ€Ρ Β«Git для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β»

5.1 Git - Reset - ЖСсткий reset --hard: ΠΎΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

4 способа ΠΊΠ°ΠΊ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· git log Π² git bash πŸš€ | Git для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ“š Git: Как Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ измСнСния ΠΈΠ· рСпозитория? Руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸ”₯

πŸ”¬ Как Git Ρ…Ρ€Π°Π½ΠΈΡ‚ измСнСния: всС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ πŸ”

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ script path Π² PyCharm? πŸ€” ПониманиС основ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ понятия

πŸ’‘ Как Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько слов Π² VS Code: простой Π³ΠΈΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸ’»

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ статус Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² Git с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹?