πŸ”— Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ commit Π² git: простоС руководство ΠΈ совСты

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git, Π²Π°ΠΌ понадобится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase -i.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹ΠΉ шаг Π·Π° шагом процСсс:

    
      $ git rebase -i HEAD~n
    
  

Π—Π΄Π΅ΡΡŒ n - количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ. ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с вашими ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ.

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ pick ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ, ΠΊΡ€ΠΎΠΌΠ΅ послСднСго, Π½Π° squash ΠΈΠ»ΠΈ s.

    
      pick 1234567 First commit
      squash 890abcd Second commit
      squash def1234 Third commit
    
  

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ». Git автоматичСски ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π²Π°ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ.

ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ сохранитС Ρ„Π°ΠΉΠ».

Π“ΠΎΡ‚ΠΎΠ²ΠΎ! Π’Π°ΡˆΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹.

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

Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git

Git β€” это распрСдСлСнная систСма управлСния вСрсиями, которая позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ измСнСния. Когда Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Git, Π²Ρ‹ создаСтС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ для сохранСния состояния вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Иногда Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΠΎΠ»Π΅Π΅ чистой ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ для понимания. Π’ Git Π΅ΡΡ‚ΡŒ нСсколько способов ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΈ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π΄Π²Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git merge.

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git rebase

Команда git rebase позволяСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ мСста Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈ нСобходимости. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

Π¨Π°Π³ 1: ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ вашСго рСпозитория Git.

Π¨Π°Π³ 2: ЗапуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase -i HEAD~n, Π³Π΄Π΅ n β€” количСство послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ. НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ послСдниС Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase -i HEAD~3.

git rebase -i HEAD~3

Π¨Π°Π³ 3: Git ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ… ΠΈ инструкциями ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ дальшС. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π·Π°ΠΌΠ΅Π½ΠΈΠ² слово "pick" ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ Π½Π° "squash" ΠΈΠ»ΠΈ "s".

pick 1234567 First commit
squash abcdefg Second commit
squash xyz1234 Third commit

Π¨Π°Π³ 4: Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ. Git автоматичСски ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π³Π΄Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ввСсти Π½ΠΎΠ²ΠΎΠ΅ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅Π΅ всС Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ.

Π¨Π°Π³ 5: Git Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ процСсс объСдинСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ создаст Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с Π½ΠΎΠ²Ρ‹ΠΌ Ρ…ΡΡˆ-ΠΊΠΎΠ΄ΠΎΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git merge

Команда git merge позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, созданныС ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΈ Π²Π΅Ρ‚ΠΎΠΊ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Π¨Π°Π³ 1: ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ вашСго рСпозитория Git.

Π¨Π°Π³ 2: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git merge ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΠ° feature с нСсколькими ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git merge feature

Π¨Π°Π³ 3: Git попытаСтся автоматичСски ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Git сообщит ΠΎΠ± этом, ΠΈ Π²Π°ΠΌ придСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹.

Π¨Π°Π³ 4: ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ объСдинСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π²Π°ΠΌ остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

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

ОбъСдинСниС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Git являСтся Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΠΎΠ»Π΅Π΅ понятной ΠΈ Π»Π΅Π³ΠΊΠΎΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rebase ΠΈΠ»ΠΈ git merge Π² зависимости ΠΎΡ‚ вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ситуации. Π§Ρ‚ΠΎ Π±Ρ‹ Π²Ρ‹ Π½ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ свои измСнСния послС объСдинСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

УспСхов Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Git!

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

Git: ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ (git squash)

5.2 Git - Reset - Мягкий reset --soft: Π·Π°ΠΌΠ΅Π½Π° ΠΈ объСдинСниС ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Git + Intellij Idea - объСдинСниС (squash) ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

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

πŸ”Œ Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ git ΠΊ Qt: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π³Π°ΠΉΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

βš™οΈπŸŒ² Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ Π²Π΅Ρ‚ΠΊΠΈ git: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… β˜‘οΈπŸ”„πŸ“š

πŸ”— Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ commit Π² git: простоС руководство ΠΈ совСты

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ keymap Π² PyCharm?

Как Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΊΠΎΠΌΠΌΠΈΡ‚Π° git bash? πŸ˜•

πŸš€ Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Git? ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π³ΠΈΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ