git统计每个人的代码行数_项目出了bug如何甩锅?使用这个Git工具帮你找到元凶...
公眾號關注?“程序員遇見GitHub”
設為“星標”,重磅干貨,第一時間送達。作為程序員,在職場當中經常遇到出現了問題需要定職定責的情況。比如某個系統出現了bug,導致了故障,那么這口鍋究竟是誰的?這個是需要討論的,一般來說需要測試、開發一起來背鍋。如果代碼不是我們寫的,我們肯定是不想背這個鍋的,那么怎么樣來證明出bug地方的代碼是誰寫的呢?
這個時候我們就可以使用git來尋找代碼的提交記錄,從而找到罪魁禍首。
追查記錄
Git當中有一個很重要的功能叫做git blame,從名字我們就可以看出來,這個功能是用來甩鍋的。我們可以通過它查找到每一個文件每一行的提交記錄,究竟這行代碼是誰修改和引入的,非常方便我們用來定責。
Git blame可以傳入一個參數L指定某一個文件的行數,比如我隨便找了一個我private的repo運行了一下:
git?blame?-L?23,30?myhive.py這里的23,30表示的myhive.py這個文件行數的起始位置,開始是第23行,結束是第30行。接著我們會進入到一個vim文件當中,給我們詳細展示這些代碼的情況。
我們可以看到結果分成4列,第一列是commit id,對應的是這一行代碼是在哪一個commit當中出現的,第二列是提交人,也就是做出修改的人。第三列是修改時間,第四列是具體的代碼內容。
當然由于這是我個人的repo,所以看到的代碼都是我個人修改的。如果是大家一些協同開發的項目,就可以看到多人提交的情況了。
當然現在一些先進的IDE當中也集成了這個功能,比如著名的jetbrains全家桶,我們可以通過右鍵選擇git,之后選擇Annotate,之后代碼左側會展示對應的修改人以及修改時間,方便我們追查代碼的修改對象。其實也不只是在問責,比如在閱讀其他團隊的代碼的時候,遇到問題了,要找對應的人詢問,也是一個很好的方法。
二分查找
我第一次看到這個功能的時候的確被驚艷了,但是回想起來至今好像也沒用上過。可能在一些特定的場景下會有用吧。
有的時候我們的repo會非常巨大,會有很多的開發者,我們每次上線的時候會合并數十個提交。這就導致了一個問題,當我們上線測試的時候,如果發現了bug會很難排查,因為你不知道是哪一個提交帶來的問題。這個時候一個比較好的辦法當然是二分查找,當然我們也可以手動進行,然而git當中集成了這個功能,我們直接使用就好。
首先我們運行git bisect start,表示我們開始二分查找。bisect就是git當中二分查找的工具。
之后我們繼續輸入git bisect bad,表示當前的分支是有問題的。接著我們輸入git bisect good xxxx,這里的xxxx是一個commitid或者是一個標簽,告訴git我們最后一次已知的正確的提交是哪一個。這樣git會把當前和這個提交之間的提交全部找出來,假如說這當中一共發生了23個提交,那么git會選出中間的提交進行跳轉。
這個時候如果我們在這個中間的分支上測試OK,那么我們就輸入git bisect good,告知git這個分支是正確的,從而幫助它縮小范圍。如果這個分支錯誤,那么就輸入git bisect bad。
當二分到最后git找到了那個最早出問題的提交之后,它會告訴我們提交的commitid以及相關的提交記錄,這樣可以方便我們更快地找到bug。
由于我沒有很好的測試repo,所以只能找來一張截圖,當我們找到錯誤的分支之后,git輸出的結果是這樣的,注意一下下方的提示語:
最后,不要忘了使用git bisect reset重置HEAD指針回到最開始的位置,否則可能會陷入一些奇怪的狀況當中。
如果我們有健全的測試腳本可以測試提交是否正確的話,比如正確返回1否則返回0,我們也可以讓git自動執行二分查找。比如這樣:
git?bisect?start?HEAD?xxxxgit?bisect?run?test_case.sh
這樣git會調用test_case.sh這個文件,直到找出錯誤提交為止。其實還是挺方便的,只是我作為開發的時候很少接觸這么多提交一起發布的狀況,一般來說要處理的提交數量都很少,有bug也很容易找到。
今天的文章就到這里,衷心祝愿大家每天都有所收獲。如果還喜歡今天的內容的話,請來一個三連支持吧~(點贊、在看、轉發)
推薦閱讀:
我教你如何讀博!
牛逼!輕松高效處理文本數據神器
B站強化學習大結局!
如此神器,得之可得頂會!
兄弟們!神經網絡畫圖,有它不愁啊
太贊了!東北大學朱靖波,肖桐團隊開源《機器翻譯:統計建模與深度學習方法》
當年畢業答辯!遺憾沒有它...
已開源!所有李航老師《統計學習方法》代碼實現
這個男人,驚為天人!手推PRML!
它來了!《深度學習》(花書) 數學推導、原理剖析與代碼實現
你們心心念念的MIT教授Gilbert Strang線性代數彩板筆記!強烈推薦!
GitHub超過9800star!學習Pytorch,有這一份資源就夠了!強推!
你真的懂神經網絡?強推一個揭秘神經網絡的工具,ANN Visualizer
諸位!看我如何白嫖2020 icassp!
這個時代研究情感分析,是最好也是最壞!
BERT雄霸天下!
玩轉Pytorch,搞懂這個教程就可以了,從GAN到詞嵌入都有實例
是他,是他,就是他!寶藏博主讓你秒懂Transformer、BERT、GPT!
fitlog!復旦邱錫鵬老師組內部調參工具!一個可以節省一篇論文的調參利器
Github開源!查閱arXiv論文新神器,一行代碼比較版本差別,我愛了!
開源!數據結構與算法必備的 50 個代碼實現
他來了!吳恩達帶著2018機器學習入門高清視頻,還有習題解答和課程拓展來了!
太贊了!復旦邱錫鵬老師NLP實戰code解讀開源!
這塊酷炫的Python神器!我真的愛了,幫助你深刻理解語言本質!實名推薦!
論文神器!易搜搭
不瞞你說!這可能是世界上最好的線性代數教程
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的git统计每个人的代码行数_项目出了bug如何甩锅?使用这个Git工具帮你找到元凶...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 启动hadoop没有resourcema
- 下一篇: 框架中的左侧菜单关联右侧页面是如何实现的