👌

git hub で正しくブランチをきるために

に公開

はじめに

今回は git hub のコマンドについて詳しく書いていきたいと思います。
使い始めて半年以上たちましたがいまだにコマンドはややこしいし、今関わらせていただいているアプリ開発でもブランチの切り方や pull のミスでうまくいっていないことが多いです。
先輩たちがいろいろと教えてくれて、そのやり方やコマンドについて理解できた部分をまとめていこうと思います。

dev branchとは

今までなんとなくしか知らなかった dev brannch。
これは、develop branch の略で、ソフトウェア開発で使う作業場所のようなものです。
そもそも git hub は、メンバーがそれぞれブランチを切って作業をして、メインのブランチにマージしていくという開発方法を行う上で便利なサービスですが、いきなり main branch にはマージしないようです。(もちろん時と場合によりますが)
一度ベースとなるブランチにマージしていって、アプリとして完成したあとに本番用の main branch へマージします。そのときに出てくるベースとなるブランチがこの dev branch です。

pull fetch mergeの違い

git hub ではリモートからローカルへ情報を取得させる際に pull や fetch というものがあります。また、それぞれのブランチを dev brannch や main brannch へ統合していくことを merge と言いますが、ローカルのブランチへマージする場合があるそうです。
それぞれの違いを以下にまとめてみます。

git fetch リモートリポジトリの情報を取得してくることで、ブランチに変更は加えない
git merge ローカルのブランチ間でマージする
例:ローカルの dev branch の変更をローカルで作業中のブランチへ反映
git pull リモートリポジトリの情報を取得したうえで自動的に現在のブランチへ反映させる

つまり、簡単にいえば以下のような関係があります。
git pull = git fetch + git merge

また、git pull をした際は必ず以下のコマンドを実行することを忘れないでください。
build_runner をまわすことで自動生成ファイルができます。

flutter pub get
dart run build_runner watch  -d

現在いるブランチ・ブランチ一覧を確認する

現在、自分がいるブランチやローカル・リモートそれぞれのブランチを確認するコマンドをいかにまとめておきます。

現在のブランチを確認するコマンド

git branch --show-current

ローカルのブランチ一覧を確認するコマンド

git branch

リモートのブランチ一覧を確認するコマンド

git fetch --all
git branch -r

新規ブランチ作成

新規ブランチを作成するコマンドは、現在 dev branch にいる場合といない場合で変わります。
まずは現在いるブランチがどこにいるか、上で述べたコマンドを活用して確認することが大切です。

dev branchにいる場合

git switch -c 新しいブランチ名 develop

これはローカルの dev branch から新しいブランチをきっています。
そのため、リモートのブランチで変更がある場合は pull した上でブランチを切りましょう。
最後の develop はなくてもかまいません。なければ現在いるローカルのブランチから切られます。

dev branch以外にいる場合

git fetch origin
git switch -c 新しいブランチ名 origin/develop

これはリモートの dev branch から新しいブランチをきっています。
最新の情報を取得したうえでブランチを切っています。

しかし、dev branch に移動してから新たなブランチを切ることをおすすめします。
最後の develop を入れずにブランチを切り続け、最新情報が更新されないままブランチのブランチで作業を続けることが起こりうるかもしれません。
そんなことをする人はまずいないでしょう、僕以外は…
(コミット履歴から違和感は感じていました)

最新の dev branch をマージする

最新の dev branch に変更があった際に、作業中のブランチへその情報をマージするコマンドは以下の通りです。

git switch feature/作業中のブランチ
git fetch origin
git merge origin/develop

まず、作業中のブランチへ移動します。すでにいる場合は1行目はなくて大丈夫です。
そこで dev branch の最新の情報を取得した上でそれを作業中のブランチへマージします。

リモートのブランチを開く場合

他人が作業をしてプッシュしているリモートブランチを、自分のローカルブランチで開く際のコマンドについて書きます。ただし、これによってお互いの変更が反映されるということではなく、あくまでも現在のリモートブランチから新しいブランチを切っている状況です。
以下はそのコマンドです。

git switch -c ローカルブランチ名 origin/リモートブランチ名

相手が新たに変更を加えていて、それをローカルのブランチにも反映させるときは、「最新の dev branch をマージする」の末尾を develop から更新したいブランチ名に変えて行ってください。
また、ここでもflutter pub getdart run build_runner watch -d はやっておきましょう。

最後に

今回の学習を通して、git hub を使ってどのようにブランチを切って作業するべきなのか理解できたような気がします。
現在行っている開発では、pull の仕方を間違えているせいでビルドエラーが出て数日悩まされたり、ブランチの切り方を間違えてプルリクに変な差分が出ていたりとよく困っていました。
しっかり理解して git hub を使いこなしていけるようにしたいと思います。

ぽちぽちのつどい

Discussion