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

前言

此篇文章會記錄一下我以爲比較實用的Git+Shell(由於筆者不用Sourcetree等圖形化工具,命令行效率更高,同時通用價值也更高一點)的小技巧,或者也能夠說是騷操做,一是爲了給本身當備忘錄,二是分享給有須要的同窗~git

技巧

批量拉取所有遠程分支

日常咱們會這樣獲取全部已追蹤的遠程分支更新正則表達式

git remote update
git pull --all
複製代碼

若是想獲取所有遠程分支並在本地建立(有時候拉取Github開源項目學習時,常常須要拉取所有分支),如下命令就能夠幫你偷個懶。shell

for remote in `git branch -r `; do git branch --track $remote; done
複製代碼

快速切換分支

有沒有一種痛苦,就是切換分支時,必定要寫全寫對名字才能切換,假如分支名又臭又長的話,那就...那就只有複製粘貼了!express

可是且慢!打開 .gitconfig 文件bash

open ~/.gitconfig
複製代碼

在裏面輸入:工具

[alias]
  find-branch = !sh -c \"git branch -a | grep -v remotes | grep $1 | head -n 1 | xargs git checkout\" 複製代碼

保存後,此時能夠直接在命令行裏輸入分支名的前幾個字符就好了(只有你確保惟一,不然默認匹配找到的結果的第一個)post

如圖,直接輸入git find-branch ${shortcut}這種形式,便可快速風騷切換。學習

(有心的同窗發現了,在.gitconfig和在.bash_profile裏發揮想象力,增長各類alias別名,能夠迅速提升工做效率)ui

批量對部分文件執行Git命令

有時候咱們須要對某些文件批量進行Git操做,而Git自己不必定知足這個需求的時候。能夠參考如下命令:spa

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命令行學習筆記

相關文章
相關標籤/搜索