LoginSignup
1
0

More than 3 years have passed since last update.

git checkoutでブランチ名全部打ってるのがバカバカしくなった話

Last updated at Posted at 2020-05-22

背景

業務中でgit-bashを使っているのですが、git-flow運用をしているせいで予測変換も上手く使えずイライラしてました。
おかげでfeatureをタイプする速度は職人技になりつつあります。
工数削減として対策をした結果をお話します。

はじめに

$ git checkout -

↑のコマンドで直前のブランチへチェックアウト出来る事は知っていましたか?
私はこれを知った時感動しました。とても重宝しています。
ですが、いくつかのタスクを並行してると直前のブランチが何だったか思い出すのも大変ですよね。

直前のブランチ何使ってたっけ?

$ git --no-pager reflog | awk '$3 == "checkout:" && /moving from/ {print $8}' | uniq | head | nl

このコマンドは直近checkoutをしたブランチの履歴を頭から10件表示してくれます。
直近のブランチが表示されるので、常に必要なやつだけが表示されて非常に便利ですよね。
私はこれをbrlogというコマンドで呼び出せるようにしました。
これで前章の問題は解決されました。
最後のnlで行番号を表示した理由を次章でお話します。

指定行のブランチ名をクリップボードにコピーしよう

指定した行番号のブランチをクリップボードにコピー出来れば、pullやcherry-pickにも使えて便利だと考えました。
そこで私はshellを書いて、brcopyというコマンドに登録しました。

#!/bin/bash

#validate
if [ $# != 1 ]; then
        echo 'You should input argmen'
        exit 1
fi

#main
ESC=$(printf '\033')
# ↓ head -n $1 | tail -n 1で特定行から一行だけ抽出してます。
OUT=`git --no-pager reflog | awk '$3 == "checkout:" && /moving from/ {print $8}' | uniq | head -n $1 | tail -n 1`
printf "${ESC}[32m%s${ESC}[m\n" "coping '$OUT' to clipboard"
powershell set-clipboard $OUT #これでクリップボードに任意の文字がコピーできます(Windows専用)



以下が実際に使用した場合の挙動です。

$ brlog
     1  release/patch_20200530
     2  feature/develop_test3-name
     3  feature/develop_test2-name
     4  feature/develop_test1-name
     5  develop

$ brcopy 4
coping 'feature/develop_test1-name' to clipboard

上記のコマンドでクリップボードへのコピーが完了してますので、checkoutするなりpullするなり好きに使ってください!

さいごに

皆さんはこの問題ってどのように対応しているのでしょうか?
何か対応方法がありましたらコメントで教えていただけると嬉しいです:)
(参考資料があったのですが、履歴をたどっても見つからなかったため、見つかり次第貼ります)

1
0
1

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
1
0