今天繼續做東西吧
本來 cargo 只有我們公司要弄,所以我們也沒什麼限制的狂開分支(看看那精美的分之數量),但是有一天,忽然有人覺得 github 上面的分支太多,有點亂,怎辦?
417 個分支耶,我才不要手動砍!
以下開始用最懶惰的方法,一口氣清空所有分支只留 develope 跟 master。
首先我們知道如果要刪除一個遠端分支,要打下面的指令:
git push origin :$BRANCH
除此之外,我們可以打這個指令列出所有分支:
git branch -a
不過要直接把 git branch -a
的結果塞進去 for
迴圈嗎?這不太妙,畢竟這樣的話連 master 跟 develope 分支也會被刪掉。
所以這裡,我們用比較省事的方法:先產生清單,然後編輯清單。
git branch -a > branch.txt
接著打開慣用的文字編輯器,把沒有要刪掉的分支從清單內拿掉,並且把前面的 remotes/cargo-demo/
拿掉( sed 不熟就用文字編輯器的搜尋取代) ,讓 branch.txt
變成這樣:
add/ScentTable
add/tracer
admin
auth
(下略)
接著,稍微試試看 for
迴圈正常不正常吧:
for branch in `cat branch.txt`; do
echo remote $branch will delete
done
為了避免指令錯誤,我們把指令前面加個 echo 試試看:
for branch in `cat branch.txt`; do
echo git push origin :$branch
done
接著隨便複製一條,試試看能不能跑:
git push origin :vue-useage
如果你發現要輸入帳號密碼,嗯……輸入 400 次帳號密碼?!算了吧,這裡有兩種解法:
加入驗證資訊其實也不難,就是標準的 http auth 而已,像是原本的:
https://github.com/dd-han/cargocms
假如我的帳號是 dd-han ,密碼是 myPass1001 ,那就改成這樣:
https://dd-han:myPass1001@github.com/dd-han/cargocms
如果帳號是 E-Mail 呢?兩個 @
號並不會正常運作,用 \
跳脫也不行。那很簡單啊,用 URL 的編碼方式跳脫就好啦,在 URL 的編碼方式裡面, @
會被跳脫成 %40
,所以假如帳號是 han@dd-han ,那就這樣改:
https://han%40dd-han.tw:myPass1001@github.com/dd-han/cargocms
到這裡我們解決了要打一對帳號密碼的問題,那就把 echo 拿掉,真的執行這個 for 迴圈吧:
for branch in `cat branch.txt`; do
git push origin :$branch
done
跑玩之後,記得把 branch.txt
刪掉,因為可能會需要一點時間執行,所以這時候當然不要等他啊,繼續寫其他 Code 啊!
我是誰?
我是 dd-han ,可以叫我呆翰,是國立臺中科技大學的延畢生 與 創科資訊的時習生。