Gitとはファイルなどへの変更履歴を記録しそのバージョンを管理するツールで、誰がソースコードのどこを変更したのかなどを管理するためのものです。
エンジニアやコーダーの実務においてGitは必須知識だと思います。
しかし使い始めの時は何をしているのか分からず戸惑ってしまう事がありました。
今回はそんな経験から初学者に向けた躓きやすいGitの使い方について紹介します。
目次
ブランチ
ブランチとは変更履歴を分岐させて記録していくための機能です。
ブランチ毎の役割と実際の作業で必要なブランチの操作手順を説明していきます。
ブランチモデル
今回紹介するのはBRISKで使っているブランチモデルです。
master
本番環境と同じ状態のブランチ
基本的にはこのブランチでコミットは行わずマージするのみ
develop
開発環境で実装や動作確認を行うブランチ
master同様にコミットは行わずマージするのみ
feature
追加機能や修正を行うブランチ
developで行った作業の差分をコミット
release
本番反映用のブランチ
hotfix
本番反映後の緊急対応用のブランチ
開発作業手順
①masterブランチからfeature/〇〇〇ブランチを切る
②作業自体はdevelopブランチに切り替えて行う
③コミットする際は変更分を退避させるためにスタッシュを行う
④feature/〇〇〇ブランチに切り替えて先ほどのスタッシュを適応させてコミット
⑤再度developブランチに切り替えてfeature/〇〇〇ブランチをマージ
本番反映手順
①masterブランチからrelease/〇〇〇ブランチを切る
②本番反映したいfeature/〇〇〇ブランチをrelease/〇〇〇ブランチにマージ
③本番反映後release/〇〇〇ブランチをmasterブランチにマージ
緊急対応手順
①masterブランチからhotfix/〇〇〇ブランチを切る
②修正対応後hotfix/〇〇〇ブランチをdevelopブランチ、masterブランチにマージ
基本操作
コンフリクト解消
コンフリクトとは複数人が同じ箇所を変更した時に起こるエラーのようなものです。
警告マーク⚠️が付いているコミットを右クリック>競合を解決で以下の選択肢が出るので正しい記述の方を選択します。
– 自分の変更を使って解決
– 相手の変更を使って解決
下記の【<<<<<< HEAD ~ ====】が自分の変更で、【==== ~ feature/〇〇〇 >>>>>>】がマージ先である相手の変更になります。
1 2 3 4 5 6 7 | <<<<<< HEAD print("aaaaa"); ===== print("bbbbb"); feature/〇〇〇 >>>>>> |
この他に両方の変更を取り入れる必要がある場合は該当ファイルを直接編集してコミットします。
チェリーピック
チェリーピックは他のブランチにある特定のコミットを取り込みたい時に使います。
別の変更内容と一緒にコミットしたい場合やコミット名を変更したい場合は、下記のチェックを外すことで自動コミットを避けられます。
複数回実行する場合は古い順に行います。
コミット打ち消し
プッシュしたコミット内容を打ち消したい時に使います。
コミット打ち消しをさらに打ち消すことも可能です。
複数回実行する場合は新しい順に行います。
Git管理から除外
コミットする必要のないファイルはGit管理の対象外にしておく必要があります。
設定方法を4つ紹介します。
①「.gitignore」に記述
②「.git/info/exclude」に記述
③グローバルな Git 無視規則
ユーザーフォルダに.gitignoreを作成したあと、下記のコマンドで指定します。
1 2 3 | git config --global core.excludesfile ~/.gitignore |
④sourcetreeのグローバル無視リストに追加する
SourceTreeを開き上部メニューの[ツール]->[オプション]->[Git]から設定できます。
①の場合「.gitignore」自体がGitで管理されるので、すべての人が同じ種類のファイルを対象外にするようになります。
逆に②③④は他の人に設定が共有されないので、個人的なファイルを対象外にするために使います。
③④は一括で設定できるので、「.idea」や「.vscode」等の毎回対象外にするファイルの設定に便利です。
■ファイル指定の仕方
gitignoreの書き方チートシート【テンプレあり】
まとめ
今回は実際に初学者の自分が躓いた部分をまとめました。
ブランチの管理方法が複雑に感じる時は、まずはブランチ毎の役割を覚える事で徐々に理解できると思います。
また管理方法を間違えてしまうと後々余計な工数が発生してしまうので、慣れない内はコミット、プッシュ前にブランチの確認などに気を付けて使うと良いと思います。
ローカルリポジトリで色々試してみるのも勉強になると思うのでおすすめです。
少しでもお役に立てば幸いです。