0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

fishでgitコマンドを一括で実行してくれる関数を作ってみる

Last updated at Posted at 2020-12-17

完成系がこちら

push_staging_color という自分で作ったコマンドを打つと
git系のコマンドが連続で実行されてますね。
スクリーンショット 2020-12-17 14.30.06.png

では作っていきましょう

fishには関数を作るための専用ファイルがある

Macはこちらのディレクトリにあるはず
.config/fish/functions/

この中に コマンド名.fish っていうファイルを作って関数を書いていけば自作のコマンドで実行できるはずだ。

ファイルを作ってみる

自分は今回stagingというブランチに自分の開発しているbrachをmergeするまでのコマンドを書いていくつもりなのでstagingという名前にしました。
スクリーンショット 2020-12-17 14.54.50.png

中身を書いてみる

今回やりたいことは
自分で入力したブランチ名を叩けば、git fetchとかgit mergeとか自動的にやってくれるようにします。

まず自分のブランチ名を入力したいので git branch でブランチ名を表示させてコピペできるようにします。
その後、ブランチ名入力モードに移動し、ブランチ名を入力するとgitのあれこれを実行させます。

コードはこんな感じになります。

function push_staging
    git branch \
    && read branchName \
    && git checkout master \
    && git fetch \
    && git branch -D staging \
    && git checkout -b staging origin/staging \
    && git merge "$branchName"
end

function push_staging_display
    echo "> git branch" \ && git branch \
    && read branchName \
    && echo "> git checkout master" \ && git checkout master \
    && echo "> git fetch" \ && git fetch \
    && echo "> git branch -D staging" \ && git branch -D staging \
    && echo "> git checkout -b staging origin/staging" \ && git checkout -b staging origin/staging \
    && echo "> git merge <branchName>" \ && git merge "$branchName"
end

function push_staging_color
    echo -e "\e[93m> git branch \e[97m" \ && git branch \
    && read branchName \
    && echo -e "\e[93m> git checkout master \e[97m" \ && git checkout master \
    && echo -e "\e[93m> git fetch \e[97m" \ && git fetch \
    && echo -e "\e[93m> git branch -D staging \e[97m" \ && git branch -D staging \
    && echo -e "\e[93m> git checkout -b staging origin/staging \e[97m" \ && git checkout -b staging origin/staging \
    && echo -e "\e[93m> git merge <branchName> \e[97m" \ && git merge "$branchName"
end

下記のコマンドで実行できます。

staging
push_staging_color

処理内容の解説

・ ご覧の通り三種類の関数があります。
・それぞれの違いを見るために実際にコマンドを叩いてみましょう。
・ functionのあとの名前が実際の実行コマンドになります。
・ 一番最初のfunctionのコマンドを叩いてみましょう
・ ファイル名を叩きます。自分の場合はstagingです。
・ その後functionのあとのコマンドを打ちます。
スクリーンショット 2020-12-17 15.33.56.png

・ やりたいことは全部実行してくれましたが何が実行されたのかあまりわからないですね。
・ ここでもしエラーが出た時にどのコマンドでエラーがでるのかわからないのが不便ですね。
・ コマンドを実装する前に実行コマンドを表示させるようにしたいですね。

・では二番目の関数を実行してみましょう
スクリーンショット 2020-12-17 15.44.53.png

・ 実行コマンドが表示されましたね。
・ 一つ目との関数との違いはechoを入れるか入れないかですね。
・ ただechoした内容とその結果が同じ色なので見づらいですね。
・ echo した内容の色付けをしたいですね。

同じように三番目の関数を実行しましょう
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_387055_e9cf7502-1eff-ee74-ceda-72ee96ab164a.png

echoするときに色をつけるようにしました。

今回はfishでの関数の作り方と使い方を参考程度にアップしました。

処理内容やコードの書き方はご自身で検索してみてください。

今後、気が向いたら下記のコードの意味を解説していこうかなって考えています。
\ && read 変数名 $変数名

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?