gitとは
はじめに
私は会社に入社してから初めて Git というものに出会った。
大学ではプログラミングの授業があったり、卒業研究でコードを書く機会があったが、
「ソースコードを管理する」という意識はなく、Git を使うこともなかった。
そのため、入社して初めて Git に触れたとき、
「これは何のためのツールなのか?」
「どのようなメリットがあるのか?」
といったことを理解しないまま、とりあえず使っていた。
しかし、実際に業務で使っていくうちに、Git の便利さや必要性を実感するようになった。
そこで、これから Git を使い始める人に向けて、Git とは何か、どのように役立つのか を簡単にまとめた記事を書こうと思もう。
Git とは
Git(ギット)は、プログラムの変更履歴を記録し、管理できるツール。
たとえば、ドキュメント作成で「修正前のバージョンに戻したい」と思った時、
Git を使えば、過去の状態に戻したり、変更の履歴を追ったりすることが簡単に可能となる。
Git の特徴
-
履歴管理ができる
変更内容を記録し、過去の状態に戻せる -
複数人で開発できる
チームでの共同作業がスムーズになる -
無料で使える
オープンソースで誰でも利用可能
Git の基本用語
以下に開発でよく使う基本的な用語をまとめた。
-
ブランチ(branch)
メインの開発ラインとは別に新しい変更を試すための分岐。
ブランチを使うことで、他の作業に影響を与えずに新しい機能を開発したり、バグを修正したりすることが可能になる。
これにより、複数の開発者が同時に異なる機能等を実装できたりする。 -
リポジトリ(repository)
ファイルやフォルダの履歴を管理するための場所。
この中にソースとか Git で管理してるものが存在する。リモートリポジトリ:GitHub や GitBucket などのオンライン上にあるリポジトリ
ローカルリポジトリ:自分の PC 内にあるリポジトリ。 -
クローン(clone)
リモートリポジトリを自分の PC にコピーする。 -
コミット(commit)
ローカルリポジトリに変更内容を保存すること。
ファイルを修正した後、コミットすることで、その変更が履歴として記録される。 -
プッシュ(push)
ローカルリポジトリの変更をリモートリポジトリ(GitHub など)に送信する操作。 -
衝突(conflict)
複数の開発者が同じファイルを異なるブランチで編集した場合、変更を統合する際に競合が発生すること。 -
プルリクエスト(pull request)
他の開発者に変更をレビューしてもらい、リポジトリに統合するための仕組み -
マージ(merge)
異なるブランチの変更を統合する操作。 -
フェッチ(fetch)
リモートリポジトリの最新の変更をローカルに取得する操作。
ただし、この時点ではローカルの作業ツリーには影響しない。 -
プル(pull)
フェッチとマージ(変更の統合)を同時に行う操作。
リモートの変更をローカルに取り込むときに使う。
Git の仕組み
Git の基本的な仕組みを理解すると、上記の用語への理解が高まると思うので以下に記載する。
-
リモートリポジトリとローカルリポジトリ
git をクローンすると、リモートリポジトリの内容をローカル PC にコピーして
ローカルリポジトリが作成される。 -
ファイルの変更とコミット
ソースコードを編集したら、その変更を記録するためにコミットで履歴に登録する(ローカルリポジトリに変更が登録される)。 -
リモートリポジトリへのプッシュ
プッシュを使って、ローカルの変更をリモートリポジトリに送信する。
送信されれば他の開発者と共有が可能になる。 -
リモートの変更を取得
他の開発者が変更を加えた場合、フッチやプルを使ってローカルリポジトリを
最新の状態に更新できる。
git-flow
チーム開発でのブランチ管理を体系化したワークフロー。
開発の流れを明確にし、効率よくコードを管理するための手法。
それぞれのブランチには、以下の役割が存在する。
-
main(メインブランチ)
本番環境にデプロイされるコードを管理 -
develop(開発ブランチ)
開発中のコードを統合 -
feature(機能ブランチ)
新しい機能を開発 -
release(リリースブランチ)
本番環境にリリースする準備 -
hotfix(ホットフィックス)
緊急のバグ修正
Git 操作が簡単にできるクライアントツール
たくさんあるが、主に会社でよく使うツールを挙げていく。
-
GitBucket
GitHub ライクな機能を持つオープンソースの Git リポジトリ管理ツール。
プルリクやレビュー等々 GitHub でできるようなことは大体できる。 -
SourceTree(ソースツリー)
Git の操作を簡単に行える GUI(グラフィカルユーザーインターフェース)ツール。
ターミナルでコマンドを入力することなく、視覚的に Git の操作を行うことが可能。 -
GitHub
Git の仕組みをオンラインで使えるサービス。
自分の作成したコードをクラウド上に保存し、どこからでもアクセスできるようになる。
また、GitHub Actions(ギットハブ アクションズ)と呼ばれる、GitHub 上で自動的にコードのテストやデプロイを行うためのツールも存在する。
Discussion