分享幾個組合Git+Shell提升工作效率的小技巧

蘇里發表於2019-06-18

前言

此篇文章會記錄一下我覺得比較實用的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+Shell提升工作效率的小技巧

如圖,直接輸入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命令列學習筆記

相關文章