ááááºááœááºááŸááá¬ážááá·áº áá¬ážááŸááºážá¡áá
áºááŸáá·áº ááŸáá¯ááºážááŸááºáá«á áá¬ážááŸááºážá¡áá
áºááœáẠdeveloper 745 áŠážá áá°ážáá±á«ááºážáá«áááºááŸá¯ááŒáá·áº ááŒááºáááºáá¬ážáá±á¬ ááŒá±á¬ááºážáá²ááŸá¯ 74 áᯠáá«áááºááŒá®áž 18 áá¯ááẠááááŠážáá¯á¶ážá¡ááŒááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœáẠáá«áááºáá²á·áááºá
- 1.18 ááœááºááŸáááŒá®ážááááºážá áááŸáááá¯ááºáá±á¬á commit rebase áá¯ááºá¡áá
Ạ"git rebase --rebase-merges" ááẠááá¯á¡áá« áááºááá¯ááºážáá¬ážááá·áº "--preserve-merges" ááœá±ážáá»ááºááŸá¯áá±á¬ááºážááᯠá¡á
á¬ážááá¯ážáá«áááºá "git rebase" áá¯ááºáá±á¬ááºáá»ááºááᯠbase commit á¡áá
áºááŒáá·áº commits á
á®ážáá®ážáá»á¬ážááᯠá¡á
á¬ážááá¯ážáááºá á¥ááá¬á¡á¬ážááŒáá·áºá á¡áá»áá¯á·áá±á¬ á¡ááºá¹áá«áááºá¡áá
áºáá»á¬ážááᯠáá®ááœááºáá±áá±á¬ master áá¬áááœá²á áááºááŸáá¡ááŒá±á¡áá±ááá¯á· ááŒá±á¬ááºážááœáŸá±á·áááºá á¥ááá¬á áá¬áááœá²ááŒá®ážáá±á¬áẠáááºááá·áºáá¬ážááá·áº ááŒá¯ááŒááºááŸá¯áá»á¬áž áá«áááºáááºá :
o - o - o (áá«á·áá²á·áá°ážááŒá¬ážáá»ááº)
/
o - o - o - o - o (ááááº)
o - o - o (áá«á·áá²á·áá°ážááŒá¬ážáá»ááº)
/
o - o - o - o - o (ááááº)
ááŒá±á¬ááºážááœáŸá±á·áá¬ážáá±á¬ áá¬áááœá²áá áºáá¯ááœáẠáá¬áááœá²ááœá²á·á ááºážáá¯á¶á¡á¬áž ááááºážááááºážáááºá¡ááœáẠâ--preserve-mergesâ ááœá±ážáá»ááºááŸá¯ááᯠááááºá á¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯áá¯áẠ(git rebase -i --preserve-merges) ááœáẠááŸááºáááºážááᯠáááºážááŒááºááœáá·áºááŒá¯áá±á¬áºáááºážá repository áááºáá±á¬ááºáá¯á¶ááᯠááŒá®ážááŒáá·áºá á¯á¶á áœá¬ ááááºážááááºážáá¬ážááẠá¡á¬áááá¶ááá¯ááºáá«á â--rebase-mergesâ áá¯ááºá¡áá áºááẠááá·áºá¡á¬áž áá»ááºáá áºááŒááºážá ááŒááºáááºá á¯ááœá²á·ááŒááºážááŸáá·áº á¡áááºááŒá±á¬ááºážááŒááºážá¡áá«á¡ááẠá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬ááᯠáá±ážáá±á¬ááºáá±á ááºááœáẠáá¬áááœá²á¡ááœááºáž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá ááœá²á·á ááºážáá¯á¶ááᯠááááºážááááºážáá¬ážááá¯ááºá á±áá«áááºá
á¥ááá¬á "--rebase-merges"á
áá«áá¬ááœááºá·ááŒá¯ ááŒá±á¬ááºážááœáŸá±á·áá¬ážáá±á¬áá¬áááœá²ááŸá áá¬áááœá²ááœá²á·á ááºážáá¯á¶ááᯠááááºážááááºážáá¬ážá áẠáá®ážááŒá¬ážá¡ááá¯ááºážá¡áááºáá áºáá¯á០á¡áá áºáá±á¬áá¬á áá¬áá¬áááœá²áá áºáá¯ááá¯á· ááŒááºáááºá¡ááºáá¯ááºáá¯ááºáááºá ááŒá±á¬ááºážááœáŸá±á·áá¬ážáá±á¬áá¬áááœá²ááŸá áá¬áááœá²ááœá²á·á ááºážáá¯á¶ááᯠááááºážááááºážáᬠáá»ááºááŒááºážááŸááºá á¯áá»á¬ážááᯠá¡ááŒá±á¬ááºážá¡áá²á¡áá»áá¯á·ááŒá¯áá¯ááºáá«á - "git branch new A...B" ááŸáá·áº "git checkout -b new ááá¯á·ááᯠá¡áá¯á¶ážááŒá¯á áááºáá±á¬ááºááŸá¯ "git branch new A...B" ááŸáá·áº "git checkout -b new ááá¯á·ááᯠá¡áá¯á¶ážááŒá¯á á¡ááŒá¬ážá¡ááá¯ááºážá¡áááºááŸá
áºáá¯á áá±á«ááºážá
ááºážááŸá¯á¡ááŒá±áá¶ááᯠáááºááŸááºááŒááºážáááááºá¡áá±á«áº á¡ááŒá±áá¶á áá¬áááœá²á¡áá
áºáá
áºáá¯áááºáá®ážááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯áááºáá±á¬ááºáž A...B" ááœáẠ"A ...B" ááœáẠáááºááŸááºáá¬ážáá±á¬ commit ááŸá
áºáá¯á¡ááŒá¬áž áá±á«ááºážá
ááºážááŸá¯á¡ááŒá±áá¶ááᯠ"git checkout A...B" á០HEAD á¡á¬áž base commit ááŸáá·áº "diff A ááá¯á·ááŒá±á¬ááºážáá¯á¶ááŸáá·áº áááºáá°áááºá ..B" ááẠcommit "B" ááŸáá·áº commit "A" "Ancestor á¡ááŒá¬áž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááŒáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá áá®ážááŒá¬áž my-feature áá¬áááœá²áá áºáá¯ááœáẠáá¯ááºáá±á¬ááºááá·áºá¡áá«á á¥ááá¬á my-feature branch ááᯠcheck out áá¯ááºáá¬ážáá±á¬ master branch ááŸá áá áºáá±áá¬áááºážá០á áááºááá¯ááá·áºá¡áá«ááœáẠá€á¡ááºá¹áá«áááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá ááááºáá á€á¡áá¬ááẠááŒá±á¬ááºážáá²ááŸá¯ááŸááºáááºážááᯠááá¯ááºááá¯ááºá á áºáá±ážááẠááá¯á¡ááºáááºá áááºážááẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááááá¯ááºážááŒá±á¬ááºážááŸááá»áŸáẠá¡áááºáááŒá±áá«á ááá¯á·áá±á¬áẠmaster ááŸáá·áº my-feature á¡ááá¯ááºážá¡áááºáá»á¬ážááŒá¬ážáá±á«ááºážá ááºážááŒááºážá hash ááá¯ááœááºáá»ááºááẠ"git merge-base master my-feature" ááᯠrun áá«á áá¯á¶ááá¯ážáá±áž "git branch my-other-feature hash" ááŸáá·áº áááºáááºáá±á¬ á¡ááá¯ááºážá¡áááºá¡áá áºááᯠáááºáá®ážááŒááºážá Git 2.22 ááœááºá áááºááẠá¡ááŒá¬ážá¡ááá¯ááºážá¡áááºááŸá áºáá¯á áá±á«ááºážá ááºážááŸá¯á¡ááŒá±áá¶ááŸáá·áº áááºá ááºáá±á¬ á¡ááá¯ááºážá¡áááºáá áºáá¯ááᯠáááºáá®ážááẠsyntax "git branch my-other-feature A...B" ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
- ááœá±ááŸááºážááá·áº áá¯ááºáá±á¬ááºáá»ááºá¡ááœááºáž áááŸááá±á¬ áá¬áááœá²á á¡áááºááᯠááŒáááẠ"git áá¬áááœá² --show-current" option ááᯠááá·áºááœááºážáá²á·áááºá
- ááœá±ááŸááºážááá·áº áá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá« dir áááºážááœáŸááºá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠmaster áá¬áááœá²á á¡ááŒá±á¡áá±ááŸáá·áº á¡ááŒáá·áºá¡á ááá¯ááºáá®ááá·áº áá¯á¶á á¶ááá¯á· áá°áá±á¬ááºáá¬á á±ááẠááœáá·áºááŒá¯ááá·áº "git checkout âno-overlay â dir" option ááᯠáá±á«ááºážááá·áºáá²á·áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá¬á áá¬áá¬áááœá²ááœááºááá¯ááºáá±á¬ dir áááºážááœáŸááºáááŒááºááœááºážáááá¹áá°ááá¯ááºáá áºáá¯ááŸááá»áŸáẠ"git checkout master - dir" ááá¯áá¯ááºáá±á¬ááºáá±á¬á¡áá«áá¯á¶ááŸááºá¡á¬ážááŒáá·áºáááºážáááºáá»ááºáá±áá²á·áááºááŒá áºááŒá®áž "--no-overlay ááŒá áºáá«áá â option ááá¯áááºááŸááºáá¬ážáááºá áááºážááá¯áá»ááºáá áºáááá·áºáááºá
- "git diff" command ááẠá¡ááŒá¬áž git utilities áá»á¬ážááŸáá·áº ááœá±ážáá»ááºááŸá¯áá»á¬ážááᯠááá¯ááºááœááºáá¬ááœáẠáá±á«ááºážá ááºážááá¯ááºá á±ááá·áº ááœá²ááŒááºážá áááºááŒá¬ááẠááœá±ážáá»ááºááŸá¯áá»á¬ážá¡ááœáẠuniversal API ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá âgit diffâ ááœááºá ááá¯á¡áá« ááœá±ážáá»ááºá áá¬á¡á¬ážáá¯á¶ážááœáẠáááºážááá¯á·á ááá·áºáá»ááºáááºáá»á¬áž (â--function-contextâ ááŸáá·áº â--no-function-contextâ) ááŸááááºá
- âgit logâ á¡ááœááºááœáẠcommits ááŸáá·áº áá°ážááœá²áá«ááŸááá±á¬ ááá¯ážáá»á²á·áááºáá»á¬ážááᯠá
á
áºáá¯ááºááá¯ááºá
áœááºážááᯠáá±á«ááºážááá·áºáá¬ážááẠ(âáá±á¬ááºááœá²â - áááºááŸááºááá¯áž-ááááºááŒá®áž áá°ážááœá²áá±ážáá¬ážáá° áá²á·ááá¯á·áá±á¬ á¡ááá¯áá±á¬ááºážá¡áá»ááºá¡áááºá¡áá¶áá»á¬ážá á¡ááœáŸááºážáá»á¬ážááᯠáá±á¬á·ááŸáá·áºáááºááá¯áž ááŸá
áºáá»áá¯ážáá¯á¶ážááŒáá·áº á
á
áºáá¯ááºááẠááŒá
áºááá¯ááºáááºá á¥ááá¬-
"git log --pretty="%(trailers:key=Reviewed-by,valueonly)"; - ááŒá±áá¬áá¶á¡ááºáá»ááºá¡áá ẠTrace2 ááᯠááá·áºááœááºážáá¬ážááŒá®ážá ááá¯ááá¯ááºáá»á±á¬áá®ááœá±ááŸáááŒá®áž ááœá²á·á ááºážáááºáá±á¬ááºáá¬ážááá·áº á¡ááœááºáá±á¬áºáááºááᯠáá±ážáá±á¬ááºáá¬ážáááºá Trace2 ááẠááá·áºá¡á¬áž ááá¯ááá¯á¡áá±ážá áááºááœá²ááŒááºážá áááºááŒá¬ááŒááºážááŸáá·áº á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážá¡ááœáẠáá¯ááºáá±á¬ááºááŒá®ážáá±á¬ áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á áœááºážáá±á¬ááºáááºáá±áá¬áá»á¬ážá¡ááŒá±á¬ááºáž telemetry ááᯠá á¯áá±á¬ááºážááẠááœáá·áºááŒá¯ááẠ(ááá¯ááºááœááºáá°ááᯠá¡áá¯á¶ážááŒá¯áá°á០áá¬áááºáá±ážáá¬ážáááºá áá±áá¬ááᯠááŒááºáááá¯á· áá±ážááá¯á·ááŒááºážáááŸááá«);
- âgit bisectâ á¡á á®áááºáá¶á á¬ááᯠááá¯ááá¯áááºááá¯ááºá á±áá²á·ááŒá®áž áááºážááœáẠááŒá¿áá¬ááŸááá±á¬ áááááááºáá»á¬ážááᯠááá¯á¡áá« ááá¯ááá¯ááŸááºážáááºážá áœá¬ áá®ážáá±á¬ááºážááá¯ážááŒááŒá®áž ááá¯ááºáá áºáá¯á á®á¡ááœáẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááá¯ááºáᬠá¡áá»ááºážáá»á¯ááºá á¬áááºážááá¬ážááᯠááŒááá¬ážááẠ(á á¬ááŒá±á¬ááºážá¡áá±á¡ááœáẠááŒá±á¬ááºážáá²ááœá¬ážááá·áºá¡ááá·áºááœááº)á
- á¡ááœáŸááºážá¡áááºááŒá±á¬ááºážááŒááºážá ááŸá¬ážááœááºážáá±á¬ááá·áºááœááºážááŸá¯ááᯠáááºááŸá¬ážáááºá¡ááœáẠáááºážááœáŸááºá¡áááºááŒá±á¬ááºážááŒááºážáá»á¬ážááᯠáá¯á¶ážááŒááºááŒááºážá¡ááœáẠheuristics ááᯠááŒááºáááºááŒááºáááºáá¬ážáá«áááºá áá¶ááááŒá áºáá»áŸáẠááá¯áááºážááŒá±á¬ááºážáá»á¬ážááᯠááœá²ááœá²áá±áááºáᯠááŸááºáá°áá¬ážáááºá
- á¡ááŒá¬ážáááºáá áºáá¯ááœáẠáááºáá áºáá¯ááᯠááá·áºááœááºážááẠááŒáá¯ážá á¬ážáá±á¬á¡áá«ááœáẠááááá±ážáá»ááºáá áºáᯠááŒááááºá áááºážááẠá¡áá»á¬ážá¡á¬ážááŒáá·áº ááŸá¬ážááœááºážááŒá®áž ááŸá¬ážááœááºážáá±á¬ áá»á°ážááœááºááŸá¯ááœáẠáááºááᯠáááºááŸááºááŒááºážáá®ááá¯á· áŠážáááºááœá¬ážá á±ááá¯ááºááẠ(á¥ááá¬á "git tag -f -m "updated message" áá²á·ááá¯á·áá±á¬ áááºáá±á¬ááºááŸá¯áá áºáá¯á my-tag1 my-tag2â³ ááẠtag á¡áá±á¬ááºážáá±á«áºááœáẠtag áá áºáá¯ááᯠáááºáá®ážááááºááŒá áºááŒá®ážá developer á០tag á¡áá áºááᯠtag á¡áá±á¬ááºážááŸááœáŸááºááŒáá±á¬ commit ááœáẠááá·áºááœááºážááẠáá»áŸá±á¬áºááá·áºáá¬ážáá«áááº)
- ááœááºááá·áºáá áºáá¯á á®á¡ááœáẠáááŸáááá¯ááºáá±á¬ á¡áá¬ááá¹áá¯á¡á á¯á¶ááŸáá·áºáááºáááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠááááºážáááºážáá±ážááá·áº áá áºááŒá±áá¯á¶ááá¯ááŸá±á¬ááºáá¬áá±áá¬áá»á¬áž (disk-based "reachability bitmap" áááºáá±á¬ááºáá¯á¶) á¡ááœáẠáá»áá¯ážáááºááᯠááœáá·áºáá¬ážááŒá®áž á¡ááŒá±áá¶á¡áá¬ááá¹áá¯áá áºáá¯á áá«áááºááŸá¯ááᯠáá»ááºááŒááºá áœá¬ áá¯á¶ážááŒááºááá¯ááºá á±áá«áááºá á€ááœá²á·á ááºážáá¯á¶ááẠáá±áá¬ááŒááºáááºááá°ááŒááºážáá¯ááºáááºážáá±á¬ááºááœááºááŸá¯ (git fetch) á áá¯ááºáá±á¬ááºáá»áááºááᯠáááááá¬áᬠáá»áŸá±á¬á·áá»áá±ážáááºá
source: opennet.ru