KojiMurata()

=

開発備忘録

【GIT】ブランチを切ることの大切さ




Git管理されてるコードをリリースためにpullしてアーカイブ(Xcode)するのか、または機能追加やバグ修正のために別のブランチからコードをマージするのか、参考になれば良いと思い、ここにメモっておくことにしました。

mainの開発環境のままで作業するリスク

現在のバージョンに対して、新たに機能を追加したりするとき、ブランチを切った方が安全です。実際に、こんな経験をしたことはありませんか?

「ちょっとこの機能を変更してみよう」
→ いろいろ書き換えた結果、元に戻せないくらいコードがグチャグチャに……!

開発してると、「この処理、別のやり方で書けないかな?」とか、「ちょっとデザイン変更してみよう」みたいに、小さな“試し”をやりたくなる瞬間ってよくあります。でも、開発のmainブランチ(あるいはmaster)を直接いじるのは超キケン!なぜなら、うっかり動かなくなったり、他の人がpullしたときに、バグを巻き込んだりと、取り返しがつかないことが起こる可能性があるからです。

そんな事故を防ぐための最強のツールこそ、「Gitのブランチ機能」です!

Gitで「ブランチを切る」とは?

Gitでブランチを切るのは、ざっくり言うと:「いまのmainにあるコードを安全に保ったまま、別のコピーを作ってそっちで作業する」というイメージです。

例えとして、ケガモンの大冒険を開発しているとします。そこで、ゲームの登場人物であるバサマがオナラをする機能を追加したいと思います。Gitのmainブランチには最新のコードがある前提で、新たにブランチを切りたいと思います。そのブランチを「basama-onara」と名付けましょう。コマンドは以下の通りになります!Gitでもう一つ便利なのはブランチを切る際、以下のようにフォルダーのような階層も作ることができることです!そのため、管理しやすくなります。できれば、mainと同じ階層ではなく、new-featureというフォルダーの中に「basama-onara」のブランチを作りたいものです!

main
new-feature
ー basama-onara

上記のような階層にするには、以下のコマンドを叩きます。

git checkout -b new-feature/basama-onara

すると、basama-onaraというブランチがローカル環境で出来上がります。このコマンドの意味は「新しいブランチを作成して、同時にそのブランチに切り替える」という意味です。しかし、この状態はローカル環境だけなので、githubなどのリモートリポジトリにはまだ存在しません。

ローカル環境で作成したブランチをリモートにも反映するには?

現時点でgithub(リモート)を確認しても、作成したはずの「newfeature/basama-onara」は存在しません。ここで切ったブランチを一旦pushしたいと思わないでしょうか?しかし、それは間違いです!basama-onaraのブランチに切り替えている状態で、そのままgit pushを叩くと、以下のエラーが表示されてしまいます。

fatal: The current branch new-feature/basama-onara has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin new-feature/basama-onara

というエラーが表示されます。たしかに、リモートには存在しないブランチなので、エラーが提案した上記のコマンドを叩くようにしましょう。

git push --set-upstream origin new-feature/basama-onara

すると、以下のようにリモートでも新たにローカル環境で作成したブランチが反映されたことが知らされます!

 * [new branch]      new-feature/basama-onara -> new-feature/basama-onara

ちなみに余談ですが「git push -u origin new-feature/basama-onara」でもリモートへ反映させることができます。少なめのコマンドなので便利です!

ブランチを切ると得られる安心

  • コードを壊すリスクが激減
  • 実験的な変更も気軽に試せる
  • 本番環境を守れる
  • チーム開発でも他の人に迷惑をかけない