よしかわーるど

プログラミングで世界を変える

2018-12-09

Gitを使ってみる その2

どうも、よしかわです。

Git、GitHub の使い方についてまとめていきます。

前回の記事

Gitを使ってみる その1

対象読者

  • Git、GitHub の使い方を学びたい人
  • Source Treeを使っている人
  • Terminal を使っている人

目次

このブログでは以下のことを行います。

やっちゃいけないこと

以下のことを行うと、開発スピードを落とす原因につながります。絶対にしないようにしましょう。

マスターに直接コミットしない

マスターはプルリクエストを送って承認されたコードのみが反映されるようにします。マスターにプッシュは絶対にやめましょう。

プルリクエストが承認されていないブランチを他のブランチにマージしてはいけない

プルリクエストが承認されていないということは、そのブランチのコードには不具合があるかもしれません。もし不具合があった場合、マージした他のブランチにも不具合が転移します。

リポジトリ運用ルールに従わないで作業してしまう

Git-Flow を用いるときもあるが、独自のリポジトリ運用ルールがあるのであれば、そちらを遵守する。

以下の点は確認しておくべき

  • コミットコメントの規則(日本語 OK か/英語のみ)
  • マージルール(どういう風にマージするか、勝手にマージしていいか/プルリクエストするか)
  • 自動テストなど、連携しているものの把握

git push -f でリモートブランチの過去を改変してしまい、他のメンバが push も pull もできなくなる

一番聞く事例です。 他のメンバが checkout している可能性のあるリモートブランチに対して、push -f をしてはいけない。

push -f をしても良いのは、自分しか利用していないブランチくらいです。絶対にしないようにしましょう。

Gitとは

git(ギット)は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。
(出典:Wikipedia)

つまり

  • 分散型バージョン管理システムの一つ
  • ファイルの状態を更新履歴として保存できる
  • 過去の状態に戻したり、編集箇所の差分を表示したりできる -> バックアップになる
  • 複数人で 作業を共有 できる
  • 近年の バージョン管理システムの主流

GitHubとは

GitHub(ギットハブ)はソフトウェア開発プロジェクトのための共有ウェブサービスであり、Gitバージョン管理システムを使用する。 Ruby on RailsおよびErlangで記述されており、GitHub社によって保守されている。…(中略)…2009年のユーザー調査によると、GitHubは最もポピュラーなGitホスティングサイトとなった。
(出典:Wikipedia)

つまり

  • ソフトウェア開発プロジェクトのための共有ウェブサービス
  • Git + SNS
  • リポジトリクローン し、ファイルを追加(変更)し、コミット し、プッシュ する。
  • プルリクエスト を送ると他の人に レビュー され、master ブランチマージ し、最終的に本番環境へと デプロイ される

誰がいつ、どのファイルの何を変更したかを管理

「このファイルいつ変更したっけ?」
「ファイル上書きしちゃった!前のファイル残ってないかな…」
「俺のファイル勝手に書き換えただろ!」
など、色々あると思います。 こんなことを無くすために、Gitが存在するのです。 Gitは「 バージョン管理システム 」です。 バージョン管理することで、複数人で同じファイルをいじることが出来ます。
一度編集したファイルを過去の状態に戻したり、編集箇所の差分を表示することができます。
また、誰がいつ変更したかなど、しっかりと管理してくれるので、チーム開発には必要不可欠となっています。

リポジトリ

Gitがバージョン管理下におく場所を「 リポジトリ 」と呼びます。 リポジトリには、「ローカルリポジトリ」と「リモートリポジトリ」があります。

リポジトリ種類 概要
ローカルリポジトリ ローカル環境(自分のマシン)に配置し、自分の作業履歴をバージョン管理するリポジトリです。
リモートリポジトリ 専用のサーバに配置し、複数人で共有するリポジトリです。

自分だけの開発なら、ローカルリポジトリでバージョン管理を行い、自分のローカルリポジトリで作業した内容を公開したい時は、リモートリポジトリにアップロードして公開します。
また、リモートリポジトリを通してほかの人の作業内容を取得することもできます。

次回の記事

Gitを使ってみる その3