ΠΡΠ°ΡΠΊΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ Π·Π°Π»ΠΈΠ²ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
Π‘ΠΎΠ·Π΄Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ:
Copy git init
git add -A
git commit -am "Create project"
Π‘ΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ Π½Π°ΠΌ Π΄ΠΎΡΡΡΠΏΠ½Ρ:
ΠΠ°ΠΏΠΈΡΡ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π°: [Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅] [url]
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: testrepo https://... (push)
Π£Π΄Π°Π»ΠΈΡΡ Π²Π΅ΡΠΊΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ:
Copy git remote rm <branch>
ΠΡΠ»ΠΈ Π½Π΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΅Π΅ ΡΠ°ΠΌΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ:
Copy git remote add testrepo https://...
ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ Π½Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
Copy git push -u testrepo main
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
Π£ΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΠΈΠ½Π°ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ β Ρ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΏΠΎΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π² Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ):
Copy git config --local user.name "Andrey Semakin"
git config --local user.email "andrey.semakin@incountry.com"
ΠΡΠΎ Π²Π΅ΡΠΊΠΈ
Π‘Π΅ΠΉΡΠ°Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ Π½Π΅ master Π²Π΅ΡΠΊΡ ΠΈΠΌΠ΅ΡΡ, Π° main
, trunk
ΠΈ development
. ΠΠ°ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π½ΠΈΡ
?
Copy ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΊΠΈ:
$ git branch [-r]
-r - Π²Π΅ΡΠΊΠΈ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ
ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π²Π΅ΡΠΊΡ:
git checkout <branch name>
ΠΠ°Π΄Π°ΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΡ Π²Π΅ΡΠΊ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
git config --global init.defaultBranch <name>
ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠΊΡ
git branch -m <name>
Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π²Π΅ΡΠΊΡ Π² zip-Π°ΡΡ
ΠΈΠ²:
git archive --format zip --output /full/path/to/zipfile.zip master
.gitignore
Π‘ΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠ·ΡΠΊΠΎΠ² ΠΈ ΡΠΈΡΡΠ΅ΠΌ: https://github.com/github/gitignore/
Π’Π°ΠΊ ΠΆΠ΅, Ρ ΠΏΠΎΠΌΠΎΡΡΡ gitignore
ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΡΡΡΡ ΠΏΠ°ΠΏΠΊΡ (bin
, configs
, ...) ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π² ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΡΠ°ΠΉΠ» .gitignore
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:
Copy # Ignore everything in this directory
*
# Except this file
!.gitignore
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠ° β Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΠΏΡΡΡΠΎΠΉ ΡΠ°ΠΉΠ». ΠΠ΅Π³Π»Π°ΡΠ½ΠΎ ΡΡΠ°Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ .gitkeep
.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Ρ Gitignore
Copy ΠΡΠ±Π°Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ° (Π·Π° ΠΈΡΠΊΠ» /):
/some/path/te*.go
ΠΡΠ±ΠΎΠΉ ΠΏΡΡΡ:
/**/te*.go
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΎΠΊ, Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ
Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
ΠΡΡΡ Π΅ΡΠ΅ Π½ΡΠ°Π½Ρ Ρ .gitignore
. ΠΠ°ΠΊ ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΠ°ΠΏΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ Π² ΠΊΡΡΠ΅?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΡ
ΠΎΠΉ ΠΏΡΠΎΠ³ΠΎΠ½ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΎ:
ΠΠ°ΡΠ΅ΠΌ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΡ
ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π²ΡΡΡΠ½ΡΡ:
Copy $ git rm --cached file1 file2 dir/file3
ΠΠ»ΠΈ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²:
Copy $ git rm --cached `git ls-files -i --exclude-from=.gitignore`
ΠΠΎΠ³ΡΡΠΆΠ°Π΅ΠΌΡΡ
git status
ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ:
ΠΏΡΡΠΈ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ
ΠΏΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠ΅ΠΉ ΠΈ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ
ΠΏΡΡΠΈ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΡΡ git (ΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌΡΠ΅)
ΠΡΠΈΠΌΠ΅ΡΡ:
Copy git status -s - ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ - ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»Ρ + Ρ
Π°ΡΠ°ΠΊΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ Π³ΡΠ΅ΠΏΠ°
-v[v] - ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ (Ρ -vv) - ΡΡΠΈΡΠ°ΠΉ diff --git
git stash
About: https://git-scm.com/book/ru/v1/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B-Git-%D0%9F%D1%80%D1%8F%D1%82%D0%B0%D0%BD%D1%8C%D0%B5
git diff
ΠΡΠΎΡΠΌΠΎΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΠΊΠ°ΠΌΠΈ/ΡΠ°ΠΉΠ»Π°ΠΌΠΈ/...
ΠΡΠΈΠΌΠ΅Ρ: ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ²)
Copy git diff --cached <path>
# show differences between index and working tree
# that is, changes you haven't staged to commit
git diff [filename]
# show differences between current commit and index
# that is, what you're about to commit
# --staged does exactly the same thing, use what you like
git diff --cached [filename]
# show differences between current commit and working tree
git diff HEAD [filename]
git blame
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° - ΡΠ²ΠΈΠ΄ΠΈΠΌ: ΠΊΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΡΡΡΠΎΡΠΊΠΈ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ .
hunk - ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΡΠ°ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ => ΠΎΠ΄Π½ΠΎΠΌΡ Π΄ΠΈΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠΎΡΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ hunk'ΠΎΠ²
ΠΡΠΎ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² Π³ΠΈΡΠ΅ (ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ)
Copy ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ:
Π§ΡΠΎ Π·Π½Π°ΡΠΈΡ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ°ΡΠΈΡΡΡΡ: ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡΡΠΎΡΠΈΡ Git?
Π§ΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΊΠ°ΡΠΈΡΡ: ΡΠ°Π±ΠΎΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ (worktree), ΠΈΠ½Π΄Π΅ΠΊΡ (ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ°, staging area), ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠΊΡ, ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΠΊΡ?
Π ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΎΡΠΊΠ°ΡΠΈΡΡ: ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠΌΠΌΠΈΡΡ?
ΠΠ±ΠΎΠ·Π½Π°ΡΠΈΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡ
Π΅ΠΌΠ΅:
(i) (wt)
A - B - C - D - ? - ?
β
master
(HEAD)
A, B, C, D β ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Π²Π΅ΡΠΊΠ΅ master.
(HEAD) β ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ HEAD.
(i) β ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Git. ΠΡΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ c (HEAD) - ΠΏΡΡΡ. ΠΡΠ»ΠΈ Π½Π΅Ρ - ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΌΠΈΡΡ.
(wt) β ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° (working tree). ΠΡΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ (i) β Π½Π΅Ρ Π½Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ β Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
β ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠΌΠΌΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ Π²Π΅ΡΠΊΠ° ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
ΠΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π°Π΄Π°ΡΠΈ:
1. ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ, ΡΡΠΎΠ±Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git checkout:
git checkout aaaaaa
(wt)
(i)
A - B - C - D
β β
(HEAD) master
Π‘Π΅ΠΉΡΠ°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Β«detached HEADΒ». Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠΌΡ Π²Π΅ΡΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, master):
git checkout master
2. ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅Π³ΠΎ
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°. ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
git checkout -b ΠΈΠΌΡ-Π½ΠΎΠ²ΠΎΠΉ-Π²Π΅ΡΠΊΠΈ aaaaaa
(wt)
(i)
A - B - C - D
β β
new master
(HEAD)
3. Π£Π΄Π°Π»ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈ Π²Π΅ΡΠ½ΡΡΡ Π΅Π΅ ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅.
ΠΠ°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅:
(i) (wt)
A - B - C - D - ? - ?
β
master
(HEAD)
3.1 ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ β Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΡΠΌΠ°Π½Π° (stash)
3.1.1 Π’ΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅
ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΡΠΈΠΊΠ°ΡΠΌΠ°Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ (ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ add):
git stash save --keep-index
ΠΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅:
(wt)
(i)
A - B - C - D - ? ?
β β
master stash{0}
(HEAD)
3.1.2 ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ Π½Π΅Ρ
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ Π²ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ Π½Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΠΈΡ
Π² ΠΊΠ°ΡΠΌΠ°Π½ (stash).
git stash save
ΠΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅:
(wt)
(i)
A - B - C - D ?
β β
master stash{0}
(HEAD)
ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ.
git stash apply
ΠΡΠ»ΠΈ stash ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ.
# ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΊΠ°ΡΠΌΠ°Π½Π°
git stash drop
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ stash.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΡ Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅: How to recover a dropped stash in Git?
3.2 ΠΠΏΠ°ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±
ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎ! ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Π΅Π·Π²ΠΎΠ·Π²ΡΠ°ΡΠ½ΠΎ ΡΠ΄Π°Π»ΡΠ΅Ρ Π½Π΅ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈ ΠΈΠ· ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ Π²Π°ΠΌ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π½ΡΠΆΠ½Ρ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ git stash.
ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: Π½Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΠ΅ΡΡΠ½Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ.
ΠΠ΄Π΅ΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ git reset --hard
ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ:
git reset --hard HEAD
ΠΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅:
(wt)
(i)
A - B - C - D - Ρ
- Ρ
β
master
(HEAD)
4. ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅ΠΌΡ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ· Π½Π΅Π΅ Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ (Π½Π΅ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠ΅)
ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎ! ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡΡΠΎΡΠΈΡ Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΡΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ (git push) ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠΎ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ (ΡΠΌ. ΠΏΠΎΡΠ΅ΠΌΡ). ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ· ΠΏΡΠ½ΠΊΡΠ° 5 (git revert).
4.1 ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ:
git reset --soft bbbbbb
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ cccccc Π΄ΠΎ dddddd. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ (ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ) Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
(wt)
(i)
A - B - C - D
β
master
(HEAD)
4.2 Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, Π½ΠΎ Π½Π΅ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅.
git reset bbbbbb
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π²Π΅ΡΠΊΠΈ, Π½ΠΎ Π½Π΅ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ (ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡΡΠΌ).
(i) (wt)
A - B - C - D
β
master
(HEAD)
4.3 ΠΡΠΎΡΡΠΎ Π²ΡΠ±ΡΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎ! ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Π΅Π·Π²ΠΎΠ·Π²ΡΠ°ΡΠ½ΠΎ ΡΠ΄Π°Π»ΡΠ΅Ρ Π½Π΅ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, ΡΠΎ ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ΅ΡΡΠ½Ρ.
ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ git reflog ΠΈ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ; ΠΈΠ½Π°ΡΠ΅ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° ΡΠ΄Π°Π»ΠΈΡ ΠΈΡ
Π±Π΅Π·Π²ΠΎΠ·Π²ΡΠ°ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: Π½Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΠ΅ΡΡΠ½Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ.
ΠΠ°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅:
(i) (wt)
A - B - C - D - ? - ?
β
master
(HEAD)
ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ:
git reset --hard bbbbbb
ΠΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅:
(wt)
(i)
A - B - C - D - Ρ
- Ρ
β
master
(HEAD)
5. ΠΡΠΌΠ΅Π½ΠΈΡΡ ΡΠΆΠ΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½ΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git revert. ΠΠ½Π° ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΏΠΎΡΠ»Π΅ aaaaaa:
# ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ
git revert bbbbbb cccccc dddddd
# ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅Π³ΠΎ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΌΡ (Π½ΠΎΠ²ΠΎΠΌΡ)
git revert bbbbbb..dddddd
# Π»ΠΈΠ±ΠΎ Π² ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΡΠ»ΠΊΠ°Ρ
git revert HEAD~2..HEAD
# ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½ΠΎΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΊΠ° (Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°ΠΊΠΈΡ
Π½Π΅Ρ):
git revert -m 1 abcdef
# ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
git commit -m'Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ'
Submodules
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄Π²ΡΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ git@github.com:nEST-Projects/burp-extension-jy-dependency-example.git
.
Copy $ git submodule add --name pydep git@github.com:nEST-Projects/burp-extension-jy-dependency-example.git dependencies/pydep
ΠΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ: git submodule update --init
(Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ .gitsubmodule
ΡΠ°ΠΉΠ»; dependecies
ΠΊΠ°ΠΊ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π°) Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ dependecies/pydep
Π·Π°ΡΡΠ½Π΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ
ΠΡΠΎΠ±Π»Π΅ΠΌΡ
SSL certificate problem: self signed certificate in certificate chain
Π’ΠΎ Π΅ΡΡΡ, ΠΏΡΡΠΈΠΌ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π½ΠΎ ΡΠΊ ΡΠ΅ΡΡ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉ, ΡΠΎ git Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Π Π΅ΡΠ΅Π½ΠΈΠ΅:
Copy $ git config http.sslVerify "false"
ΠΈΠ»ΠΈ
$ git -c http.sslVerify=false clone https://...
Git GUI
SourceTree β https://www.sourcetreeapp.com/
Github Desktop.