Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

Git Guides

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

git commit creates a commit, which is like a snapshot of your repository. These commits are snapshots of your entire repository at specific times. You should make new commits often, based around logical units of change. Over time, commits should tell a story of the history of your repository and how it came to be the way that it currently is. Commits include lots of metadata in addition to the contents and message, like the author, timestamp, and more.

How Git Commit Works

Commits are the building blocks of «save points» within Git’s version control.

Commits shape history

Commits are lightweight SHA hashes, objects within Git. As long as you’re working with text files, you won’t need to worry about how many files you have, how big they are, or how many commits you make. Git can handle it!

Committing in two phases

How to Use Git Commit

Common usages and options for Git Commit

How to Undo Commits in Git

Sometimes, you may need to change history. You may need to undo a commit. If you find yourself in this situation, there are a few very important things to remember:

What can go wrong while changing history?

In dramatic cases, Git may decide that the histories are too different and the projects are no longer related. This is uncommon, but a big problem.

The most common result is that your git push would return the «deleted» commit to shared history. (First, you would git pull if you were working on the same branch, and then merge, but the results would be the same.) This means that whatever was so important to delete is now back in the repository. A password, token, or large binary file may return without ever alerting you.

git revert is the safest way to change history with Git. Instead of deleting existing commits, git revert looks at the changes introduced in a specific commit, then applies the inverse of those changes in a new commit. It functions as an «undo commit» command, without sacrificing the integrity of your repository’s history. git revert is always the recommended way to change history when it’s possible.

Updating Commits With Git Commit Amend

Examples of Git Commit

Once you’ve staged the files that you want to include in your commit, you’re ready. Whether you commit in a tool like GitHub Desktop, or through your command line, the commit message is important. Commit messages should be short and descriptive of your change. If you are looking through your repository’s history, you’ll be guided by the commit messages, so they should tell a story. Commits in the command line can include the message with the following format:

Commit messages should be present tense and directive, like the following examples:

If you’d like to include more context in your commit messages, you can also include an extended commit message.

Get started with git and GitHub

Review code, manage projects, and build software alongside 40 million developers.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π—Π°ΠΏΠΈΡΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Π˜Ρ‚Π°ΠΊ, Ρƒ вас имССтся настоящий Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ рабочая копия Ρ„Π°ΠΉΠ»ΠΎΠ² для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния ΠΈ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ «снимки» состояния (snapshots) этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² вашСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ достигаСт состояния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π°ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ.

Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… состояний: ΠΏΠΎΠ΄ вСрсионным ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ (отслСТиваСмыС) ΠΈ Π½Π΅Ρ‚ (нСотслСТиваСмыС). ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ β€” это Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π² послСднСм снимкС состояния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°; ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΌΠΈ, ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ. Если ΠΊΡ€Π°Ρ‚ΠΊΠΎ, Ρ‚ΠΎ отслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ β€” это Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Π΅Ρ‚ Git.

НСотслСТиваСмыС Ρ„Π°ΠΉΠ»Ρ‹ β€” это всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅, Π»ΡŽΠ±Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ Π² ваш послСдний снимок состояния ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ. Когда Π²Ρ‹ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, всС Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ отслСТиваСмыми ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Git Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΈΠ·Π²Π»Π΅ΠΊ ΠΈ Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Git Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΈΡ… с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π’Ρ‹ индСксируСтС эти измСнСния, Π·Π°Ρ‚Π΅ΠΌ фиксируСтС всС проиндСксированныС измСнСния, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ†ΠΈΠΊΠ» повторяСтся.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ состояния Ρ„Π°ΠΉΠ»ΠΎΠ²

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

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Π° Ρ„Π°ΠΉΠ»Π° проиндСксированы ΠΈ Π²ΠΎΠΉΠ΄ΡƒΡ‚ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, вспомнили ΠΎΠ΄Π½ΠΎ нСбольшоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² CONTRIBUTING.md Π΄ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π’Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ», вноситС ΠΈ сохраняСтС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния ΠΈ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ. Но Π΄Π°Π²Π°ΠΉΡ‚Π΅-ΠΊΠ° Π΅Ρ‰Ρ‘ Ρ€Π°Π· Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ git status :

Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ статуса

Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠŸΠ΅Ρ€Π²Π°Ρ строка прСдписываСт Git ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Β«.oΒ» ΠΈΠ»ΠΈ Β«.aΒ» β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π²ΠΎ врСмя сборки ΠΊΠΎΠ΄Π°. Вторая строка прСдписываСт ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Ρ‚ΠΈΠ»ΡŒΠ΄Ρƒ (

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ рСкурсивно для всСго Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ рСкурсии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ символ слСш (/) Π² Π½Π°Ρ‡Π°Π»Π΅ шаблона.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ слСш (/) Π² ΠΊΠΎΠ½Π΅Ρ† шаблона.

МоТно ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ шаблон, использовав Π²ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ (!) Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ индСксированных ΠΈ нСиндСксированных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ проиндСксировали, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ git diff Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° сравниваСт содСрТимоС вашСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с содСрТимым индСкса. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Ρ‰Ρ‘ Π½Π΅ проиндСксированныС измСнСния.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ git diff сама ΠΏΠΎ сСбС Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ всС измСнСния сдСланныС с послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Π½Π΅ проиндСксированы. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли Π²Ρ‹ проиндСксируСтС всС свои измСнСния, Ρ‚ΠΎ git diff Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Π΅Ρ€Π½Ρ‘Ρ‚.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π²Ρ‹ проиндСксировали Ρ„Π°ΠΉΠ» CONTRIBUTING.md ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π΅Π³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git diff для просмотра ΠΊΠ°ΠΊ проиндСксированных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² этом Ρ„Π°ΠΉΠ»Π΅, Ρ‚Π°ΠΊ ΠΈ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ проиндСксированы. Если нашС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ выглядит Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git diff для просмотра нСпроиндСксированных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

ΠšΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Π²Π°ΠΌΠΈ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.

Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΡ‘Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст (это ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° Vim):

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΊΠΎΠΌΠΌΠΈΡ‚Π° содСрТит Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git status ΠΈ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ ΠΏΡƒΡΡ‚ΡƒΡŽ строку свСрху. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эти ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ своё сообщСниС ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… для напоминания ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ фиксируСтС.

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ создали свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚! Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π²Ρ‹Π²Π΅Π» Π²Π°ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сСбС: Π½Π° ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ ( master ), какая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма SHA-1 Ρƒ этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ( 463dc4f ), сколько Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ статистику ΠΏΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ/ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌ строкам Π² этом ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅.

Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ сохраняСт снимок состояния вашСго индСкса. Всё, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ проиндСксировали, Ρ‚Π°ΠΊ ΠΈ висит Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠ΅; Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эти измСнСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π²Ρ‹ сохраняСтС снимок состояния вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС.

Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ индСксации

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

Если Π²Ρ‹ просто ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈΠ· своСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² сСкции Β«Changes not staged for commitΒ» (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅, Π½ΠΎ Π½Π΅ проиндСксированныС) Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git status :

Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git rm ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈΠ»ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° удаляСт всС Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π°

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм контроля вСрсий, Git Π½Π΅ отслСТиваСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² явно. Когда Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» Π² Git, Π² Π½Ρ‘ΠΌ Π½Π΅ сохраняСтся Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, говорящих ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½. Однако, Git довольно ΡƒΠΌΡ‘Π½ Π² ΠΏΠ»Π°Π½Π΅ обнаруТСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΉ постфактум β€” ΠΌΡ‹ рассмотрим ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ пСрСмСщСния Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Git ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ mv выглядит нСсколько странным. Если Π²Π°ΠΌ хочСтся ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Git, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

ΠΈ это ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ сработаСт. На самом Π΄Π΅Π»Π΅, Ссли Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого ΠΈ посмотритС Π½Π° статус, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Git считаСт, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°:

Однако, это эквивалСнтно Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Git commit

ΠšΠΎΠΌΠΌΠΈΡ‚ Π² Git ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² SVN

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ дСйствий

Π‘Π½ΠΈΠΌΠΊΠΈ состояния, Π° Π½Π΅ различия

Помимо Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ SVN ΠΈ Git с практичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, ΠΈΡ… базовая рСализация Ρ‚Π°ΠΊΠΆΠ΅ основываСтся Π½Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… концСпциях проСктирования. SVN отслСТиваСт различия Π² Ρ„Π°ΠΉΠ»Π΅, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ модСль управлСния вСрсиями Git базируСтся Π½Π° снимках состояния. НапримСр, Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ SVN содСрТатся различия исходного Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ„Π°ΠΉΠ»Π°, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. А Git записываСт Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ всС содСрТимоС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Git Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ Π² SVN, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Β«ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΒ» ΠΈΠ· Π΅Π³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ β€” Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Git находится ΡƒΠΆΠ΅ готовая рСдакция ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

МодСль снимков состояния Git влияСт практичСски Π½Π° всС аспСкты ΠΌΠΎΠ΄Π΅Π»ΠΈ управлСния вСрсиями, ΠΎΡ‚ инструмСнтов вСтвлСния ΠΈ слияния Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов ΠΏΡ€ΠΈ совмСстной Ρ€Π°Π±ΠΎΡ‚Π΅.

РаспространСнныС ΠΎΠΏΡ†ΠΈΠΈ

ΠšΠΎΠΌΠΌΠΈΡ‚ проиндСксированного состояния ΠΊΠΎΠ΄Π°. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ввСсти ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ. ПослС Π²Π²ΠΎΠ΄Π° коммСнтария сохранитС Ρ„Π°ΠΉΠ» ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° состояния со всСми измСнСниями Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСнСния отслСТиваСмых Ρ„Π°ΠΉΠ»ΠΎΠ² (Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git add ).

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ добавляСт ΠΊΠΎΠΌΠ°Π½Π΄Π΅ commit Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚. ВмСсто создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° проиндСксированныС измСнСния Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, эта ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ настроСнный тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ систСмы с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ commit

ΠžΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄ Β«new file: hello.py Β» сообщаСт ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» hello.py Π±ΡƒΠ΄Π΅Ρ‚ сохранСн ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. ΠšΠΎΠΌΠΌΠΈΡ‚ выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (настраиваСмый Ρ‡Π΅Ρ€Π΅Π· git config ) для Π²Π²ΠΎΠ΄Π° коммСнтария ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ список Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ зафиксированы Π² этом ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅:

ΠžΡΠΎΠ±Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ для ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ Π² Git Π½Π΅Ρ‚, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ пСрвая строка содСрТит описания ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π΄Π»ΠΈΠ½ΠΎΠΉ Π΄ΠΎ 50 символов, Π·Π°Ρ‚Π΅ΠΌ слСдуСт пустая строка ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ пояснСниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

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

ОбновлСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ amend)

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ„Π°ΠΉΠ»ΠΎΠΌ hello.py ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ внСсСм Π² Ρ„Π°ΠΉΠ» hello.py Π½ΠΎΠ²Ρ‹Π΅ измСнСния ΠΈ запустим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π‘Π½ΠΎΠ²Π° откроСтся настроСнный тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Но Π½Π° этот Ρ€Π°Π· ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅. Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ создаСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ послСдний.

РСзюмС

МодСли ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² SVN ΠΈ Π² Git сущСствСнно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, Π½ΠΎ ΠΈΠ·-Π·Π° ΠΎΠ±Ρ‰Π΅ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π°. Если Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Git, имСя ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с SVN, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git β€” простая опСрация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ часто. Π’ SVN ΠΊΠΎΠΌΠΌΠΈΡ‚ β€” слоТная опСрация, связанная с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ запроса, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Git ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ локально ΠΈ ΠΏΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивному Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ.

Π“ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Git?

ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с этим ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΌ руководством.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ β€” это снимки, Π° Π½Π΅ различия

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

Git ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ†ΠΈΡŽ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ инструмСнта. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π°Ρ‚Ρ‹ΠΊΠ°ΡŽΡ‚ΡΡ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡŽ ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вводят Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ всСго проявляСтся Π² «ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ…» ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ git cherry-pick ΠΈΠ»ΠΈ git rebase. По ΠΌΠΎΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, ΠΏΠ΅Ρ€Π²ΠΎΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ β€” интСрпрСтация ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΊΠ°ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΎΠ²Π°Ρ‚ΡŒ. Однако ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ β€” это Π½Π΅ различия, Π° снимки! Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Git станСт понятным, Ссли ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ занавСс ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ рСпозитория. Π˜Π·ΡƒΡ‡ΠΈΠ² модСль хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ посмотрим, ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹ΠΉ взгляд ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ git cherry-pick ΠΈ git rebase.

Если хочСтся ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ-настоящСму, Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π³Π»Π°Π²Ρƒ ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Git (Git internals) ΠΊΠ½ΠΈΠ³ΠΈ Pro Git. Π― Π±ΡƒΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ git/git вСрсии v2.29.2. ΠŸΡ€ΠΎΡΡ‚ΠΎ повторяйтС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π° ΠΌΠ½ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π₯Сши β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π‘Π°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Git-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Git ссылаСтся Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (OID для краткости), Π΄Π°Ρ‘Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя.

ΠœΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ OID Π΄Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΠΎΠΉ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ строки. Π‘Ρ‚Ρ€ΠΎΠΊΠ° рассчитана Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠΌΠ΅Π» ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ с Π½Π΅ΠΉ OID. Если Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ OID, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ список ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… подстрокС OID.

Π‘Π»ΠΎΠ±Ρ‹ β€” это содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ²

На Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±Π»ΠΎΠ±Ρ‹ β€” содСрТимоС Ρ„Π°ΠΉΠ»Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ OID Ρ„Π°ΠΉΠ»Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ, запуститС git rev-parse HEAD:

Если я ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΡŽ Ρ„Π°ΠΉΠ» README.md Π½Π° ΠΌΠΎΡ‘ΠΌ дискС, Ρ‚ΠΎ git status ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π½Π΅Π΄Π°Π²Π½ΠΎ измСнился, ΠΈ Ρ…ΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ содСрТимоС. Когда содСрТимоС Ρ„Π°ΠΉΠ»Π° Π½Π΅ совпадаСт с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ OID Π² HEAD:README.md, git status сообщаСт ΠΎ Ρ„Π°ΠΉΠ»Π΅ ΠΊΠ°ΠΊ ΠΎ «ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° дискС». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΈΠ΄Π½ΠΎ, совпадаСт Π»ΠΈ содСрТимоС Ρ„Π°ΠΉΠ»Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌ содСрТимым Π² HEAD.

Π”Π΅Ρ€Π΅Π²ΡŒΡ β€” это списки ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠ±Ρ‹ хранят содСрТаниС Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ Π½Π΅ Π΅Π³ΠΎ имя. ИмСна бСрутся ΠΈΠ· прСдставлСния ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Git β€” Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π². Π”Π΅Ρ€Π΅Π²ΠΎ β€” это упорядочСнный список ΠΏΡƒΡ‚Π΅ΠΉ Π² ΠΏΠ°Ρ€Π΅ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ OID для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ этому ΠΏΡƒΡ‚ΠΈ. ΠŸΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСны Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π², поэтому Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ!

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ связи ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠšΡ€Π°ΡΠ½Ρ‹Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ β€” наши Π±Π»ΠΎΠ±Ρ‹, Π° Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ β€” Π΄Π΅Ρ€Π΅Π²ΡŒΡ.

Π”Π΅Ρ€Π΅Π²ΡŒΡ Π΄Π°ΡŽΡ‚ названия ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚Ρƒ ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ содСрТат Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ Π² Unix, Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (blob ΠΈΠ»ΠΈ tree) ΠΈ OID ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи. ΠœΡ‹ Π²Ρ‹Ρ€Π΅Π·Π°Π΅ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· 15 Π²Π΅Ρ€Ρ…Π½ΠΈΡ… записСй, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ grep, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² этом Π΄Π΅Ρ€Π΅Π²Π΅ Π΅ΡΡ‚ΡŒ запись README.md, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ OID Π±Π»ΠΎΠ±Π°.

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡƒΡ‚Π΅ΠΉ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π±Π»ΠΎΠ±Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ эти ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΈΠ΄ΡƒΡ‚ Π² ΠΏΠ°Ρ€Π΅ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΡƒΡ‚Π΅ΠΉ, Π½ΠΎ ΠΌΡ‹ Π½Π΅ всСгда ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ эти ΠΈΠΌΠ΅Π½Π° Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ….

Π‘Π°ΠΌΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Π³Π΄Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ рСпозитория ΠΎΠ½ΠΎ находится, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π΄Π΅Ρ€Π΅Π²ΠΎ β€” Ρ€ΠΎΠ»ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π”Π΅Ρ€Π΅Π²ΠΎ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ссылаСтся ^, особоС β€” это ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ. Π’Π°ΠΊΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ основано Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ссылкС ΠΈΠ· вашСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ β€” это ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹

ΠšΠΎΠΌΠΌΠΈΡ‚ β€” это снимок Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° своё ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ состояниС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ снимка.

Π’ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ Π΅ΡΡ‚ΡŒ список Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ снимкам. ΠšΠΎΠΌΠΌΠΈΡ‚ Π±Π΅Π· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ β€” это ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ с нСсколькими родитСлями β€” это ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния.

ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ содСрТат ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ снимки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‚Π΅Ρ€Π° (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ имя, адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ Π΄Π°Ρ‚Ρƒ) ΠΈ сообщСниС ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ для Π°Π²Ρ‚ΠΎΡ€Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° β€” это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ родитСлям.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

НапримСр, ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² v2.29.2 Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ описываСт этот Ρ€Π΅Π»ΠΈΠ·, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ½ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½, Π° Π΅Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€ β€” Ρ‡Π»Π΅Π½ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Git.

Заглянув Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ дальшС Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ git log, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ сообщСниС ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, ΠΎΠ½ΠΎ рассказываСт ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ этим ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ ΠΈ Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ.

ΠšΡ€ΡƒΠ³ΠΈ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹:

ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ β€” это Π±Π»ΠΎΠ±Ρ‹. Они ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ содСрТимоС Ρ„Π°ΠΉΠ»Π°.

Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ β€” это Π΄Π΅Ρ€Π΅Π²ΡŒΡ. Они ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ.

ΠšΡ€ΡƒΠ³ΠΈ β€” это ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π‘Π½Π°ΠΏΡˆΠΎΡ‚Ρ‹ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’Π΅Ρ‚Π²ΠΈ β€” это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Π’ Git ΠΌΡ‹ пСрСмСщаСмся ΠΏΠΎ истории ΠΈ вносим измСнСния, Π² основном Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ OID. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‚Π²ΠΈ Π΄Π°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ нас ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Π’Π΅Ρ‚ΠΊΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ main β€” Π½Π° самом Π΄Π΅Π»Π΅ ссылка Π² Git, ΠΎΠ½Π° называСтся refs/heads/main. Π€Π°ΠΉΠ»Ρ‹ ссылок Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ содСрТат ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° OID ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ эти ссылки ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, указывая Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΠΈ сущСствСнно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Git-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΈ Π±Π»ΠΎΠ±Ρ‹ нСизмСняСмы (ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹), это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… содСрТимоС. ИзмСнив Π΅Π³ΠΎ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ…ΡΡˆ ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎΠ²Ρ‹ΠΉ OID со ссылкой Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚!

ΠžΠ±Ρ‰Π°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° всю ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ. Π’Π΅Ρ‚Π²ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ β€” Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ ΠΈΡ… ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ, Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Π±Π»ΠΎΠ±Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ, Π° Π±Π»ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ. Π’ΠΎΡ‚ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° со всСми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ сразу:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

ВрСмя Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ отсчитываСтся слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. Π‘Ρ‚Ρ€Π΅Π»ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ ΠΈ Π΅Π³ΠΎ родитСлями ΠΈΠ΄ΡƒΡ‚ справа Π½Π°Π»Π΅Π²ΠΎ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΎΠ΄Π½ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ. HEAD ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ здСсь Π½Π° Π²Π΅Ρ‚ΠΊΡƒ main, Π° main ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° самый Π½Π΅Π΄Π°Π²Π½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

ΠšΠΎΡ€Π½Π΅Π²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Ρƒ этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Ρ€Π°ΡΠΊΠΈΠ½ΡƒΠ»ΠΎΡΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄ Π½ΠΈΠΌ, Ρƒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ стрСлки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ доступны ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π²! Π­Ρ‚ΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ ΠΈΡ… OID (ΠΈΡ… содСрТимоС), поэтому снимкам Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ нСсколько ΠΊΠΎΠΏΠΈΠΉ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Git ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ…Π΅ΡˆΠ΅ΠΉ.

Рассматривая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ β€” это снимки: ΠΎΠ½ΠΈ нСпосрСдствСнно ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ прСдставлСниС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π°!

ВычислСниС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ β€” это снимки, ΠΌΡ‹ часто смотрим Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Π΅Π³ΠΎ историчСском прСдставлСнии ΠΈΠ»ΠΈ Π²ΠΈΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π½Π° GitHub ΠΊΠ°ΠΊ diff. На самом ΠΆΠ΅ Π΄Π΅Π»Π΅ сообщСниС ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ часто ссылаСтся Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅. Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ динамичСски ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… снимка ΠΏΡƒΡ‚Ρ‘ΠΌ сравнСния ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ Π΅Π³ΠΎ родитСля. Git ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сосСдниС снимки, Π½ΠΎ ΠΈ Π΄Π²Π° Π»ΡŽΠ±Ρ‹Ρ… снимка Π²ΠΎΠΎΠ±Ρ‰Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, сначала рассмотритС ΠΈΡ… ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Π—Π°Ρ‚Π΅ΠΌ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΡŒΡΡ… Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ поиск Π² Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ, слСдуя ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΡƒΡ‚ΠΈ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ OID.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния для docs, поэтому ΠΌΡ‹ рСкурсивно ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΡ…. Π­Ρ‚ΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния для M.md, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π²Π° Π±Π»ΠΎΠ±Π° ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ построчно ΠΈ отобраТаСтся ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅. Π’Π½ΡƒΡ‚Ρ€ΠΈ docs N.md ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ пропускаСм ΠΈΡ… ΠΈ возвращаСмся ΠΊ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌΡƒ Π΄Π΅Ρ€Π΅Π²Ρƒ. ПослС этого ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π²ΠΈΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ things ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ OID, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ записи README.md.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

На Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ things Π½Π΅ посСщаСтся Π½ΠΈΠΊΠΎΠ³Π΄Π°, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Π½Π΅ посСщаСтся Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ достиТимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ вычислСния Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ зависит ΠΎΡ‚ количСства ΠΏΡƒΡ‚Π΅ΠΉ с Ρ€Π°Π·Π½Ρ‹ΠΌ содСрТимым.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° понятно, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ β€” это снимки, ΠΌΠΎΠΆΠ½ΠΎ динамичСски Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ двумя ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚ΠΎΠ³Π΄Π° этот Ρ„Π°ΠΊΡ‚ Π½Π΅ общСизвСстСн? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π°Ρ‚Ρ‹ΠΊΠ°ΡŽΡ‚ΡΡ Π½Π° идСю ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ β€” это Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅?

Одна ΠΈΠ· ΠΌΠΎΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… Π°Π½Π°Π»ΠΎΠ³ΠΈΠΉ β€” Π΄ΡƒΠ°Π»ΠΈΠ·ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΊΠ°ΠΊ Π΄ΡƒΠ°Π»ΠΈΠ·ΠΌ частиц, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ снимки, Π° ΠΈΠ½ΠΎΠ³Π΄Π° β€” ΠΊΠ°ΠΊ различия. Π‘ΡƒΡ‚ΡŒ Π΄Π΅Π»Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Git-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ β€” Π² ΠΏΠ°Ρ‚Ρ‡Π°Ρ….

ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, Π° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ‚Ρ‡?

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

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

Git ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² ΠΏΠ°Ρ‚Ρ‡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git format-patch. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ°Ρ‚Ρ‡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ ΠΊ Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git apply. Π’ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π½ΠΈ сущСствования ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊΠΎΠΉ способ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π», Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ Π½Π° ΠΎΠ±ΠΌΠ΅Π½ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ нСпосрСдствСнно Ρ‡Π΅Ρ€Π΅Π· ΠΏΡƒΠ»-рСквСсты.

Бамая большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ исправлСниями, Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ‚Ρ‡ тСряСт Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ родитСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² с вашим HEAD. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Π΄Π°ΠΆΠ΅ Ссли Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΈΠ·-Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‚Π΅Ρ€ мСняСтся! Π’ΠΎΡ‚ основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Git Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° «Π°Π²Ρ‚ΠΎΡ€Π°», ΠΈ «ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‚Π΅Ρ€Π°».

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

ИдСя пСрСмСщСния ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ с мСста Π½Π° мСсто ΠΏΠ΅Ρ€Π΅ΡˆΠ»Π° Π² нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ Git ΠΊΠ°ΠΊ «ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²». На самом ΠΆΠ΅ Π΄Π΅Π»Π΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² воспроизводится, создавая Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

Если ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ β€” это Π½Π΅ различия, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ git cherry-pick?

ВычисляСт Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ Π΅Π³ΠΎ родитСля.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ HEAD.

Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ соотвСтствуСт Π½ΠΎΠ²ΠΎΠΌΡƒ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ, Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ созданного ΠΊΠΎΠΌΠΌΠΈΡ‚Π° β€” HEAD.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ссылку HEAD Π² этот Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ «ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π»ΠΈ» ΠΊΠΎΠΌΠΌΠΈΡ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» ΠΏΠΎΠ²Π΅Ρ€Ρ… нашСго Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ HEAD, ΠΌΡ‹ создали Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΈ Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ diff совпадаСт со старым ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.

А Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ git rebase?

Команда git rebase β€” это способ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. Π’ простой Ρ„ΠΎΡ€ΠΌΠ΅ это Π½Π° самом Π΄Π΅Π»Π΅ сСрия ΠΊΠΎΠΌΠ°Π½Π΄ git cherry-pick, которая воспроизводит различия ΠΏΠΎΠ²Π΅Ρ€Ρ… Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

Π—Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° rebase просто ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈ выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git cherry-pick Π² этом Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², начиная со старых. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ OID, Π½ΠΎ схоТих с ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅ HEAD с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° развСтвлСния target. ΠŸΡ€ΠΈ запускС git rebase target, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ список ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² A, B, ΠΈ C, вычисляСтся общая Π±Π°Π·Π° P. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ²Π΅Ρ€Ρ… target ΠΎΠ½ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ cherry-pick, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ A’, B’ ΠΈ C’.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ A’, B’ ΠΈ C’ β€” это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с ΠΎΠ±Ρ‰ΠΈΠΌ доступом ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· A, B ΠΈ C, Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. На самом Π΄Π΅Π»Π΅ старыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² вашСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ начнётся сбор мусора.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git range-diff ΠΌΡ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π²ΡƒΡ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²! Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Git, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ rebase Π½Π° Ρ‚Π΅Π³ v2.29.2, Π° Π·Π°Ρ‚Π΅ΠΌ слСгка измСню описаниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ range-diff ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ 17e7dbbcbc ΠΈ 2aa8919906 «Ρ€Π°Π²Π½Ρ‹», Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠ°Ρ‚Ρ‡. Вторая ΠΏΠ°Ρ€Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² различаСтся: ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° измСнилось, Π΅ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΊΠ° Π² README.md, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ Π±Ρ‹Π»ΠΎ Π² исходном ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅.

Если ΠΏΡ€ΠΎΠΉΡ‚ΠΈ вдоль Π΄Π΅Ρ€Π΅Π²Π°, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ история ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² всё Π΅Ρ‰Ρ‘ сущСствуСт Ρƒ ΠΎΠ±ΠΎΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². НовыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π΅Π³ v2.29.2 β€” Π² истории это Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ старыС ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π΅Π³ v2.28.0 β€” Π±ΠΎΠ»Π΅Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠΉ, Π° Π² истории ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ.

Если ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ – Π½Π΅ отличия, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Git отслСТиваСт пСрСимСнования?

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ посмотрСв Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Git Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ отслСТиваСт измСнСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ Π² сохранённых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. МоТно Π·Π°Π΄Π°Ρ‚ΡŒΡΡ вопросом: «ΠžΡ‚ΠΊΡƒΠ΄Π° Git Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅?»

Git Π½Π΅ отслСТиваСт пСрСимСнования. Π’ Π½Ρ‘ΠΌ Π½Π΅Ρ‚ структуры Π΄Π°Π½Π½Ρ‹Ρ…, которая Ρ…Ρ€Π°Π½ΠΈΠ»Π° Π±Ρ‹ запись ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ ΠΈ Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΈΠΌΠ΅Π»ΠΎ мСсто ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅.

ВмСсто этого Git пытаСтся ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ пСрСимСнования Π²ΠΎ врСмя динамичСского вычислСния Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ. Π•ΡΡ‚ΡŒ Π΄Π²Π° этапа обнаруТСния ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ: ΠΈΠΌΠ΅Π½Π½ΠΎ пСрСимСнования ΠΈ рСдактирования.

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

На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сопоставлСния Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ OID Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΈ провСряСтся ΠΈΡ… Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ соотвСтствиС. Π’Π°ΠΊΠΈΠ΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ совпадСния ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² ΠΏΠ°Ρ€Ρ‹.

Вторая стадия β€” дорогая Ρ‡Π°ΡΡ‚ΡŒ вычислСний: ΠΊΠ°ΠΊ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹? ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ сравнитС этот Ρ„Π°ΠΉΠ» с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ схоТСсти Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ количСству строк. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 50 % ΠΎΠ±Ρ‰ΠΈΡ… строк, засчитываСтся ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Алгоритм сравниваСт эти ΠΏΠ°Ρ€Ρ‹ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ максимальноС совпадСниС.

Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ? Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ прогоняСт A * D Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ, Π³Π΄Π΅ A β€” количСство Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΉ ΠΈ D β€” количСство ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρƒ Π½Π΅Π³ΠΎ квадратичная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ! Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ слишком Π΄ΠΎΠ»Π³ΠΈΡ… вычислСний ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ, Git пропустит Ρ‡Π°ΡΡ‚ΡŒ с ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΉ с ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Ссли A + D большС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π»ΠΈΠΌΠΈΡ‚Π°. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройкой ΠΎΠΏΡ†ΠΈΠΈ diff.renameLimit Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, просто ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠ² diff.renames.

Π― воспользовался знаниями ΠΎ процСссС обнаруТСния ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ Π² своих собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. НапримСр, Ρ„ΠΎΡ€ΠΊΠ½ΡƒΠ» VFS for Git, создал ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Scalar ΠΈ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ большоС количСство ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΏΡ€ΠΈ этом сущСствСнно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ структуру Ρ„Π°ΠΉΠ»Π°. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° историСй вСрсий Π² VFS for Git, поэтому Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ состоял ΠΈΠ· Π΄Π²ΡƒΡ… этапов:

, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ пСрСимСновывания.

Π― сократил Π²Ρ‹Π²ΠΎΠ΄: Π΄Π²Π° этих послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡƒΡ‚ΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Scalar/CommandLine/ScalarVerb.cs, вмСсто этого отслСТивая ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ GVSF/GVFS/CommandLine/GVFSVerb.cs, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Git распознал Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ содСрТимого ΠΈΠ· ΠΊΠΎΠΌΠΌΠΈΡ‚Π° fb3a2a36 [RENAME] Rename all files.

НС ΠΎΠ±ΠΌΠ°Π½Ρ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ большС

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ β€” это ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹, Π° Π½Π΅ различия! ПониманиС этого ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Git.

И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π²ΠΎΠΎΡ€ΡƒΠΆΠ΅Π½Ρ‹ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΌΠΈ знаниями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Git. НС Π²Π°ΠΆΠ½ΠΎ, какая Ρƒ вас спСциализация, frontend, backend, ΠΈΠ»ΠΈ вовсС fullstack β€” Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти знания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ свои Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Git’Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссах Π² вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅. А ΠΊ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π° Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ знаниями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ свою Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ спСциалиста ΠΈΠ»ΠΈ вовсС ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ сфСру.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ commit Π² github

Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡΡ… ΠΈΠ»ΠΈ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΡ… с нуля:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *