當前位置:
首頁 > 知識 > 20 條實用的 git 命令

20 條實用的 git 命令

個人總結出的一些實用的 git命令,分享給大家。

  1. git config --global color.ui true
    git命令默認使用彩色輸出。 這條命令在git 2之後已經成為默認配置,但如果你還在用比較老的版本(例如CentOS上的默認的 git 版本),建議把這項配置加上去。
  2. git branch -av
    顯示所有本地即遠程分支,並顯示最後提交的Commit信息。如果不加參數,則只會顯示所有本地分支的名字。
  3. git checkout -b <NAME> [<START POINT>]
    創建,並切換到新分支。git branch <NAME>只會創建分支而不會切換到新分支,可以用它備份當前分支。
  4. git tag -L <PATTERN>
    列出所有符合條件的標籤。如果你的項目嚴格按照Major.Minor.Update作為版本名稱,那麼這條命令就非常有用。它可以直接列出來當前版本下有那些小的 bugfix 版本。當然如果你非要grep一下我也沒意見。
  5. git diff -w
    顯示未提交的更改,忽略空格。人們往往注重實際代碼的改變而不注重縮進的變化。如果某個文件有大量縮進改變,-w這個參數就非常有用。
  6. git commit --amend
    修補前一次提交。相當於撤銷前一次提交,做更改後重新提交。這也是一條非常實用的命令。當你發現前一次提交有一些小問題的時候(比如說漏提交了新創建的文件,或者有一些小的拼寫錯誤),可以用這條命令修正前一次提交。它對merge提交友好,而且可以用於修正前一次提交的 message 信息。需要注意的是:如果你已經推送了前一次提交,amend之後需要強推,這一點需要注意。
  7. git log --graph --oneline --no-merge
    顯示當前倉庫的提交歷史。git log大家都用過,但真正研究過git log後面參數的人可能就不多。git log後面可以接很多實用的參數,示例中的讓提交歷史以單行模式顯示、顯示提交歷史樹並刪除merge提交。
  8. git log -p --follow --stat -- <PATH>
    顯示某個文件的提交歷史。在git中,--後接文件路徑就代表對單個文件的操作。-p可以顯示具體修改的行,--follow可以跟蹤文件的移動和重命名,--stat用於顯示添加、刪除行的數量。
  9. git config --global alias.xx "<COMMAND>"
    給某 git 命令創建別名。對於一些比較長的命令,可以創建別名。以後只需要git xx即可執行COMMAND這條命令
  10. git pull --rebase,--rebase可以簡寫為-r
    使用git rebase代替git merge執行pull操作。git pull --rebase可以構造出非常整齊的提交歷史樹,強迫症的福利。git的官方文檔一再提醒這是個危險操作,因為它會修改你的代碼提交歷史。git rebase的本質是撤銷指定的提交,然後以指定的方式重新提交他們。git pull -r就相當於首先撤銷沒有推送到遠端的commit,將遠程代碼覆蓋到本地之後,重新提交所有之前撤銷的commit。與git merge不同,當有衝突產生時,git rebase不會為你的merge操作生成一個新的提交。所以一旦git pull --rebase執行完畢就無法撤銷。
  11. git config --global pull.rebase true
    默認使用git rebase代替git merge執行pull操作。git提供了一系列配置git pull --rebase操作:branch.<BRANCH NAME>.rebasebranch.autosetuprebase。這條是最簡單的全局配置項。儘管配置了默認使用rebase,你可以使用--merge開關強制使用git merge執行git pull
  12. git rebase -i
    互動式變基操作。git中最強大的修改提交歷史的操作,當然也是最危險的操作。它可以讓你修改commit說明、讓幾個commit合併、交換commit、刪除commit,甚至在提交某commit前執行一段shell命令。非常有用、非常強大、同時也是極其危險的操作。強烈建議在執行git rebase -i之前先使用git branch備份當前分支。
  13. git push <remote> [<commit>]:<branch>
    推送指定的commit到遠程。有時候你某個工作做到一半,然後來了一個bug要修。當然最好的做法是基於最新的遠端分支新開一個分支,基於這個分支開發。但是如果你忘了新開分支,直接把代碼提交到了當前分支怎麼辦?在你需要push的分支之前又有別的不需要的commit。這時就可以先用git rebase交換commit的順序,然後推送單個提交。如果你寫了冒號但是不寫commit號,就會變成刪除某個遠端分支。這是完全不同的而且可能有危險操作,需要注意。
  14. git blame <PATH> [-L <M,N>]
    逐行檢查某文件的提交人、提交時間和commit號。blame的中文意思是職責,大家顧名思義,撕逼甩鍋時用。-L可以指定要檢查的行號。
  15. git stash [push] [-u]
    貯存當前工作區的更改。經常有這樣的事情發生,當你正在進行項目中某一部分的工作,裡面的東西處於一個比較雜亂的狀態,而你想轉到其他分支上進行一些工作。問題是你還不想提交這些代碼,這是就可以用git stash命令將未提交的更改臨時保存到一個貯存項中。-u表示將未加入版本管理的文件也保存(比如新建的一些文件)
  16. git stash apply <INDEX>git stash pop <INDEX>
    將最後一次保存的(或指定的某個)貯存項應用至當前工作區。與前面的git stash [push]配套使用。applypop的區別是:pop會在應用更改的同時把所應用的貯存項刪除,而apply不會。
  17. git cherry-pick -x <COMMIT>..
    摘取某些提交。即把另一個本地分支的commit應用到當前分支。如果我們同時維護多個分支,這個操作就很有用。比如說你在主幹 master 分支上修復了一個 bug,然後你想把這個修復應用到一個舊版本的分支上,但是你又不想把其他 master 分支的新功能拉進來,這時就可以用cherry-pick-x:在提交記錄中添加一行(cherry picked from commit <commit>),讓兩個提交關聯起來。
  18. git revert <COMMIT>
    回滾某個提交。即提交某個COMMIT的反提交。最快修復某個 bug 的方式就是把引入 bug 的代碼幹掉。注意幹掉代碼不代表就要用git rebase -i把提交本身也幹掉。
  19. git grep <PATTERN>
    在當前加入版本管理的文件中全文檢索某字元串。類似於grep操作,但是會忽略不需要的(加入.gitignore的)文件,非常實用的命令。
  20. git bisect
    實用二分查找的方式定位引入問題的提交。快速定位 bug 的方式。在找不到 bug 出現的原因時,不妨用git bisect將 bug 先鎖定到某個commit上。
  • brew install tig
    美化 git 輸出,重度終端用戶的福利。這個其實是工具安利了,它用圖形化的方式(ncurses)美化 git 輸出,誰用誰知道 :)

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

資料庫分庫分表中間件 Sharding-JDBC 源碼分析 —— SQL 解析(四)之插入SQL
如何通過binlog獲取我們想要的MySql語句?
js數組去重方法分析與總結
JS獲取子、父、兄節點方法總結
vue學習筆記(1)——組件化實現todoList

TAG:科技優家 |

您可能感興趣

出行靈感 Places to visit in 2018
啟用Windows 7/2008 R2 XPS Viewer
VR虛擬現實2017中國好應用AppBase Best 50強,Testin雲測年度發布
一件衣服用的布料比巴黎鐵塔還高!Giambattista Valli 2018
《Gastroenterology Report》2018年第1期中文摘要
愛彼(Audemars Piguet)2017年銷售額逼近10億瑞郎
Google I/O 2018 大會 5/8 揭幕,下一代系統命名為 Android P?
2017中國好應用,Testin IoT工業AppBase Best 50強報告
White Mountaineering 2018 秋冬系列
Y-3 2018 秋冬系列鞋款帥炸?這雙 Futurecraft 4D 才是重點!
2017 年關於 Python 的 12 件大事
這是被微軟在2013年取消開發的智能手錶Xbox Watch
Linux發行版KaOS 2018.01發布,修復Spectre和Meltdown漏洞
行業先驅Materialise談2018年3D列印行業的5大趨勢
2018 Collection 哪件會成為你的嫁衣呢?
Carnegie Museum of Art 2018 主題展覽
Android 9.0要來了!Google I/O 2018大會確定5月8日舉行
soo hyun ★【180120圖片】金秀賢modetour更圖1p
2017慈緣雅集之問禪集錦Some questions about Zen of CiYuan 2017
seiko手錶 2018,你好!