LoginSignup
1

More than 1 year has passed since last update.

コマンドを作成してGit操作を効率化する

Last updated at Posted at 2021-08-18

概要

普段のGit操作をコマンドを作成することで効率化を図りました。

※こちらの記事を応用したものになります。

前提

PhpStromのターミナルで操作することを前提としています。(VS Codeでも可です)
シェルはzshを使用しています。(ご使用のシェルが異なる場合は、ご使用のシェルに合わせて変更してください)
スクリーンショット 2021-08-18 22.08.22.png

以下をインストールしてください。

  • GitHub CLI
  • peco

作成したコマンド

1. リポジトリをブラウザで開く

GitHub上でissueを確認することが多いので、現在の作業リポジトリを指定した場合はissue一覧画面が開くようにしています。
他リポジトリを指定した場合はGitHubのCodeの画面が開きます。

og() {
  target=`find ~/GitRepository -type d -maxdepth 1 | sed -e '1s/.*/./g' |cut -d / -f 5 | peco`
  if [ "$target" = "." ]; then
    gh issue list --web
  elif [ "$target" != "" ]; then
    gh repo view github.com/eyemovic/"$target" --web
  else
    echo 'Cancel open GitHub' >&2
  fi
}

2. リモートブランチ(プルリクエスト)をローカルにチェックアウト

プルリクエストされたリモートブランチをローカルに取り込んで動作確認を行いたい場合によく使用します。

rb() {
  target=`gh pr list | peco --prompt "GIT REMOTE BRANCH>" | awk '{print $1}'`
  if [ "$target" != "" ]; then
    gh pr checkout "$target"
  else
    echo 'Cancel checkout remote' >&2
  fi
}

3. issueからブランチ作成

自動的に選択したブランチから切ってfeature/issue_番号、またはhotfix/issue_番号のブランチを作成します。
また、作成と同時に選択したissueに対応中、またはdoingのラベルを付けます。(GitHub上で対応中、またはdoingのラベルが設定されていれば)
画面収録 2021-08-18 22.51.00.mov-4331C4B5-8537-4031-9061-9E4D104393E6.gif

ib() {
  target=`gh issue list | peco --prompt "GIT ISSUE BRANCH>"`
  if [ "$target" != "" ]; then
    number=`echo "$target" | awk '{print $1}'`
    branch=`echo 'develop\nmaster' | peco --prompt "SELECT THE BRANCH YOU WANT TO CREATE FROM>"`
    if [ "$branch" = develop ]; then
      gh issue edit "$number" --add-label "対応中"
      gh issue edit "$number" --add-label "doing"
      git checkout develop && git pull && git checkout -b feature/issue_"$number"
    elif [ "$branch" = master ]; then
      gh issue edit "$number" --add-label "対応中"
      gh issue edit "$number" --add-label "doing"
      git checkout master && git pull && git checkout -b hotfix/issue_"$number"
    else
      echo 'Cancel create issue branch' >&2
    fi
  else
    echo 'Cancel create issue branch' >&2
  fi
}

4. 現在のブランチでプルリクエスト作成

選択したブランチへプルリクエストを作成します。
作成と同時に以下が自動で設定されるようになっています。

  • タイトル
  • 本文
  • アサインを自分に割り当て
  • reviewableのラベル
  • issueのラベルをreviewableに切り替え

あとはレビュー者を指定するだけです。

画面収録 2021-08-18 22.38.30.mov-76C4625A-C470-4968-A22E-ACF2DA8FBFEF.gif

cpr() {
  current_branch=`git branch --contains | sed -n '/^*/p' | awk -F "/" '{print $2}'`
  number=`echo "$current_branch" | awk -F "_" '{print $2}'`
  target=`gh issue list | grep "^$number"`
  text=`echo "$target" | awk '{print $3}'`
  base_branch=`echo 'develop\nstaging\nmaster' | peco --prompt "SELECT THE BRANCH TO MERGE INTO>"`
  if [ "$base_branch" != "" ]; then
    gh issue edit "$number" --remove-label "対応中" --add-label "レビューOK"
    gh issue edit "$number" --remove-label "doing" --add-label "reviewable"
    gh pr create -B "$base_branch" -t "#$number $text" -b "
Closes #$number
@

ご確認よろしくお願いします。
" -a "@me" -l "レビューOK,reviewable" -w
  else
    echo 'Cancel create pull request' >&2
  fi
}

5. 試験環境、本番環境へプルリクエスト作成

反映先ブランチを選択して、タイトルに自動で日付が入るようにしています。

dpr() {
  today=`date '+%Y年%m月%d日'`
  base_branch=`echo 'staging\nmaster' | peco --prompt "SELECT THE BRANCH TO MERGE INTO>"`
  if [ "$base_branch" = staging ]; then
    gh pr -H develop create -B "$base_branch" -t "【試験環境反映】$today" -a "@me" -w
  elif [ "$base_branch" = master ]; then
    gh pr -H staging create -B "$base_branch" -t "【本番環境反映】$today" -a "@me" -w
  else
    echo 'Cancel create deploy pull request' >&2
  fi
}

6. ローカルブランチの切り替え

ブランチの切り替えと同時にpullして、リモートブランチとの差をなくすようにしています。
画面収録 2021-08-18 22.51.59.mov-C2482C36-E625-4EE7-8048-BA04C3929957.gif

lb() {
  target=`git branch | peco --prompt "GIT LOCAL BRANCH>" | sed -e "s/^\*\s*//g" | awk '{print $1}'`
  git checkout "$target" && git pull
}

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
What you can do with signing up
1