LoginSignup
3
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
}
3
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
3
1