2021-05-12 14:32:11
8 個 Git 的小技巧
git 已經成為了我日常必備工具之一,我總結我幾乎每天使用的8個有用(且簡潔)的小技巧。
使用-p選擇性新增
當你想提交內容時,你可以通過使用 git commit -am 來選擇所有檔案或使用 git add file 來新增特定檔案。然而,有時候你可能想只新增檔案的一部分來提交。你可以用 git add -p 互動性地選擇哪些你想提交的部分。
在選擇完你所想要提交的區塊後,只需要做一個 git commit(沒有 -a),這樣只會提交選中的部分。同樣可以使用 git checkout -p 來選擇需要恢復的部分。新增後,你可以使用 git diff --cached 來檢視差異。
互動式的重建基準(Interactive Rebase)
如果你在一個分支上工作,同時進行了一些 WIP 提交(commit) ,以用來壓縮合併(squash)或者刪除一個提交(commit)以及這個提交的恢復, 你可以做一個互動式的重建基準(rebase),用來重新組織提交。
為了做到這點,你需要執行命令 git rebase -i <commit>,這裡的<commit>是你想要重寫之前的一個提交(commit)的sha1值。接下來,它將在你的編輯器(在$EDITOR環境變數,或者git設定裡面指定的編輯器)上面開啟一些指令,用來變更提交(commit)歷史,你可以選擇壓縮合併(將兩次提交合併為一次新的提交),重寫(變更提交資訊),編輯甚至刪除一個提交(commit)。
請注意這改變了歷史資訊,因此,如果你提交了這個變更,你將不得不再一次強制提交(push),所以,絕不要在主分支,或者有其他人(除你之外)在使用的分支上面做這個操作。
儲藏(Stashing)
如果你正忙於什麼事情,你必須更改文字去修復其他問題,去git stash查到到儲藏在當前中的更改。然而,過一段時間後,你可能就會忘記關於這個已儲藏的變更。因此,我試著去保持一個儲藏0(就像收件箱0如果沒有儲藏的情況)規則。每一次我儲藏一個美元信號出現在我的輸出,並且我通過git stash show -p檢查,還可以通過git stash pop彈出或者通過git stash clear丟棄。
全域性gitignore
在專案的根目錄,你可以通過檔案.gitignore來指定git需要忽略的檔案。但是,如果存在git需要忽略的檔案,同時,你又是唯一建立這個檔案的人(如vim的 bkp檔案,編輯器或者作業系統生成的一些檔案,如OSX生成的.DS_Store檔案),你可以在組態檔中指定全域性的gitignore檔案,它和工程中的.gitignore檔案使用一樣的語法格式。
git config --global core.excludesfile=/Users/flores/.gitignore
空格警告
我不得不承認:有時候我忘記程式碼尾部的一些空格。但是,通常我不會提交它們,因為我使用了這個選項:apply.whitespace=warn。每次我通過git add -p增加檔案中的一大塊程式碼,同時,這個程式碼塊尾部包含空格,由於git給出警告提示,因此我可以在提交前修正它們。
自動重建程式碼基準(Auto setup rebase)
另一個很酷的技巧是自動重建程式碼基準(auto setup rebase)。如果你有一個分支,並做了一些commit但並未push。同時,其他人也在這個分支上進行了commit和push。當你pull的時候,git會建立一個commit來合併你的commit到上游(upstream)commit。由於這個commit毫無意義,我更傾向於,在pull時,通過設定來自動重建程式碼基準(auto setup rebase):branch.autosetuprebase=always。設定之後,每個pull操作,git都會嘗試在當前版本的上游(upsteam)分支重新使用你的commit。
更好的紀錄檔(logging)
你是否嘗試過在一個分支中找一個特定的提交啊? git log 給我們提供了一些基本的資訊,不過你使用下面的命令會得到更多有用的資訊:
git log --graph --decorate --pretty=oneline --abbrev-commit
--graph 會在各個提交之間列印出線條,這些線條可以展示出分支之間的關係。
--decorate 顯示出分支處在哪一次提交上。
--pretty=oneline 只是在一行中顯示 sha1 和 提交的注釋(譯者將title一詞應對到更精確的註釋)
--abbrev-commit 用開始的7個sha1字元代替整個sha1(他在你的倉庫中是唯一的)。
你可以到 explain shell 去看這些選項的更詳細(且是完整)的解釋。
改寫提交的注釋
如果你在提交程式碼的時候註釋不能準確的描述當前提交,或者你寫了錯別字。你可以使用 git commit --amend 來改寫你已經提交的注釋。 他允許你在命令列中通過 -m 選項來指定新註釋或直接開啟系統預設編輯器讓你來編輯新的註釋。 另外你還可以把一些新的變化加入到上一次提交中。請記住 該操作和 Interactive Rebase 一樣,他會改變提交歷史。如果你已經把你改動的這次提交push了,那麼你需要強制(force)push這次變化。
歡迎你在評論中分享你在工作中發現一些能提升工作效率的 git小技巧。
GitHub 教學系列文章:
GitHub 使用教學圖文詳解 http://www.linuxidc.com/Linux/2014-09/106230.htm
Git 標籤管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm
Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm
Git 遠端倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm
Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm
Git 伺服器搭建與用戶端安裝 http://www.linuxidc.com/Linux/2014-05/101830.htm
Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm
分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm
相關文章