全文共1800字,預計學習時長4分鐘
圖片來源:unsplash.com/@sam_truong
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
本例中,應將<commit>替換為希望在日誌開始時執行的提交。大體上,用git shortlog eafbc3c.. HEAD的意思是,「讓我看看從提交eafbc3c到現在發生了什麼變化。」
按提交作者將短日誌分組並顯示每個提交消息的首行內容。若提交消息編寫完善,則可很清楚地了解每個提交的實際操作。
利用一些巧妙的技巧,如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'
現在,就可以看到墨菲在二月中旬非常活躍。
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相關文檔。
留言 點讚 關注
我們一起分享AI學習與發展的乾貨
編譯組:柳玥、溫媛
相關連結:
https://dev.to/jacobherrington/10-git-tricks-to-save-your-time-and-sanity-289h
如需轉載,請後臺留言,遵守轉載規範