忍んでいる肉球の足跡

プログラムに関連することを雑多に扱います

git flow avhをうまく使う方法

概要

git flow avhというものを知っていますか?

git flowではできなかったbranchのrename, delete, rebaseができるようになったfork です。 元々のgit flowではbranchのdeleteやrebaseは直接gitコマンドを叩かなければいけませんでした。

git flow avhはbrewではデフォルトで拾われてなかった気がします。 ubuntu 18.04からはapt install git-flowとするとgit flowではなく、git flow avhがインストールされるようになったようです。

ただ、windows wsl2環境だとaptで入れたgit flow initのbranch prefixのdefaultが空文字列でめんどくさかった覚えがあります。

公式へのリンク

GitHub - petervanderdoes/gitflow-avh: AVH Edition of the git extensions to provide high-level repository operations for Vincent Driessen's branching model

インストール方法

cloneしてbinのpathを通す

git clone -b master git@github.com:petervanderdoes/gitflow-avh.git
お得な使い方
git flow で作成したbrachを消したい時
git flow feature delete xxxxxx
git flow で作成したbrachをrenameしたい時
git flow feature rename xxxxxx yyyyyy
git flow で作成したbranchがリモートでコンフリクトしたので現在のdevelopからの枝としてrebaseしたい時

git merge develpよりもコンフリクト解消が楽なのでおすすめ。

git flow feature rebase xxxxx
githubのpullrequest reviewのフローと併用してgit flowをローカル環境で使っているときに、merge済みのブランチ自動削除
git fetch origin -u develop:develop master:master && git checkout develop && git fetch -p && for branch in `git branch -vv | grep ': gone]' | awk '{print $1}'`; do git branch -D $branch; done

↑の参考:

個人的に好きなfeatureの命名規則
git flow feature start <topic name>/id/<github issue number>
# その他
  • jetbrainsのgit tool的なやつを使うと、merge, rebase時のコンフリクト自動解消できる
    • ただmergeだと自動解消の精度が低いため、git flow rebaseを使うのが便利だよ。

※雑作成なので誤記があるかも、記事書く気力が