10種Git技巧,讓你省時省力又省心!
1. 從另一分支切換單個文件
大家是否曾銷毀文件只為能重新開始? 或需要在另一分支的某文件中進行更改?而git指令可以實現從另一分支切換文件。
- git checkout some-other-branch -- yarn.lock
同時,也可以使用相同的技巧從特定提交項切換出某個文件。
- git checkout 9146367 -- yarn.lock
若cherry-pick能夠篩選出不需要的文件,那么這就是十分有效的技巧了。
2. 查看日志時無需合并提交
合并提交常常令人頭疼。事實上,有些人寧可不用合并指令,因為合并提交真是太討厭了。
就個人而言,筆者認為合并指令是項目歷史記錄的重要組成部分,不應該在工作流中唯恐避之不及。
也就是說,可以使用此標記來過濾合并提交以查看項目的歷史記錄。
- git log --oneline --no-merges
3. 改寫上一個提交信息
若不小心提交了帶有拼寫錯誤或誤導性提交信息的內容時,這個方法就派上用場了。
- git commit -v --amend
-v是可選項,但由于其展示了許多更改相關的信息,筆者還是比較喜歡這個的,,有助于編寫更具描述性的提交消息。
4. 移除所有未跟蹤更改
盡管不言而喻,但以防有人對該概念不熟悉:
如果創建一個新的文件,且該文件在git歷史中并不存在,那么就相當于進行了一個未跟蹤更改。需要提交回購協議才能開始追蹤該文件。
如果提交過程中改變了主意,隨后又想撤銷先前的更改,此時,git checkout可用于移除先前所有的追蹤更改,但是未跟蹤更改卻仍然會四處浮動。為解決這個問題, git clean應運而生。
- git clean -f –d
5. 輸出酷炫的可視化日志
雖然這點只會讓日志看起來很酷,但就可視化所有長期分支而言,這點還是十分有用的。
- git log --pretty=oneline --graph --decorate --all
試試吧。
6. 向git請求一個變更日志
如果想知道更改內容和更改者的相關簡要說明,可以向git申請變更日志類似的文件。
- git shortlog <commit>..HEAD
本例中,應將
按提交作者將短日志分組并顯示每個提交消息的首行內容。若提交消息編寫完善,則可很清楚地了解每個提交的實際操作。
利用一些巧妙的技巧,如git shortlog HEAD~20..,以此來獲取最近20次提交的短日志。
7. 查看特定日期范圍的日志
類似地,可能需要查看兩天內回購的變化情況。
幸運的是,git可以實現這點。git log提交接受——以-since和-until作為標記。
所以若想知道2016年2月10日至2016年2月19日期間Solidus發生了什么,即可運行:
- git log --since='FEB 10 2016' --until='FEB 19 2016'
現在,就可以看到墨菲在二月中旬非?;钴S。
8. 列出所有git別名
有時可能需要為一些指令添加別名,隨后就忘記了,或者使用的共享配置就已經定義了一些別名。
這是筆者無意中發現的一個技巧,盡管這不是git獨有的特性,但是git config指令確實發揮著它的功效,為我們所利用。
- git config -l | grep alias | sed 's/^alias\.//g'
試試吧,看是不是有忘記的別名!
9. 搜索包含關鍵字的提交
如果確切地知道要查找的是哪段代碼,或者確切地知道需要在哪些關鍵字上查找更改,則可以按代碼搜索日志。
此時git會提供一個提交列表,而該列表以某種方式影響了包含搜索字符串的代碼或文本。
- git log -S"config.menu_items"
在本例中,筆者找到一個提交列表,而該提交列表以某種方式操縱了字符串config.menu_items。
10. git教程超級機密列表
不是秘密,而是超級機密:
- git help -g
Git是一個十分強大的工具,充滿許多巧妙的技巧。這個列表不夠全面,所以大家可多做一些研究并閱讀git相關文檔。