GitΒΆ

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡΒΆ

Git являСтся распрСдСлСнным, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ зависит ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСрвСра, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранятся Ρ„Π°ΠΉΠ»Ρ‹. ВмСсто этого ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ локально, сохраняя Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ… Π½Π° ТСстком дискС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ.

ΠšΠΎΠΌΠΌΠ°Π½Π΄Ρ‹ΒΆ

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΎΠΏΡ†ΠΈΠΉ
> git config --global user.name "My Name"
> git config --global user.email myEmail@example.com

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ дСйствиС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ рСпозитория

git Ρ…Ρ€Π°Π½ΠΈΡ‚ свои Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ прямо Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

> git init

Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΈ создаст ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ .git, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ история рСпозитория ΠΈ настройки.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ состояния

ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии рСпозитория: Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π° Π»ΠΈ информация Π½Π° Π½Ρ‘ΠΌ, Π½Π΅Ρ‚ Π»ΠΈ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ помСнялось, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. А Ρ‚Π°ΠΊ ΠΆΠ΅ список сдСланных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π°Ρ…, созданиС Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Ρ‚Π΄.

> git status
ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²

ДобавляСт ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» Π² отслСТиваСмыС (Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²), Ρ‚.Π΅. Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π‘ΠΏΠ΅Ρ€Π²Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ пустая, Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π½Π΅Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (ΠΈΠ»ΠΈ части Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ строчки) ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ add.

> git add fileName.txt
> git add -A
ΠšΠΎΠΌΠΌΠΈΡ‚(фиксация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ)

ΠšΠΎΠΌΠΌΠΈΡ‚ прСдставляСт собой состояниС рСпозитория Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния, Π½ΡƒΠΆΠ½ΠΎ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² области ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ (срСди отслСТиваСмых Ρ„Π°ΠΉΠ»ΠΎΠ²)

git commit -m "Initial commit."

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ со всСми измСнСниями ΠΈΠ· области ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° fileName.txt).

ΠšΠ»ΡŽΡ‡ -m ΠΈ сообщСниС Β«Initial commit.Β» β€” это созданноС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ описаниС всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠΌΠΌΠΈΡ‚.

Π£Π΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

ПослС ΠΊΠΎΠΌΠΌΠ°Π½Π΄Ρ‹ (commit) ΠΊΠΎΠΌΠΌΠΈΡ‚ являСтся Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ β€” сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ .git Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

  1. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ

    Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, сначала Π½ΡƒΠΆΠ½ΠΎ ΠΊ Π½Π΅ΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π³Π»Π°Π²Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ называСтся origin.

    > git remote add origin https://uri.git
    
  2. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° сСрвСр

    Π­Ρ‚ΠΎΡ‚ процСсс происходит ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

    > git push origin master
    

    (master β€” это Π²Π΅Ρ‚ΠΊΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для всСх Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²)

  3. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория
    > git clone https://uri.git
    

    Новый Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ создаСтся автоматичСски

  4. Запрос ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с сСрвСра

    ИзмСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pull.

    > pull origin master
    
Π’Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅

Π’ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ считаСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Π΅Ρ‚ΠΊΠΎΠΉ.

Π’Π΅Ρ‚Π²ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° измСнСния Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅ ΡΠ»ΠΈΡ‚ΡŒ измСнСния вмСстС.

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ
    > git branch branchName
    

    Π­Ρ‚ΠΎ создаст Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ копию Π²Π΅Ρ‚ΠΊΠΈ master.

    УдаляСт Π²Π΅Ρ‚ΠΊΡƒΒΆ
    > git branch -d branchName
    
  2. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ
    > git branch
    |   branchName
    |   * master
    

    master β€” это активная Π²Π΅Ρ‚ΠΊΠ°, ΠΎΠ½Π° ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π° Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ

    ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒΒΆ
    > git checkout branchName
    
  3. БлияниС Π²Π΅Ρ‚ΠΎΠΊ

    БлияниС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ содСрТимоС Π²Π΅Ρ‚ΠΊΠΈ источника ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΡ… с Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ. Π’ этом процСссС измСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ цСлСвая Π²Π΅Ρ‚ΠΊΠ°. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ исходных Π²Π΅Ρ‚ΠΎΠΊ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ.

    > git merge branchName # ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡΠ»ΠΈΡ‚ΡŒ Π°Π·Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ
    
    > git merge branchName master
    
Git Rebase

Rebase β€” Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ пСрСнСсти измСнСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Rebase сТимаСт всС измСнСния Π² ΠΎΠ΄ΠΈΠ½ Β«ΠΏΠ°Ρ‚Ρ‡Β». Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ‚Ρ‡ Π² Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ

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

> git checkout branchName
> git rebase master

Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ всю Π²Π΅Ρ‚ΠΊΡƒ branchName Π² master Π²Π΅Ρ‚ΠΊΡƒ. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° измСняСтся, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² основной Π²Π΅Ρ‚ΠΊΠ΅ (master).

GitFlow

https://datasift.github.io/gitflow/IntroducingGitFlow.html

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, сдСланных Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π΅ΡΡ‚ΡŒ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² Π²ΠΈΠ΄Π΅ строки Ρ†ΠΈΡ„Ρ€ ΠΈ Π±ΡƒΠΊΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список всСх ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ log

> git log

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ довольно Π΄Π»ΠΈΠ½Π½Ρ‹Π΅, Π½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ β€” ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… символов Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ достаточно

(b10cc1238e355c02a044ef9f9860811ff605c9b4 -> b10cc123)

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ появилось Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ show

> git show b10cc123

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° diff (с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ)

> git diff 09bd8cc..ba25c0ff
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ

Π“ΠΈΡ‚ позволяСт Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

checkout ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ.

> git checkout 09bd8cc1 fileName.txt
Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

Комманда commit β€”amend Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ всС ΠΈΠ· послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ попытаСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Для Π±ΠΎΠ»Π΅Π΅ слоТных исправлСний, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ Π² послСднСм ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΠΈΠ»ΠΈ Ссли Π²Ρ‹ успСли ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ измСнСния Π½Π° сСрвСр, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ revert. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ измСнСния, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ.

Tip

Π‘Π°ΠΌΡ‹ΠΉ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ доступСн ΠΏΠΎ алиасу HEAD

> git revert HEAD
> git revert b10cc123

ΠŸΡ€ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅ старых ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹. Π’Π°ΠΊΠΎΠ΅ случаСтся, Ссли Ρ„Π°ΠΉΠ» Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ, Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ слиянии

Иногда ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ автоматичСски, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ с этим приходится Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ β€” Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ остаСтся, Π° ΠΊΠ°ΠΊΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ.

> git mergetool
Настройка .gitignore

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ Ρ†Π΅Π»Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ (ΠΈ, скорСС всСго, Π½Π΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ) ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ случайно Π½Π΅ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² git add -A ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„Π°ΠΉΠ»Π° .gitignore

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ .gitignore ΠΈ сохранитС Π΅Π³ΠΎ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

  2. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° пСрСчислитС названия Ρ„Π°ΠΉΠ»ΠΎΠ²/ΠΏΠ°ΠΏΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ с Π½ΠΎΠ²ΠΎΠΉ строки.

  3. Π€Π°ΠΉΠ» .gitignore Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½, Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° сСрвСр, ΠΊΠ°ΠΊ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ» Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.