如何用Git工具發現和解決開發項目中的痛點

2020-12-06 51CTO

在日常開發和項目管理過程中往往不可避免地存在很多痛點。如果能及時發現和解決掉這些問題,可以極大提高開發我們的開發效率和減輕項目的技術債務,減少項目風險。很多減輕技術債務的工具都是預防性的。比如編譯器,lint,靜態分析工具等。這些工具都通過防止開發人員籤入代碼碼,這一方面限制了開發人員的自由,引起不適,而且可能會導致一些潛在的問題。而且儘管通過管制和審核流程似乎應該是完美無瑕的代碼,但是實際上並不一定會帶來功能良好的系統。

軟體開發的過程不僅涉及開發人員之間以及開發人員與他人團隊之間的交互,如何快速的無聲的項目的痛點這是個問題。如果你的開發項目是採用git管理,那麼Git本身就能給我們很多好用的工具,本文蟲蟲就給大家講講git中自帶哪些解決痛點的工具。

git log 發現最常改變為文件

我們時常忽略一個事實是,我們經常修改的,修改最多的文往往是問題發生最多的,而這些文件往往就是開發和項目的痛點。我們要找到這些痛點,或者熟悉一個未知的項目不知道如何入手的時候,首先可以做的就是找出項目中改變最多,提交commit最頻繁的文件。找出倉庫最常變化的文件(top10)命令為:

  1. git log  

比如我們最開源安全項目OpenSSH查看一下top10變化文件:

我們可以看到除了,版本更新文檔ChangeLog以外,變化第二的是configure.ac這個文件是項目編譯文件makefile的配置文件。源碼裡面修改最多的是sshd.c是sshd伺服器端的原始碼文件。

可以看到這個命令很有用,但是很長不好記,怎麼辦?其實也好辦,那就是加一個git別名即可。vim打開~/.gitconfig配置文件,在[Aliases]部分增加以下配置項:

  1. cctop10 = "!git log --format=format: --name-only | egrep -v '^$' | sort | uniq -c | sort -rg | head -10" 

這樣,對一個倉庫我們只需執行這樣做是按照更改的數量對項目中的文件進行排序,並獲取前10個文件。隨著時間的推移,這些文件中發生的更改最多,因此,這些文件中需要更改的機會更大。

git blame 找出痛點的來源

在知道變化最多的文件這個痛點後,我們需要詳細了解痛點過程。或者項目的另一個痛點是,發現項目文件被某人修改後就崩潰了,再也跑不起來了。想找出是誰修改的,大家來鄙視他,或者譴責(blame)它。這就需要一個git另一個利器blame,他就是告訴我們這個問題行(變化)是誰引入的。比如我們同樣以openssh 項目為例,查看一下sshd.c的文件的變化歷史

git blame sshd.c:

如上我們可以看到基本上每一行代碼出現的現場,包括了commitID、提交人、詳細時間和代碼。

如果文件較大,可以通過"-L"參數指定開始和結束行,比如sshd.c文件的200行開始的20行內容的來源。

關於git blame 注意:

如果一個commitID前面有^號,那麼自文件創建以來,對應的行就從沒修改過。

blame也可以跟蹤跨文件的行變化。比如對一個大文件代碼重構或者配置文件被分散到多個小文件,那麼會顯示大文件中的原始提交和大文件的名稱。可通過-C選項來實現。

git bisect 找到引入問題的commit

如果知道是哪個行代碼,那次commit引入的問題,我們可以用blame揪出提交問題的人。但是如果不知道是哪兒引入的問題,需要找出引入問題的提交。則需要用一個git 工具bisect。它也很簡單用二分發不斷測試回溯到中間的commit點,直到找到這個問題引入點。

git bisect start [終點] [起點]

終點為你確保有問題的commit(如果不能確定那就是現在HEAD),起點為你確保的之後才出現的問題(如果不確定就用最開始一次commits)。

執行這個命令後,項目倉庫的文件狀態會調到這兩次的中間commit,這時候測試代碼,如果項目運行OK,就執行git bisect good。如果還是報錯,則執行git bisect bad。

執行後,git會根據good或者bad狀態跳轉到後半段commit的一半(即3/4)commit處,或者1/4 commit處

繼續測試代碼,標識good或者bad

以此類推直到找到引入問題commit。

總結:

git是一個天生為開發而生的工具,生來就是為了幫助我們解決痛點的。而且git中很多工具就是對應解決我們日常具體痛點的,善用他們不光可以讓我日常生活更舒服,也能極大提高開發效率。"工欲善其事,必先利其器","磨刀不誤砍柴工"希望我們會用並且善用這些工具。

【編輯推薦】

【責任編輯:

華軒

TEL:(010)68476606】

點讚 0

相關焦點

  • Git鮮為人知的四個命令:bisect,blame,reflog和提交範圍
    好吧,就算你沒有,那麼你也可能在你的日常工作中使用版本控制系統(也不是......好吧,那就忽略上面的兩句話)。做版本管理最流行的工具是Git,什麼,你是SVN!好吧,遇到槓精,老子也是服了!關於Git你可能用過,也知道基礎知識,比如git add,git commit,git push,git pull。
  • Vim 與 Git 如何交互 - 技術翻譯 - OSCHINA 社區
    Vim和Git都是高度複雜,可配置的開發者工具。使用Vim工具的開發者可能也需要頻繁使用Git工具。這篇文章嘗試探索這兩個工具如何在多種方式下進行交互。開始時,我不打算約束任何特定的工作流,或者爭論、反對一個特定的方法。
  • 前端面試題:git reset、git revert 和 git checkout 有什麼區別
    三個區的轉換關係以及轉換所使的命令如下圖git reset、git revert 和 git checkout的共同點:來撤銷代碼倉庫中的某些更改。然後是不同點: 先,從 commit 層來說: git reset 可以將個分的末端指向之前的個 commit。然後再下次 git 執垃圾回收的時候,會把這個 commit之後的 commit 都扔掉。
  • 教你用 Node 創建 CLI 工具
    搭建命令行界面識別命令行 - commandercommand 後面可跟一個 name,用空格隔開。options, callback);複製代碼在下載倉庫的過程中需要添加加載的過程,可以使用 ora 庫。
  • 谷歌高效開發的秘密:來自谷歌前員工的軟體開發工具指南
    谷歌的內部開發工具是世界領先的,其針對大規模軟體開發的多方面痛點提供了解決方案。但幾乎所有工具均與谷歌獨有的內部生態系統緊密耦合,無法在其它環境中使用。本文介紹了如何在軟體開發中引入好的開發工具,提高自己和團隊成員的生產力,進而在大規模軟體開發中傳播有效的最佳實踐,為公司帶來工程化效率提升。
  • 熱門開發工具(IDE)推薦
    工欲善其事必先利其器,作為一個程式設計師,不管你是用那門語言開發必然會有一兩款順手的IDE。IDE是提供程序開發環境的應用程式,一般包括了代碼編輯器、編譯器、調試器以及圖形用戶界面等工具,集成,特別是一些代碼補全、代碼高亮、語法提示等高效插件更是讓開發事半功倍。
  • 解決VR用戶痛點 HYPEREAL ChinaJoy再推多套解決方案
    而針對VR的普通用戶和行業用戶,HYPEREAL也在其性能出色的硬體基礎上,不斷加速迭代,直擊VR用戶切身的痛點。痛點1:雙攝像頭方案轉身遮擋定位解決方案:三攝像頭360°定位      HYPEREAL現有的雙攝像頭方案,能覆蓋正面180°的範圍,雖適合大部分的遊戲要求,但沉浸在虛擬世界中的用戶一旦轉身就會發生遮擋,影像定位,在遊戲中很容易出戲。為了解決這個痛點,HYPEREAL推出了全新三攝像頭360°的追蹤方案。
  • 產業數位化平臺如何解決自身痛點
    作者莫開偉 李慶植分別為中國地方金融研究院研究員 某外資企業高級諮詢師競爭壓力大、獲客成本高、變現能力弱、用戶黏性低、應用落地難……助力產業數位化升級、為實體企業解決痛點的數字科技企業也有著自己的痛點,而這些痛點在那些面向中小企業的產業數位化平臺上顯得更為突出。
  • 艾永亮:不要讓產品經理成為工具人,超級產品才能解決用戶痛點!
    從數據上來看,20%的產品經理會做低保真,而70%的產品經理會做中保真來支持Ul作圖,開發支持。10%的產品經理比較追求完美,強迫自己做出高保真原型圖,然而卻會因為太過於注重細節,導致忽略更多。 因此,我們會發現,企業家需要產品經理把控的是大方向、格局包括行業的趨勢分析、歷史沿革、發展生態鏈,而不是沉迷於Axure,這樣只會因小失大,失去大格局的眼光。 做好需求分析,才能做出用戶需求和產品需求,從而做出好的產品。
  • 命令行工具開發:如何快速實現命令行提示?
    不少同學喜歡開發命令行工具,主要是開發快捷,而且和其他命令行工具配合,藉助腳本,非常容易實現一些任務的自動化。命令行工具開發比較簡單,以Java舉一個例子,通常我們只需要一個命令行參數解析器,如Java,就有args4j, jopt,picocli等,轉換為結構化的對象,根據輸入的參數進行相關的邏輯判斷,完成對應的邏輯。
  • 重新定義軟體開發模式,飛算以「自動化」逐個擊破行業痛點
    然而,軟體行業目前的開發方式非常落後,還處在一個高度依賴人工的階段。因此,在面對不斷變化的市場環境和業務需求時,軟體行業面臨著許多阻礙,總的來說有四點:項目成本高、開發周期長、代碼質量低、團隊管理難。  飛算全自動軟體工程平臺帶來不一樣的開發體驗  近日,中國原創的飛算全自動軟體工程平臺在北京國家會議中心正式發布。
  • 如何解決部分老年人使用手機的痛點?
    近日,華為、vivo、OPPO等手機廠商紛紛行動,優化專為老年人設置的系統模式,百度、阿里、滴滴等網際網路公司也在App中增設相應功能,使老年人更加方便、快捷地獲取信息和服務。華為:推出「簡易模式」據華為終端介紹,華為手機從EMUI 8.1版本開始,首次發布配圖大字版《爸媽使用手機指南》;在EMUI 9.0系統中將手機「簡易模式」從卡片式優化為桌面式,重點解決部分老年人使用手機的痛點。
  • 復盤node項目中遇到的13+常見問題和解決方案
    >開源項目, 最近把其中遇到的一些問題和解決方案做一個梳理, 避免大家繼續踩坑.話不多說我們開始吧~1. window和mac下設置NODE_ENV變量的問題我們都知道在前端項目中會根據不同的環境變量來處理不同的邏輯, 在nodejs中也一樣, 我們需要設置本地開發環境, 測試環境, 線上環境等
  • Python學習第76課-git reset——hard
    學習git到現在,你可能會覺得,用git這麼麻煩,還不如用另存為version1、version2、version3這樣的文件,這種傳統的方法方便。但其實你要相信,git和GitHub能成為全世界最大的開源平臺肯定是有它的道理的,全世界這麼多人用它,是因為越到後期,越是需要團隊協作的大型項目、以及越是你個人後期,它能夠為你以及團隊的發展打下堅實的基礎。
  • 騰訊在線教育為 Cocos Creator 開發的插件和工具
    在使用 Cocos Creator 開發項目的過程中,為了提高開發效率我們開發了很多擴展插件,本文介紹常用的幾款,拋磚引玉,希望給大家帶來幫助。
  • 微服務下的持續集成-Jenkins自動化部署GitHub項目
    首先需要將對應的class文件和xml一個一個導出來,放到對應的包文件裡面,有時候一不小心很有可能會導錯,這個時候又要去重新拉一下對應的class文件,然後對比看有沒有導入錯誤,是不是class文件,先停止對應的tomcat服務,然後放到伺服器上,之後再啟動tomcat,這個過程簡直就是繁瑣重複而且沒有技術含量,為此公司還專門配置了一個做這個工作的運維人員,完全沒有必要,這點工資給我,我來做還做開發
  • 軟體項目管理:軟體工具與開發環境相關知識介紹
    1、軟體工具相關名詞概念軟體工具:用來輔助軟體開發、運行、維護、管理等過程中的活動軟體。軟體開發環境:是指支持軟體產品開發的軟體系統,它由軟體工具集和環境集成機制構成。2.3 軟體管理和支持工具軟體管理和支持工具用來輔助管理人員和軟體支持人員的管理活動和支持活動,以確保軟體高質量完成。包括項目管理工具、配置管理工具和軟體評價工具等。3、軟體開發工具的選擇軟體開發工具的選擇時軟體開發項目成功的要素之一。
  • 騰訊應用寶首發「親子守護」功能 解決兒童用手機三痛點
    騰訊移動網際網路事業群副總裁侯曉楠「作為移動網際網路時代的原住民,當今孩子的成長過程中,都離不開手機等電子產品的身影。新媒介的出現,極大地拓展了孩子的視野,調動了他們好奇心和探索的熱情。與此同時,家長們也焦慮地發現,長時間不正確地使用手機等電子產品,存在著隱患。比如,可能導致視力下降、脊椎變形等等。
  • 青山物語沒解決用戶「吃拉麵」痛點,因為根本不痛
    「青山物語並不是解決了痛點,而是創造了新痛點」在青山物語本名料理屋出現之前,用戶怎麼吃日料呢?方式一到店享用:去家周邊、電影院所在商區,親子活動商區,客單價150左右;方式二外賣打包:餓了麼、美團隨地點餐,50元客單價完美搞定;
  • 傳統裝修常見的8個痛點,那些年經歷的裝修之痛終於可以解決了
    答案是「能」,當然這要看網際網路裝修是否真正解決了業主的裝修痛點。  傳統裝修行業的痛點羅列為以下幾點:  痛點1:各個裝修公司報價不統一,沒有統一的標準,一不留神就上當  痛點2:為吸引客戶,傳統裝修公司大都低開高走,報價漏項,後期無限增項,客戶不知道後期還有投入多少裝修款才能做完  痛點3