こんにちは!新人エンジニアのるいです。
昨日、コミット数について褒めてもらえて嬉しかったという記事を書いていて「最初はGitというものも、ブランチを切る意味も分からなかったな」と思い出したので、Gitについてまとめてみました。
昨日投稿した記事↓
はじめてプロジェクトに参加しました。|新人エンジニア体験記 - Qiita
そもそもGitとは
Gitとは、変更履歴管理ツールです。
Gitは、コードエディッターのターミナルやGitHubなどのGUIツールで視認しながら管理・運用します。
なぜGitに苦手意識をもったのか?
冒頭でも触れたように「なぜブランチを切るのか?」「コミットはいつするのか?」がずっと理解できずにいたからです。
私が修了したコーディングブートキャンプ(以降、BCと記す)では、一番最初のセクションでGitについて習うのですが、Gitそのものやブランチの説明を受けても、前半は個人開発セクションのため、ブランチを切る必要性を実感できていなかったからだと思います。
本題1:なぜブランチを切るのか??
一言でいうならmainブランチを安全に保ちつつ、並行開発を効率的に進めるため。
個人開発では体感しずらいのですが、チーム開発になると並行して様々な機能を複数人が開発することになるので、mainブランチのみだとプッシュしたときにそれぞれが追加したファイルやコードが影響しあったり、競合(コンフリクト)が発生して解消のために作業が止まることになります。
そこで、担当者ごとや機能ごとにブランチを切って作業すると安全に開発が進められます。
このブランチを切って開発を進め、統合していくことをブランチ戦略と言います。
ブランチ戦略は複数あって、BCではGit-flowとGitHub-flowを習いました
↑はブランチ戦略の一例です。
詳しく解説して頂いている記事がありました。
Gitにおけるブランチ戦略について調べてみた - Qiita
個人開発の内はブランチを切る必要性が実感しずらいですが、個人開発でブランチを切る→開発する→コミット→プッシュ→マージの練習をしておいた方が絶対にいいと思います。!
本題2:コミットはいつするのか?
結論:一つコードを書いたらコミットするとよい!
例: greet関数
のみ記述されているファイルがあります。
↓ greet関数
の下に add関数
を追加したい
↓追加したら
コミット!
Q.なぜ、細かくコミットする?
A.どんな変更をしたか辿りやすい!
コミットをする際にコミットコメントというものを残すのですが、コミット履歴でコメントを見ればどんな機能やコードに変更を加えたのか分かりやすくなります。
また、revertという機能を使ってコミットを無かったことにすることができるのですが、細かくしていれば影響範囲が少なく済みます。
他にも、「とある状態まで戻したい!」という時に使えるコマンドもコミットごとに影響するので、やはりコミットは細かくしていく方がいいと個人的には思います。
本来の理由は違うかもしれませんが、私は上記のように捉えています。
コミットする方法
コミットするには以下の3つのコマンドでOK
git add [ファイル名]
git commit -m "追加した機能やコードについての簡潔な説明文"
git push origin [ブランチ名]
例: /abc.js
というファイルの変更(関数を追加)を feature/add_func
ブランチにコミットする場合
git add abc.js
git commit -m "add: 関数追加"
git push origin feature/add_func
-
git add
でステージング(Gitに履歴を追加しますよ~の宣言) -
git commit
でコミット-
-m
:”message”のm、これを付けることで「このあとに続く文字列をコミットメッセージとして扱ってね」の意味になる -
"add: 説明文"
:addなどはコミットコメントの先頭につけて「どんな変更なのか宣言する」イメージです
-
-
push
:Gitに履歴を追加
他にもGitを扱う上でさまざまなコマンドが存在します。
全部を網羅することは難しいですが、基本的なものだけでも覚えておくと作業効率がアップします。
覚えられるまで、作業中すぐ参照できる場所に一覧を作っておくと良いです。
たくさんのコマンドを解説して頂いている記事もリンクしておきます。
Git/GitHubコマンド集 - Qiita
まとめ
ここまで読んでくださり、ありがとうございました。
今でこそ、GitHubは息をするように扱えますが、最初はコマンドを見るだけで嫌でした(笑)
あのときの私が教えて欲しかった内容を、欲しかった方法で文章にしてみました。
これから、エンジニアになる方や私と同じ新人エンジニアさんのGit攻略の一助になればうれしいです。