8 個 Git 的小技巧
git 已經成為了我日常必備工具之一,我總結我幾乎每天使用的8個有用(且簡潔)的git技巧。
使用-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)的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小技巧。
本文轉自:碼農網
相關文章
- git小技巧Git
- git 小技巧Git
- 8個CSS函式的小技巧CSS函式
- 分享一個用Git裝逼的小技巧~Git
- 7 個改變我生活的 Git 小技巧Git
- 8個關於Python的小技巧Python
- Git 小技巧彙總Git
- Git使用小技巧之多個遠端倉庫Git
- 圖片怎麼優化的8個小技巧優化
- 圖片優化須知的8個小技巧優化
- 程式碼重構:類重構的 8 個小技巧
- 扁平化設計的8個實用小技巧
- 提升WordPress網站載入速度的8個小技巧網站
- 8個小技巧,讓一個遊戲變得更好玩遊戲
- 一些 實用的 git 小技巧Git
- Git 小技巧:忽略某些檔案的更改Git
- 與開發團隊高效協作的8個小技巧
- 分享幾個組合Git+Shell提升工作效率的小技巧Git
- 8個有用的JS技巧JS
- 8 個有用的 JS 技巧JS
- 8條github使用小技巧Github
- postman 的一個小技巧!Postman
- 25個 Git 進階技巧Git
- Git 12 歲了,為你送上 12 個 Git 的使用技巧!Git
- 五個有用的jquery小技巧jQuery
- 切換到Git的8個理由Git
- git小技巧--提取/合併某分支的部分檔案Git
- CSS效能優化的8個技巧CSS優化
- 9 個強大的 JavaScript 小技巧JavaScript
- 6個提升PostgreSQL效能的小技巧SQL
- TypeScript Partial 使用的一個小技巧TypeScript
- js實用的十個小技巧JS
- 10個提升MySQL效能的小技巧MySql
- Swift開發的幾個小技巧Swift
- Chorme 35個開發者工具的小技巧ORM
- TKE 體驗升級:更快上手 K8s 的24個小技巧K8S
- 厲害啦!!這8個非常實用的小技巧,你肯定會用得上!
- 8個對程式設計師來說有用的jQuery小貼士和技巧程式設計師jQuery