Git āļāļ·āļāļāļ°āđāļĢāļ§āļ°? āļāļģāļāļēāļāđāļĨāđāļēāļ§āđāļē… ðð
ðĐāļāļģāđāļĄāļāđāļāļāļĄāļĩ Git āđāļāļ·āđāļāļāļģ Version Control ?!
āđāđāļāđāļāļāļāļāļēāļāļāļĩāđāļāļāļĄāđāļ§āļāļĒāđāļāļđāđāļĒāļīāđāļāđāļŦāļāđ āļĨāļĩāļāļąāļŠ āļāļāļĢāđāļ§āļąāļĨāļāđāļŠ (Linus Torvalds) āđāļāđāļāļĨāđāļēāļ§āļĄāļēāđāļāļ·āđāļāļāļāđāļ!!! āļāļēāļĢāđāļāļĩāļĒāļāđāļāđāļāđāļĄāđāđāļāđāđāļĢāļ·āđāļāļāļāđāļēāļĒāđāļŠāļĄāļāđāļ āļāļēāļāļāļĩāļāđāļāļāđāļāđāđāļāļŦāļĨāļēāļĒāļĢāļāļ āđāļāļīāđāļĄāļāļĩāđāļāļāļĢāđāđāļŦāļĄāđāđ āļŦāļĢāļ·āļāļĄāļĩāļŦāļĨāļēāļĒāļāļāļāļģāļāļēāļāļĢāđāļ§āļĄāļāļąāļ āļāļēāļĢāļĄāļĩ Version Control āđāļāļĢāļ°āļāļāļāļķāļāļāļģāđāļāđāļāđāļāļĢāļĩāļĒāļāļāļąāđāļāļŠāļāļāļĢāļēāļĄāļāđāļāļāļĄāļĩāļĒāļļāļāļāļ§āļīāļāļĩāļāļĩāđāđāļāđāļāļāļ Git āļāļķāļāđāļāđāļāļāļīāļāļāļēāļāļđāđāļāļīāļāļąāļāļĐāđāđāļāđāļāļāļīāļ ðĨ·ðĨ·āđāļāđāļāļāļĩāđāļāļ°āļāļāļĒāļāļāļāļąāļāļāļķāļ āļāļ§āļāļāļļāļĄ āđāļĨāļ°āļāļĢāļ°āļŠāļēāļāļāļēāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāļļāļāļāļĒāđāļēāļ āđāļĄāđāļ§āđāļēāļāļ°āđāļāđāļāļāļēāļĢāđāļāđāđāļāđāļĨāđāļāđ āļāđāļāļĒāđ āļŦāļĢāļ·āļāļāļēāļĢāļāļāļīāļ§āļąāļāļīāļāļĢāļąāđāļāļĒāļīāđāļāđāļŦāļāđāđāļāļāļāļāļķāļāļāļēāļĢāļĢāļ§āļĄāļāļģāļĨāļąāļāļāļąāļāđāļŦāļĨāđāļēāļāļīāļāļāļēāļāļāļāļ·āđāļāđ
ðĐāļāļēāļĢāļāļīāļāļāļąāđāļ Git āļāļĒāđāļēāļāđāļĄāđāļāļēāļĒāđāļāđ!
āđāļāļĢāļĩāļĒāļĄāļāļąāļ§āđāļŦāđāļāļĢāđāļāļĄ āļāļāđāļāļīāļāđāļ§āđāļāđāļāļāđ https://git-scm.com āđāļĨāđāļ§āļāļĨāļīāļāļāļļāđāļĄāļāļēāļ§āļāđāđāļŦāļĨāļāļŠāļģāļŦāļĢāļąāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļāļāļāļāļļāļāđāļĄāđāļ§āđāļēāļāļ°āđāļāđāļ Windows āļŦāļĢāļ·āļ āļāļđāđāđāļāđ macOS āđāļĨāļ° Linux āđāļĨāđāļ§āļāļīāļāļāļąāđāļāđāļāđāļāļāļ°! āļŦāļēāļāļāļīāļāļāļąāļāļŦāļēāļāļēāļāļāđāļāļāļĢāđāļēāļĒāļĄāļāļāđāļāļēāļāļēāļāđāļēāļ āđāļāđāđāļĄāđāļāđāļāļāļŦāđāļ§āļ āļĄāļĩāļāļđāļĢāļđāđāļŦāđāļāļ§āļēāļĄāļāđāļ§āļĒāđāļŦāļĨāļ·āļāļāļĒāļđāđāđāļŠāļĄāļ ðĩð
# āđāļāđāļēāđāļāļāļđāđāļāđāļ§āđāļāļāļĩāđāđāļāđāđāļĨāļĒ https://git-scm.com/download/linux
apt-get install git
git config --global user.name "āļāļ·āđāļāļāļĩāđāđāļāđ"
git config --global user.email "āļāļĩāđāļĄāļĨāļāļĩāđāđāļāđ"
ðĐāđāļāļĨāđāļāđāļĄāđāļĨāļąāļ: āļāļ·āđāļāļāļēāļāļāļēāļĢāļāļąāļāļāļģ Git
Git Repository āļāļąāđāļāļĄāļēāļĢāļēāļāļāļ ðð
Git repository āđāļāļĢāļĩāļĒāļāđāļŠāļĄāļ·āļāļāļŠāļāļēāļĄāđāļāđāļāļ§āļīāđāļāļĄāļēāļĢāļēāļāļāļāļāļĩāđāđāļāđāļĄāđāļāļāđāļ§āļĒāđāļāđāļ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļĢāļīāđāļĄāļāđāļāđāļāļĢāļāļāļēāļĢāđāļŦāļĄāđāđāļāđāļāđāļ§āļĒāļāļēāļĢāļŠāļĢāđāļēāļāļĢāļĩāđāļāļāļķāđāļāļĄāļē āļŦāļĢāļ·āļāļāļģāļĢāļĩāđāļāļāļāļāļāļđāđāļāļ·āđāļāļĄāļēāđāļāđāļāļāļļāļāđāļĢāļīāđāļĄāļāđāļ
# āļāļģāļŠāļąāđāļāļŠāļĢāđāļēāļ git repository āđāļŦāļĄāđ
git init
āđāļāļĒ Git Repository āļāļĢāļ°āļāļāļāļāđāļ§āļĒāļŠāđāļ§āļāļŦāļĨāļąāļāđāđāļāđāđāđāļāđ
repo/ | |-- .git/ | |-- working-directory/ |-- files
repo/
āļāļ·āļ āļĢāļđāļāđāļāļĨāđāļāļāļĢāđāļāļāļ Git Repository āļāļąāđāļāļŦāļĄāļ.git/
āđāļāđāļāđāļāļĨāđāļāļāļĢāđāļāđāļāļāļāļĩāđāđāļāđāļāļāđāļāļĄāļđāļĨāļŠāļģāļāļąāļāļāļąāđāļāļŦāļĄāļāļāļĩāđāļāļģāđāļāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļģāļāļēāļāļāļāļ Git āđāļĄāđāļāļ§āļĢāđāļāđāđāļāļŦāļĢāļ·āļāļĨāļāđāļāļĒāļāļĢāļworking-directory/
āđāļāđāļāđāļāļĨāđāļāļāļĢāđāļāļĩāđāļāļļāļāļāļ°āļāļģāļāļēāļāļāļąāļāđāļāļĨāđāđāļāđāļ āļŠāļĢāđāļēāļāđāļāļĨāđāđāļŦāļĄāđ āđāļāđāđāļāđāļāļĨāđ āļŦāļĢāļ·āļāļĨāļāđāļāļĨāđāļāļāļāđāļfiles
āļāļ·āļāđāļāļĨāđāļāļēāļāļāđāļēāļāđ āļāļĩāđāļāļļāļāļŠāļĢāđāļēāļāļāļķāđāļāļĄāļēāđāļāđāļāļĢāļāļāļēāļĢ āļāļķāđāļāļāļĒāļđāđāļ āļēāļĒāđāļāđworking-directory/
āļāđāļēāļāļ°āđāļŦāđāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāđāļŦāđāđāļŦāđāļāļāđāļēāļĒāļāđāļēāļĒāļāđāļāļ·āļ……
āđāļĢāļāļāđāļāļĄāļāļāļāļāļĢāļēāļāļāđāļāļĄāļāļēāļ§ | |-- āļŦāđāļāļāļāļąāļ (āļŦāđāļāļāļāļĢāļķāļāļĐāļēāļĨāļąāļāļāļāļāļāļīāļāļāļē) | |-- āļŠāļāļēāļĄāļāđāļāļĄāļĢāļ |-- āļāļŦāļēāļĢāļĢāļąāļāļāđāļēāļ (āđāļāļĨāđāļāđāļēāļāđ)
āđāļĢāļāļāđāļāļĄāļāļāļāļāļĢāļēāļāļāđāļāļĄāļāļēāļ§
āļāļ·āļ repository āļŦāļĢāļ·āļāļŠāļāļēāļāļāļĩāđāļāļĩāđāļāļĢāļēāļāļāđāļāļĄāļāļēāļ§āļŠāļāļāļĨāļđāļāļĻāļīāļĐāļĒāđāļ§āļīāļāļēāļāļēāļĢāļĢāļāļāļāļāļāļīāļāļāļēāļŦāđāļāļāļāļąāļ
āļŦāļĢāļ·āļ.git/
āļāļ·āļāļŦāđāļāļāļĨāļąāļāļāļĩāđāđāļāđāļāļāļ§āļēāļĄāļĨāļąāļāļāļāļāļāļīāļāļāļē āđāļĄāđāļĄāļĩāđāļāļĢāļāļ§āļĢāļŠāļāļāļŠāđāļēāļĒāđāļāđāļēāđāļāđāļāļāļąāđāļāļāļāļāļāļēāļāļāļĢāļēāļāļāđāļāļđāđāļāļĢāļāļ āļđāļĄāļīāļŠāļāļēāļĄāļāđāļāļĄāļĢāļ
āļŦāļĢāļ·āļworking-directory/
āļāļ·āļāļŠāļāļēāļĄāļāļĩāđāļĨāļđāļāļĻāļīāļĐāļĒāđāļāļ°āļĄāļēāļāđāļāļĄāđāļĨāļ°āļāļāļīāļāļąāļāļīāļāļēāļĢāļāđāļēāļāđ āļāļąāļāļāļŦāļēāļĢāļĢāļąāļāļāđāļēāļāļāļāļāļāļāļāļŦāļēāļĢāļĢāļąāļāļāđāļēāļ
āļŦāļĢāļ·āļfiles
āļāļ·āļāđāļāļĨāđāđāļāđāļāļāđāļēāļāđ āļāļĩāđāļĨāļđāļāļĻāļīāļĐāļĒāđāļāļąāđāļāļāļąāļāļāļēāļāļķāđāļāļĄāļē āļāļķāđāļāđāļāļĢāļĩāļĒāļāđāļŠāļĄāļ·āļāļāļāļŦāļēāļĢāļĢāļąāļāļāđāļēāļāļāļĩāđāļāļ°āđāļāļŠāļđāđāļĢāļāđāļāļŠāļāļēāļĄāđāļŦāđāļāđāļāđāļ
Git Commit āļāđāļēāļāļēāļĄāļđāđāļĢ âĄâĄ
Commit āđāļāļĢāļĩāļĒāļāđāļŠāļĄāļ·āļāļāļāļēāļĢāļāļąāļāļŠāļīāļāđāļāļāļĩāđāđāļāđāļāđāļāļĩāđāļĒāļ§āļāļāļāļāļēāļĄāļđāđāļĢāđāļāļāļēāļĢāļāļēāļĢāļķāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļāđāļāļĨāļāđāļāļāļĢāļ°āļ§āļąāļāļīāļĻāļēāļŠāļāļĢāđ āļŦāļĨāļąāļāļāļēāļāđāļāļīāđāļĄāļŦāļĢāļ·āļāđāļāđāđāļāđāļāļĨāđ āđāļĢāļēāļāđāļāļ commit āđāļāļ·āđāļāļāļąāļāļāļķāļāļŠāļīāđāļāļāļĩāđāļāļģāļĨāļāđāļ Git āđāļŠāļĄāļ
# āđāļāļīāđāļĄāđāļāļĨāđāđāļāđāļēāļŠāļđāđ staging area
git add file1.py file2.js
# commit āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļ
git commit -m "āļŠāļĢāđāļēāļāđāļāļĨāđāđāļŦāļĄāđāļŠāļģāļŦāļĢāļąāļāļāļĩāđāļāļāļĢāđ A"
Git Branch āļĨāļ°āļĨāļēāļāļāļēāđāļŦāļĄāļ·āļāļāļāļđāđāļŦāđāļē ðð
āļāļēāļĢāļŠāļĢāđāļēāļāļāļĢāļēāļāļāđāļāđāđāļāļĢāļĩāļĒāļāđāļŠāļĄāļ·āļāļāļāļēāļĢāđāļĒāļāļĒāđāļēāļĒāļāļāļāļāļđāđāļŦāđāļēāļĄāļŦāļēāļ āļąāļĒāļāļĩāđāđāļŦāļāļĢāđāļēāļĒāđāļāļŠāļđāđāļāļīāļĻāļāļēāļāđāļŦāļĄāđāđ āļāļāđāļŠāđāļāļāļēāļāļāļēāļĢāļāļąāļāļāļē āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāļāļĢāļēāļāļāđāđāļāļ·āđāļāļāļģāļāļēāļāļāļāļāļĩāđāļāļāļĢāđāđāļŦāļĄāđāđāļāļĒāđāļĄāđāļāļĢāļ°āļāļāļāđāļāđāļāļ§āļŦāļĨāļąāļ
# āļŠāļĢāđāļēāļāļāļĢāļēāļāļāđāđāļŦāļĄāđ
git branch feature/new-feature
# āļŠāļĨāļąāļāđāļāļāļģāļāļēāļāļāļāļāļĢāļēāļāļāđāđāļŦāļĄāđ
git checkout feature/new-feature
Git Merge āļĢāļ§āļĄāļāļĨāļ°āļāļģāļĨāļąāļāļāđāļāļāļāđāļēāļŠāđ ðĻâðŧðĻâðŧ
āđāļāļāļēāļāļāļĢāļąāđāļāđāļĢāļēāļāđāļāļāļāļģāļāļĨāļąāļāļŠāļāļāļāļĢāļēāļāļāđāļĄāļēāļĢāļ§āļĄāļāļąāļ āļāļąāđāļāļāļ·āļāļāļēāļĢ merge āļāļķāđāļāđāļāļĢāļĩāļĒāļāđāļāđāļāļąāļāļāļēāļĢāļĢāļ§āļĄāļāļāļāļāļģāļĨāļąāļāļāļāļāļŠāļāļāļāļĢāļ°āļāļ§āļāļāļąāļāđāļāļ·āđāļāđāļāđāļēāļŠāļđāđāļĻāļķāļāđāļŦāđāļāđāļāđāļ
# merge āļāļĢāļēāļāļāđ feature/new-feature āļāļĨāļąāļāļŠāļđāđ master
git checkout master
git merge feature/new-feature
ðĐGit āļāļķāđāļāļŠāļāļąāđāļāļāļąāļāļāļģāļŠāļąāđāļāļāđāļēāļāļīāđāļ
Git Clone āļāļĨāļāļāļāļąāļ§āđāļāđāļāļāļē ðūðū
Cloning āđāļāļĢāļĩāļĒāļāđāļāđāļāļąāļāļāļĢāļēāļāļāđāļēāļāļĩāđāļāļĨāļāļāđāļāļĨāļāļāļąāļ§āđāļāļŠāļĢāđāļēāļāļāđāļēāļāđāļŦāļĄāđāđāļāļĢāļĩāđāļāļāļēāļāļāļĩāđāļāļ·āđāļ āļāđāļ§āļĒāļāļģāļŠāļąāđāļāļāļĩāđāđāļĢāļēāļāļ°āđāļāđāļŠāļģāđāļāļēāđāļāļĢāļāļāļēāļĢāļāļąāđāļāļŦāļĄāļāļĄāļēāđāļ§āđāļāļĩāđāđāļāļĢāļ·āđāļāļāļāļāļāđāļĢāļē
# clone āđāļāļĢāļāļāļēāļĢāļĄāļēāļāļēāļ remote repository
git clone https://github.com/user/repo.git
Git Pull āļāļķāļāļĢāđāļāļĒāļāļķāļāļāļąāļðð
āļāļēāļĢāļāļķāļāđāļāļēāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāļāļāđāļāļĢāļāļāļēāļĢāļāļēāļāļāļĩāđāļāļ·āđāļāđ āļĄāļēāļĢāļ§āļĄāļāļąāļāđāļāļĢāļāļāļēāļĢāļāļāļāđāļĢāļēāļāđāļ§āļĒāļāļģāļŠāļąāđāļ pull āļāđāđāļāļĢāļĩāļĒāļāļāļąāļāļāļēāļĢāļĢāļ§āļĄāļāļģāļĨāļąāļāļāļāļāļāļēāļĄāļđāđāļĢāļāļĩāđāļāļķāļāđāļāļ·āđāļāļāđ āļĄāļēāļĢāđāļ§āļĄāļĻāļķāļāļāđāļ§āļĒ
# āļāļķāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļĨāđāļēāļŠāļļāļāļāļēāļ remote āļāđāļāļāļāļģāļāļēāļāļāđāļ
git pull origin main
# āļŦāļĢāļ·āļāđāļāļāļĨāļ°āđāļāļĩāļĒāļāļāļķāđāļ
git fetch origin
git merge origin/main
Git Push āļāļĨāļąāļāļāļāļāļĨāļąāļāđāļ ðð
āđāļāļāļāļ°āļāļĩāđāđāļĢāļēāļāđāļāļāļāļēāļĢāđāļāļĢāđāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāļāļāđāļāļĢāļāļāļēāļĢāđāļŦāđāļāļąāļāđāļāļ·āđāļāļāļĢāđāļ§āļĄāļāļĩāļĄāļĢāļąāļāļĢāļđāđ āđāļĢāļēāļāđāļāļ°āļāđāļāļ push āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāļąāļāļāļĨāđāļēāļ§ āļāļķāđāļāļāđāđāļŦāļĄāļ·āļāļāļāļēāļĢāļāļĨāļąāļāļāļąāļāļāļēāļĢāļĄāļāđāđāļĨāļ°āļāļĨāļ°āļāļģāļĨāļąāļāļŠāļđāđāļāļēāļĢāļāđāļāļŠāļđāđāļāļąāđāļāđāļŦāļĨāļ°
# āļāļĨāļąāļāļāļąāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāļĩāđ commit āđāļĨāđāļ§āļāļķāđāļ remote repo
git push origin feature-branch
# āļāđāļēāļāđāļāļāļāļēāļĢāļāļĨāļąāļāļāļąāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļāļĒāļąāļ remote repo āđāļŦāļĄāđ
git remote add new-origin https://git.new-server.com/repo.git
git push -u new-origin main
“āļāļģāļŠāļąāđāļāđāļŦāļĨāđāļēāļāļĩāđāļāļ·āļāđāļāđāļāļĒāļļāļāļāļ§āļīāļāļĩāļāļąāđāļāļŠāļđāļāđāļāļāļēāļĢāđāļāļĨāļ·āđāļāļāļĒāđāļēāļĒāļāļēāļĢāļĢāļāļāļāļāļāļēāļĄāļđāđāļĢ āđāļĄāđāļ§āđāļēāļāļ°āđāļāđāļāļāļēāļĢāđāļāļĨāļ·āđāļāļāļāļĨāļāļēāļ Clone, āļāļēāļĢāļāļķāļāļāļĨāļąāļāđāļŠāļĢāļīāļĄāļāļēāļ Pull āļŦāļĢāļ·āļāļāļēāļĢāļāļĨāļąāļāļāļąāļāļāļģāļĨāļąāļāļĢāļāļāđāļ§āļĒ Push āļāļēāļĢāđāļāđāļāļēāļāļāļĒāđāļēāļāļāļđāļāļāđāļāļāđāļĨāļ°āđāļŦāļĄāļēāļ°āļŠāļĄāļāļ°āļāļģāđāļŦāđāļāļāļīāļāļąāļāļīāļāļēāļĢāļāļąāļāļāļēāđāļāđāļāļāļāļāļāļļāļāļĢāļēāļāļĢāļ·āđāļāđāļĨāļ°āđāļāđāļĢāļąāļāļāļąāļĒāļāļāļ°āļāļĒāđāļēāļāļŠāļāđāļēāļāļēāļĄ āđāļāļĒāļĄāļĩ Git āļāļāļĒāđāļāđāļāļāļđāđāļŠāļąāđāļāļāļēāļĢāļāļāļāļāļąāļāđāļāđāļāļāļāļāļāļļāļāļāļĒāļđāđāđāļāļ·āđāļāļāļŦāļĨāļąāļ āļŦāļ§āļąāļāļ§āđāļēāđāļŦāļĨāđāļēāļāđāļāļĄāļāļāļąāļ§āļāđāļāļĒāļāļĩāđāļāđāļēāļāļāļāļāļ§āļēāļĄāļāļĩāđāļāļ°āđāļāđāļāļ§āļēāļĄāļĢāļđāđāđāđāļĨāļ°āļāļ§āļēāļĄāļŠāļāļļāļāđāļĄāđāļĄāļēāļāļāđāļāđāļāļĒ āļāļāļāļāļļāļāļāļĩāđāļāđāļēāļāļāļąāļāļāļāļāļāļāđāļēāļē”