Git ใซใฏใใใญใธใงใฏใใง็บ็ใใๅ้กใใใใใฐใใใใใฎใใผใซใ็จๆใใใฆใใพใใ Git ใฏใปใจใใฉใใใใ็จฎ้กใฎใใญใธใงใฏใใงไฝฟใใใใใซ่จญ่จใใใฆใใใฎใงใใใฎใใผใซใ้ๅธธใซๆฑ็จ็ใชใใฎใงใใใใใใใใฐใ่ฆใคใใใไธๅ ทๅใฎๅๅ ใๆขใใใใใใใใฎๅฉใใจใชใใงใใใใ
ใณใผใใฎใใฐใ่ฟฝ่ทกใใฆใใใจใใซใใใใใใใคใฉใใช็็ฑใง่ฟฝๅ ใใใใฎใใใ็ฅใใใใชใใใจใใใใงใใใใใใใชๅ ดๅใซใใฃใจใไพฟๅฉใชใฎใใใใกใคใซใฎๆณจ่จใงใใ
ใใใฏใใใกใคใซใฎๅ่กใซใคใใฆใใใฎ่กใๆๅพใซๆดๆฐใใใฎใใฉใฎใณใใใใใ่กจ็คบใใพใใ
ใใใณใผใใฎไธญใฎ็นๅฎใฎใกใฝใใใซใใฐใใใใใจใ่ฆใคใใใใใใฎใใกใคใซใ git blame ใใพใใใใใใใใใฐใใใฎใกใฝใใใฎๅ่กใใใค่ชฐใซใใฃใฆๆดๆฐใใใใฎใใใใใใพใใ
ใใฎไพใงใฏใ-L ใชใใทใงใณใไฝฟใฃใฆ 12 ่ก็ฎใใ 22 ่ก็ฎใพใงใซๅบๅใ้ๅฎใใฆใใพใใ
$ git blame -L 12,22 simplegit.rb
^4832fe2 (Scott Chacon 2008-03-15 10:31:28 -0700 12) def show(tree = 'master')
^4832fe2 (Scott Chacon 2008-03-15 10:31:28 -0700 13) command("git show #{tree}")
^4832fe2 (Scott Chacon 2008-03-15 10:31:28 -0700 14) end
^4832fe2 (Scott Chacon 2008-03-15 10:31:28 -0700 15)
9f6560e4 (Scott Chacon 2008-03-17 21:52:20 -0700 16) def log(tree = 'master')
79eaf55d (Scott Chacon 2008-04-06 10:15:08 -0700 17) command("git log #{tree}")
9f6560e4 (Scott Chacon 2008-03-17 21:52:20 -0700 18) end
9f6560e4 (Scott Chacon 2008-03-17 21:52:20 -0700 19)
42cf2861 (Magnus Chacon 2008-04-13 10:45:01 -0700 20) def blame(path)
42cf2861 (Magnus Chacon 2008-04-13 10:45:01 -0700 21) command("git blame #{path}")
42cf2861 (Magnus Chacon 2008-04-13 10:45:01 -0700 22) endๆๅใฎ้
็ฎใฏใใใฎ่กใๆๅพใซๆดๆฐใใใณใใใใฎ SHA-1 ใฎไธ้จใงใใ
ๆฌกใฎใตใใคใฎ้
็ฎใฏใใใฎใณใใใใใๆฝๅบใใไฝ่
ๆ
ๅ ฑใจใณใใใๆฅๆใงใใใใใงใใใค่ชฐใใใฎ่กใๆดๆฐใใใฎใใ็ฐกๅใซใใใใพใใ
ใใใซ็ถใใฆใ่ก็ชๅทใจใใกใคใซใฎไธญ่บซใ่กจ็คบใใใพใใ
^4832fe2 ใฎใณใใใใซ้ขใใ่กใซๆณจ็ฎใใพใใใใใใใใฎ่กใฏใใใกใคใซใๆๅใซใณใใใใใใใจใใฎใพใพใงใใใใจใ่กจใใพใใ
ใใฎใณใใใใฏใใกใคใซใใใญใธใงใฏใใซๆๅใซ่ฟฝๅ ใใใใจใใฎใใฎใงใใใใใใใฎ่กใฏใใไปฅ้ๅคๆดใใใฆใใพใใใ
ใใใฏใกใใฃใจๆธๆใใใ็ฅใใพใใใGit ใงใฏใใใใพใง็ดนไปใใฆใใใ ใใงๅฐใชใใจใไธ็จฎ้กไปฅไธใฎๆๅณใง ^ ใไฝฟใฃใฆใใพใใใใญใใใใใใใใงใฏใใใใๆๅณใซใชใใฎใงใใ
Git ใฎใใฐใใใใจใใใฎใฒใจใคใซใใใกใคใซใฎใชใใผใ ใๆ็คบ็ใซใฏ่ฟฝ่ทกใใชใใจใใใใจใใใใพใใ
ในใใใใทใงใใใ ใใ่จ้ฒใใใใใชใใผใ ใใใฆใใใฎใชใๆ้ปใฎใใกใซใใใๆคๅบใใพใใ
ใใฎๆฉ่ฝใฎ่ๅณๆทฑใใจใใใฏใใใกใคใซใฎใชใใผใ ใ ใใงใชใใณใผใใฎ็งปๅใซใคใใฆใๆคๅบใงใใใจใใใใจใงใใ
git blame ใซ -C ใๆธกใใจ Git ใฏใใฎใใกใคใซใ่งฃๆใใๅฅใฎใจใใใใใณใใผใใใใณใผใ็ใใชใใใฉใใใๆขใใพใใ
ไพใใฐใGITServerHandler.m ใจใใใใกใคใซใใชใใกใฏใฟใชใณใฐใง่คๆฐใฎใใกใคใซใซๅๅฒใใใจใใพใใใใใใฎใใกใฎใฒใจใคใ GITPackUpload.m ใงใใ
ใใใง -C ใชใใทใงใณใใคใใฆ GITPackUpload.m ใ่ชฟในใใจใใณใผใใฎใฉใฎ้จๅใใฉใฎใใกใคใซใใใณใใผใใใฎใใ็ฅใใใจใใงใใพใใ
$ git blame -C -L 141,153 GITPackUpload.m
f344f58d GITServerHandler.m (Scott 2009-01-04 141)
f344f58d GITServerHandler.m (Scott 2009-01-04 142) - (void) gatherObjectShasFromC
f344f58d GITServerHandler.m (Scott 2009-01-04 143) {
70befddd GITServerHandler.m (Scott 2009-03-22 144) //NSLog(@"GATHER COMMI
ad11ac80 GITPackUpload.m (Scott 2009-03-24 145)
ad11ac80 GITPackUpload.m (Scott 2009-03-24 146) NSString *parentSha;
ad11ac80 GITPackUpload.m (Scott 2009-03-24 147) GITCommit *commit = [g
ad11ac80 GITPackUpload.m (Scott 2009-03-24 148)
ad11ac80 GITPackUpload.m (Scott 2009-03-24 149) //NSLog(@"GATHER COMMI
ad11ac80 GITPackUpload.m (Scott 2009-03-24 150)
56ef2caf GITServerHandler.m (Scott 2009-01-05 151) if(commit) {
56ef2caf GITServerHandler.m (Scott 2009-01-05 152) [refDict setOb
56ef2caf GITServerHandler.m (Scott 2009-01-05 153)ใใใฏใปใใจใใซไพฟๅฉใงใใ ้ๅธธใฏใใใฎใใกใคใซใใณใใผใใใใจใใฎใณใใใใ็ฅใใใจใซใชใใพใใใณใใผๅ ใฎใใกใคใซใซใใใฆๆๅใซใใฎ่กใใใใฃใใฎใใใใฎๅ ๅฎนใใณใใผใใฆใใใจใใ ใใใงใใ Git ใฏใใใฎ่กใๆฌๅฝใซๆธใใใใณใใใใใฉใใงใใฃใใฎใใ (ใใจใๅฅใฎใใกใคใซใงใใฃใใจใใฆใ) ๆใใฆใใใใฎใงใใ
ใใกใคใซใฎๆณจ่จใไฝฟใใฐใใใฎๅ้กใใฉใฎๆ็นใงๅงใพใฃใใฎใใ็ฅใใใจใใงใใพใใ
ไฝใใใใใใชใฃใใฎใใใใใใใๆๅพใซใใพใๅไฝใใฆใใใจใใใไฝๅไฝ็พใใฎใณใใใใ่กใใใฆใใๅ ดๅใชใฉใฏใgit bisect ใซ้ ผใใใจใซใชใใงใใใใ
bisect ใณใใณใใฏใณใใใใฎๆญดๅฒใซๅฏพใใฆไบๅๆข็ดขใ่กใใใฉใฎใณใใใใงๅ้กใๆททๅ
ฅใใใฎใใๅฏ่ฝใช้ใๆๆฉใ่ฆใคใๅบใใใใใซใใพใใ
่ชๅใฎใณใผใใใชใชใผในใใฆ้็จ็ฐๅขใซใใใทใฅใใใใจใซใใใฐๅ ฑๅใๅใๅใฃใใจไปฎๅฎใใพใใใใใใฎใใฐใฏ้็บ็ฐๅขใงใฏๅ็พใใใใชใใใใชใใจใซใชใใฎใๆณๅใใคใใพใใใ
ใณใผใใใใ่ชฟในใฆๅ้กใๅ็พใใใใใจใฏใงใใพใใใใไฝใๆชใใฃใใฎใใใใใใพใใใ
ใใใชๅ ดๅใซใไบๅๆข็ดขใงๅๅ ใ็นๅฎใใใใจใใงใใพใใ
ใพใใgit bisect start ใๅฎ่กใใพใใใใใฆๆฌกใซ git bisect bad ใไฝฟใฃใฆใ็พๅจใฎใณใใใใๅฃใใ็ถๆ
ใงใใใใจใใทในใใ ใซไผใใพใใ
ๆฌกใซใใพใ ๅฃใใฆใใชใใฃใใจใใใฃใฆใใ็ด่ฟใฎใณใใใใ git bisect good [good_commit] ใงไผใใพใใ
$ git bisect start
$ git bisect bad
$ git bisect good v1.0
Bisecting: 6 revisions left to test after this
[ecb6e1bc347ccecc5f9350d878ce677feb13d3b2] error handling on repoGit ใฏใใพใ ใใพใๅใใฆใใใจๆๅฎใใใใณใใใ (v1.0) ใจ็พๅจใฎๅฃใใใใผใธใงใณใฎ้ใซใฏ 12 ใฎใณใใใใใใใจใใใใจใๆคๅบใใพใใใใใใฆใใใฎใกใใใฉ็ใไธญใซใใใณใใใใใใงใใฏใขใฆใใใพใใใ
ใใใงใในใใๅฎ่กใใใฐใใใฎใณใใใใงๅใๅ้กใ็บ็ใใใใฉใใใใใใใพใใ
ใใๅ้กใ็บ็ใใใชใใๅฎ้ใซๅ้กใๆททๅ
ฅใใใฎใฏใใใใๅใฎใณใใใใ ใจใใใใจใซใชใใพใใใใใงใชใใใฐใใใไปฅ้ใฎใณใใใใงๅ้กใๆททๅ
ฅใใใฎใงใใใใ
ใใใงใฏใๅ้กใ็บ็ใใชใใฃใใใฎใจใใพใใgit bisect good ใง Git ใซใใฎๆจใไผใใๆ
ใ็ถใใพใใใใ
$ git bisect good
Bisecting: 3 revisions left to test after this
[b047b02ea83310a70fd603dc8cd7a6cd13d15c04] secure this thingใพใๅฅใฎใณใใใใใใฃใฆใใพใใใๅ
ใปใฉ่ชฟในใใณใใใใจใๅฃใใฆใใใใจไผใใใณใใใใฎ็ใไธญใซใใใใฎใงใใ
ใตใใใณใในใใๅฎ่กใใไปๅบฆใฏใใฎใณใใใใงๅ้กใๅ็พใใใใฎใจใใพใใใใใ Git ใซไผใใใซใฏ git bisect bad ใไฝฟใใพใใ
$ git bisect bad
Bisecting: 1 revisions left to test after this
[f71ce38690acf49c1f3c9bea38e09d82a5ce6014] drop exceptions tableใใฎใณใใใใฏใใพใๅใใพใใใใจใใใใใงใๅ้กใๆททๅ ฅใใใณใใใใ็นๅฎใใใใใฎๆ ๅ ฑใใใใงใในใฆๆดใใพใใใ Git ใฏๅ้กใๆททๅ ฅใใใณใใใใฎ SHA-1 ใ็คบใใใใฎใณใใใๆ ๅ ฑใจใฉใฎใใกใคใซใๅคๆดใใใใฎใใ่กจ็คบใใพใใใใใไฝฟใฃใฆใใใฃใใไฝใๅๅ ใงใใฐใ็บ็ใใใฎใใ็ชใๆญขใใพใใ
$ git bisect good
b047b02ea83310a70fd603dc8cd7a6cd13d15c04 is first bad commit
commit b047b02ea83310a70fd603dc8cd7a6cd13d15c04
Author: PJ Hyett <pjhyett@example.com>
Date: Tue Jan 27 14:48:32 2009 -0800
secure this thing
:040000 040000 40ee3e7821b895e52c1695092db9bdc4c61d1730
f24d3c6ebcfc639b1a3814550e62d60b8e68a8e4 M configๅๅ ใใใใฃใใใไฝๆฅญใๅงใใๅใซ git bisect reset ใๅฎ่กใใฆ HEAD ใไฝๆฅญๅใฎ็ถๆ
ใซๆปใใชใใใฐใชใใพใใใใใใใชใใจ้ขๅใชใใจใซใชใฃใฆใใพใใพใใ
$ git bisect resetใใฎๅผทๅใชใใผใซใไฝฟใใฐใไฝ็พใใฎใณใใใใฎไธญใใใใฐใฎๅๅ ใจใชใใณใใใใๆฐๅใง่ฆใคใใ ใใใใใซใชใใพใใ
ๅฎ้ใใใญใธใงใฏใใๆญฃๅธธใชใจใใซ 0 ใ่ฟใใฆใฉใใใใใใใจใใซ 0 ไปฅๅคใ่ฟใในใฏใชใใใ็จๆใใฆใใใฐใgit bisect ใๅฎๅ
จใซ่ชๅๅใใใใจใใงใใพใใ
ใพใใๅ
ใปใฉใจๅใใใๅฃใใฆใใใณใใใใจๆญฃใใๅไฝใใฆใใใณใใใใๆๅฎใใพใใ
ใใใฏ bisect start ใณใใณใใง่กใใใจใใงใใพใใใพใๆๅใซๅฃใใฆใใใณใใใใใใใฆใใฎๅพใซๆญฃใใๅไฝใใฆใใใณใใใใๆๅฎใใพใใ
$ git bisect start HEAD v1.0
$ git bisect run test-error.shใใใใใจใใใงใใฏใขใฆใใใใใณใใใใซๅฏพใใฆ่ชๅ็ใซ test-error.sh ใๅฎ่กใใๅฃใใๅๅ ใจใชใใณใใใใ่ฆใคใๅบใใพใง่ชๅ็ใซๅฆ็ใ็ถใใพใใ
make ใ make testsใใใฎไป่ชๅใในใใๅฎ่กใใใใใฎใใญใฐใฉใ ใชใฉใใใใงๅฎ่กใใใใใจใใงใใพใใ