您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么用git實現快速定位提交”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
誰動了我的代碼?
誰的 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
當你經常工作于 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" # 查看今日的提交
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>
“怎么用git實現快速定位提交”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。