前言
此篇文章會記錄一下我覺得比較實用的Git+Shell(因為筆者不用Sourcetree等圖形化工具,命令列效率更高,同時通用價值也更高一點)的小技巧,或者也可以說是騷操作,一是為了給自己當備忘錄,二是分享給有需要的同學~
技巧
批量拉取全部遠端分支
平常我們會這樣獲取所有已追蹤的遠端分支更新
git remote update
git pull --all
複製程式碼
如果想獲取全部遠端分支並在本地建立(有時候拉取Github開源專案學習時,經常需要拉取全部分支),以下命令就可以幫你偷個懶。
for remote in `git branch -r `; do git branch --track $remote; done
複製程式碼
快速切換分支
有沒有一種痛苦,就是切換分支時,一定要寫全寫對名字才能切換,假如分支名又臭又長的話,那就...那就只有複製貼上了!
但是且慢!開啟 .gitconfig 檔案
open ~/.gitconfig
複製程式碼
在裡面輸入:
[alias]
find-branch = !sh -c \"git branch -a | grep -v remotes | grep $1 | head -n 1 | xargs git checkout\"
複製程式碼
儲存後,此時可以直接在命令列裡輸入分支名的前幾個字元就行了(只有你確保唯一,否則預設匹配找到的結果的第一個)
如圖,直接輸入git find-branch ${shortcut}
這種形式,即可快速風騷切換。
(有心的同學發現了,在.gitconfig和在.bash_profile裡發揮想象力,增加各種alias別名,可以迅速提高工作效率)
批量對部分檔案執行Git命令
有時候我們需要對某些檔案批量進行Git操作,而Git本身不一定滿足這個需求的時候。可以參考以下命令:
git status -s | grep "README\.md" | sed 's/A //' | while read i; do git reset HEAD $i; done
git status -s | grep "README\.md" | sed 's/M //' | while read i; do git checkout --ours $i; done
複製程式碼
上述命令分為兩步,一是將此專案中所有README.md
檔案從暫存區恢復到工作區,二是將此專案中所有README.md
檔案的衝突批量改為保留自己的改動。
上述命令經過一定的修改其實可以滿足很多場景的!所以不要被限制住了。
小知識
以下摘自網際網路,命令具體使用詳情可自行檢索~
xargs
xargs命令是給其他命令傳遞引數的一個過濾器,也是組合多個命令的一個工具。它擅長將標準輸入資料轉換成命令列引數,xargs能夠處理管道或者stdin並將其轉換成特定命令的命令引數。
sh
sh命令是shell命令語言直譯器,執行命令從標準輸入讀取或從一個檔案中讀取。
grep
grep(global search regular expression(RE) and print out the line,全面搜尋正規表示式並把行列印出來)是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。
sed
sed 可依照指令碼的指令來處理、編輯文字檔案。用來自動編輯一個或多個檔案、簡化對檔案的反覆操作、編寫轉換程式
想了解更多也可以參考我之前寫的這篇:Shells命令列學習筆記