git branchとmerge

gitのイメージ プログラミング

個人でgitを使うときもbranchとmergeを使えるとちょっと便利。

新機能を組込んでいる途中で「こりゃだめだ」というときは、そのbranchを破棄しちゃえばいい。

新機能の組込みがうまくいったら、mainにmergeできます。

個人開発の場合でも、1回完成したアプリに機能追加をするときにbranchとmergeは使えるんじゃないかと。

※この記事は、git/githubに関する備忘録です

branchでよく使うgitのコマンド

branchに関するコマンドは以下のようなものがあります。

git branch // branchの確認
git branch <新しいbranch名> // branchの作成
git branch -m <古いbranch名> <新しいbranch名> // branch名の変更
git switch <branch名> // branchの切替
git switch -c <新しいbranch名> // branchの作成と切替
git branch -d <branch名> // branchの削除

こんなところのコマンドを使えればいいでしょう。

Visual Studio Codeには、コマンドではなくてもgitのコマンドが使えるのがちょっと嬉しい。

Visual Studio Codeのgitのマーク

Visual Studio Codeのウインドウの左下のgitのマークをクリックすると、

Visual Studio Codeのgitの操作

gitの操作ができる、ウインドウが出てきます。

ただ、Visual Studio Codeの機能を使うと、マウス操作が必要となるので、コマンドで操作する方が速いし、かっこいいですね。

githubにbranchを作成

ローカルにbranchを作ったのですから、リモート(github)にもbranchが必要になります。

といっても、ローカルから、branch名を指定してpushすればOK。

git push origin 「branch名」

そうすると、github側にbranchができます。

①には、practiceというbranchができたと示されています。

②にはbranch数がアップデートされました。

③は勝手にmainにmergeされないようにmainにmergeをプロテクトしましょうというメッセージ。

個人で開発するときには、プロテクトの必要はないですが、グループで開発するときにはちゃんと設定しましょう。

プロテクトの設定に関してはこちらを参照するのがよいかと。

リモート(github)でのmerge

チーム開発をしている時なんかは、リモートでのマージがメインになりますね。

githubでのマージのプロセス1

Pull Requestを押下して、Pull Requestの対象を指定する画面に行きます。

githubでのプルリクエストのプロセス2

New pull requestを押下して、

githubでのプルリクエストのプロセス3

どのbranchをmergeするかを指定して、Create pull request押下。

githubでのプルリクエストのプロセス4

承認してくれる担当者(個人開発では自分)にメッセージを付けて、Create pull requestを押下。

githubでのプルリクエストのプロセス5

追加変更の内容やコンフリクトなどないことを確認して、Maege pull requestを押下して、mergeへ。

githubでのプルリクエストのプロセス6

mergeの成功を確認して終了です。

ローカルでのmerge

個人開発では、branchを作ってもローカルでbranchをするのが基本だと思います。

それに、ローカルでのリモートと比べてカンタン。

ローカルでのマージ

practiceのブランチをmainにmergeします。

① 現在のブbranchをmainに変更

② practiceをmainにmergeする。

これで完了。

コンフリクトが発生した時には、メッセージで教えてくれるので、コンフリクトの修正の方法を調べて頑張りましょう。

個人で開発していれば、そんなにコンフリクトなんて起きないと思うし、チームでも担当がしっかり管理されているところなら、コンフリクトって起きないでしょう。

コンフリクトが多々発生するプロジェクトって、結構ヤバいと思います。

最後に

個人開発だと、branchはローカルで作成して、ローカルでmergeして、mergeしたものをリモートにアップロードするのが筋なんじゃないかと思うところです。

branchでアプリを作ったら、meinにmergeしてそこで疎通確認をするんじゃないかと思います。

だから、個人開発でリモートでmergeするというのはちょっと違和感を感じますね。

タイトルとURLをコピーしました