1. 從某個分支檢出單一文件
你是否有過破壞了某個文件,想要重新開始?
或需要的檔案在另一個分支?
下面的指令讓你直接從某個分支取到那個檔案。
git checkout some-other-branch -- yarn.lock
你也可以從某個commit 取到yarn.lock 檔案
git checkout 9146467 -- yarn.lock
比起 cherry-pick
# 拿到某個commit 的所有文件,這個技巧可以只拿到想要的那一份文件。
2. 查看日誌時過濾掉merge commits
#使用merge 合併時會產生一個新的提交,有時候這個提交很煩人。如果你想要查看日誌時過濾掉這些合併的提交,可以使用以下指令:
git log --oneline --no-merges
#3. 重寫最後一次的commit message
如果你最近的一次提交中,commit 訊息寫的不好或有錯字,可以用以下指令修改:
git commit -v --amend
這裡的-v
是可選的,它可以提過一些額外資訊來幫助你描述commit message
#4. 清除所有未追蹤的變更
首先來解釋一個概念:
如果你建立了一個新文件,這個文件之前不存在於git 歷史中,那麼這個文件就是一個未追蹤的變更。為了追蹤這個文件,你需要將它提交到 git 中。
如果使用 git checkout . 則會清除所有已經追蹤的變更。而使用以下指令可以清除所有未追蹤的變更:
git clean -f -d
5. 列印一個視覺化的log
使用下列指令可以列印出可視化的log
git log --pretty=oneline --graph --decorate --all
(譯者註:湊合看,跟sourcetree 的還是不能比~)
6. 向Git 查詢changelog
此指令可以向Git 查詢在兩個commit 之間,都有誰做了哪些變更,看起來就像一個changelog 一樣
git shortlog <commit>..HEAD
上面的<commit>
填寫commit 的hash 值,就可以查出該commit 與HEAD 之間的變化,其中..
後面的HEAD
也可以省略
#你也可以用 git shortlog HEAD~20..
取最近20 個commit 的記錄
7. 查詢指定日期的log
你可能需要查詢某兩天之間的git log,這時可以用git log 指令配合--since 與--util 標識符
假如你想要查詢2016年2月10日至2016年2月19日之間的日誌,你可以運行:
git log --since='FEB 10 2016' --until='FEB 19 2016'
8. 列出所有git aliases
有時候你可能忘了先前設定的git 別名,下面的指令雖然不是git 的功能,但卻能幫你找到所有的git 別名
git config -l | grep alias | sed 's/^alias\.//g'
#9. 查詢包含某個關鍵字的commits
如果你知道要找的程式碼具體寫的是什麼,或是知道某個特別的關鍵字,你就可以用它來搜尋。
git log -S"config.menu_items"
本例中會尋找所有包含config.menu_items
的提交
10.終極技能
git help -g
The common Git guides are: attributes 定义 Git 路径的属性 everyday 每天学点有用的 Git 命令 glossary 一个 Git 词汇表 ignore 指定 Git 忽略文件 modules 定义 Git 子模块 revisions 指定 Git 的修订版和范围 tutorial Git 的教程介绍 (for version 1.5.1 or newer) workflows 一个推荐的 Git 工作流概述
以上是10個提高效率的 Git 小技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!