一些 實用的 git 小技巧

 

一些 實用的 git 小技巧

文章地址:https://juejin.im/post/5cfe63f4f265da1bd522c437

前些月,寫了一個關於 git 的表格,叫Git Cheat Sheet,現分享一些有用的小技巧,更多內容請移步,另有一個非常不錯的關於 git 小技巧的項目 git-tips

是誰動了我的代碼

誰動了我的代碼?

誰的 bug 指到了我的頭上?

團隊合作時,經常會出現這樣的問題。這時候可以使用 git blame <file> 來定位代碼的最後一次修改。但是,有一個問題,這並不能看出本行代碼以前的修改。比如項目組中某人對全部代碼進行了格式化,git blame 就失去了作用。此時,可以與另一個有用的命令 git log -p <file> 結合使用,可以查看文件的更改歷史與明細,最終找到這個鍋究竟應該由誰來背。

git blame -L 10,12 package.json
git log -p -L 10,12:package.json
複製代碼

git查看commit提交記錄詳情

git log

git show 79fb389692338ae50e67c690f825fe8c0e04057d

 

快速切換合併分支

當你經常工作於 A 與 B 兩個分支,需要來回切。這時命令應該是 git checkout A,但這裏有一個更簡單的命令,git checkout -,表示切到最近的一次分支。如果你需要把 B 分支的內容合並過來,可以使用 git merge -

題外話,cd - 代表進入最近目錄,也相當實用。

git checkout -
git merge -
複製代碼

統計項目

統計項目各個成員 commit 的情況,比如你可以查看你自己的項目的 commit 數以及他人對你項目的貢獻數

git shortlog -sn
git shortlog -sn --no-merges      # 不包含 merge commit
複製代碼

快速定位提交

如果你的 commit message 比較規範,比如會關聯 issuse 或者當前任務或者 bug 的編號,此時根據 commit message 快速定位: git log --grep "Add"

如果你的 commit message 不太規範,只記得改了哪幾行代碼,此時也可以根據每次提交的信息查找關鍵字,是 git log -S "setTimeout"

同時,也可以根據作者,時間來輔助快速定位。

git log --since="0 am" &emsp;&emsp;&emsp;     # 查看今日的提交
git log --author="shfshanyue"     # 查看 shfshanyue 的提交
git log --grep="#12"              # 查找提交信息中包換關鍵字的提交
git log -S "setTimeout"           # 查看提交內容中包換關機子的提交
複製代碼

快速定位字符串

如何查找包換關鍵字的全部文件?

使用 VS Code 可以全局搜索,使用 grep 也可以通過 grep -rn <keyword> 來全局搜索。

不過,它們也會連帶搜索忽略文件,比如前端著名的兩個文件夾 node_modules 和 public(dist/build)。雖然 grep 可以指定 --exclude 來忽略文件,不過 git 來的更方便一些。

這時,可以使用 git grep <keyword> 來解決這個問題,另外 ag 也可以解決這個問題。

grep -rn <keyword>
grep -rn <keyword> --exclude config.js --exclude-dir node_modules
git grep <keyword>
ag <keyword>
複製代碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章