概要
普段のGit操作をコマンドを作成することで効率化を図りました。
※こちらの記事を応用したものになります。
前提
PhpStrom
のターミナルで操作することを前提としています。(VS Codeでも可です)
シェルはzsh
を使用しています。(ご使用のシェルが異なる場合は、ご使用のシェルに合わせて変更してください)
以下をインストールしてください。
- 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
のラベルが設定されていれば)
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に切り替え
あとはレビュー者を指定するだけです。
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して、リモートブランチとの差をなくすようにしています。
lb() {
target=`git branch | peco --prompt "GIT LOCAL BRANCH>" | sed -e "s/^\*\s*//g" | awk '{print $1}'`
git checkout "$target" && git pull
}