GitとGitHub

Git と GitHub はチームでプログラミングする際には必須のツールなので知っておいてください。

参考になりそうなサイトを紹介しておきます。「サルGit」で有名な以前は定番のサイトでした。BacklogというGitHubの競合会社に買収されてからBacklogを使う前提の説明になり、GitHubユーザーには少しわかりにくくなってしまいました。それでも一読の価値はあります。Git操作にコマンドを使うか、SourcetreeまたはTortoiseGitを使うか、説明の内容を切り替えることができます。

サル先生のGit入門〜バージョン管理を使いこなそう〜【プロジェクト管理ツールBacklog】
ようこそ、サル先生のGit入門へ。Gitをつかってバージョン管理ができるようになるために一緒に勉強していきましょう!

辞書的に使うならこちらの方が便利です。

とほほのGit入門 - とほほのWWW入門

Git のインストール

Git はソースコードのバージョンを管理するツールです。Git コマンドがインストールされていることを確認してください。Windows は PowerShell、Mac はターミナルでバージョンが表示されれば既にインストールされています。

Windows の PowerShell で バージョン表示されない場合、Git Bash というターミナルソフトがインストールされてないか探してください。Git Bash があれば既に Git はインストールされているはずなので PATH を設定すれば PowerShell でも使えるようになります。やはり無い場合はインストールしてください。

Windowsの場合は 公式ページ からダウンロードしてインストールしてください。Mac の場合は Homebrewをインストール すれば一緒にインストールされます。

 

  • GUIツール

Git の機能を GUI で操作できるアプリもあります。SourceTree などのアプリを使えばコマンドを覚えなくて操作できます。便利ではあるのですが、Gitに関する説明が理解できるように、基本的な操作はコマンドでもできるようにしておいてください。

Gitコマンドでローカル・リポジトリを使う

ローカル環境(自分のパソコン)内のソースコードの置き場所のことを、Gitではローカル・リポジトリと呼びます。Gitコマンドでローカル・リポジトリにソースコードを登録するまでの基本的な流れを説明します。

  • git config

Git の初期設定を行います。自分のユーザー名とメールアドレスを登録してください。ローカル・リポジトリだけを使う場合はあまり意味がないので適当に設定して構いません。GitHub を使う予定のときは GitHub のアカウントのユーザー名とメールアドレスをここに指定してください。

設定内容に変更が無い限り、このコマンドは一度だけ行えばOKです。

–global オプションを付けなければ、リポジトリ毎の設定になります。複数のプロジェクトが同時進行するような場合には設定を使い分けてください。

git init(後述)コマンドで生成されるレポジトリのブランチ名はデフォルトで “master” ですが、近年 “master” や “slave” という単語は奴隷制度を想起させるという理由で避けられる傾向があります。GitHubもデフォルトのブランチ名を “master” から “main” に変更しました。次のコマンドを実行すると git init コマンドのデフォルトが “main” に変更されて GitHub と同じになります。GitHub を利用するなら混乱を避けるため “main” にしたほうが良いでしょう。ただし、ネット上のGitに関する記事にはまだ “master” で説明している場合が多いので注意してください。

“-l” オプションは現在の設定状態を表示します。

  • git init

ディレクトリをローカル・リポジトリとして設定します。コマンドを実行すると .git という隠しディレクトリができます。これがローカル・リポジトリの実体です。例えば、 “app” ディレクトリ以下にソースコードが置かれているとすると、このように実行してください。

前述のデフォルトのブランチ名を変更していない場合、“master” というブランチ名になります。git init コマンドの時点でブランチ名を指定することも可能です。例えばブランチ名を “main” で初期化したいならこのようにします。
  • git add

Git の管理対象とするファイルを指定し、追加するコマンドです。

  • .gitignoreファイルの作成

ローカル・リポジトリ に Git の管理対象としたくないファイル・ディレクトリが存在する場合は、.gitignore という名前のファイルを作ってファイル名・ディレクトリ名を書いておくと Git の管理対象としては無視されます。例えば Python のキャッシュファイルが置かれる __pycache__ ディレクトリや、コンパイラが出力する中間ファイルなどは履歴管理する必要が無いので .gitignore に書いておくと良いでしょう。ディレクトリごと指定する場合は末尾に “/” を付けてください。.gitignoreファイルは .git ディレクトリが存在する場所(ローカルレポジトリのルート)に置いてください。

.gitignore の例

.gitignoreファイルは git commit コマンドを実行する前に作成しておいてください。そうしないと大量の不要なファイルがGitに登録されてしまいます。

GitHub には .gitignore ファイルのテンプレートを作成する機能があるので、それを利用しても良いでしょう。

  • git commit

Git の管理対象のファイルで変更があったものをローカル・リポジトリに保存します。この操作によって、以後ソースコードの変更履歴が管理可能になります。[-m] オプションで変更理由のコメントを入力します。

  • git status

Git による管理状況を表示します。

GitHubのアカウント登録

GitHub は Git と連携してソースコードを管理してくれるWEBサービスです。よく使われますのでアカウントを登録しましょう。

GitHub Japan
GitHubはソフトウェア開発のプラットフォームです。GitHubには8000万件以上ものプロジェクトがホスティングされており、2700万人以上のユーザーがプロジェクトを探したり、フォークしたり、コントリビュートしたりしています。

GitHubは2021年8月13日からパスワード認証を廃止すると予告しているので、2段階認証を有効にして個人アクセストークンを使用するようにしてください。

  • 2段階認証

事前にAuthy等の2段階認証アプリを自分のスマホにインストールしておくことをお勧めします。手順は 2 要素認証を設定する を参照してください。

  • 個人アクセストークン

2段階認証を有効にした場合は必要になる手順です。手順・解説は下記のサイトを見てください。

個人アクセストークンを使用する

  • 2段階認証を有効にした場合gitコマンドでエラーが出る場合があります。その場合はパスワードの代わりに個人アクセストークンを入力します。例えば…
  • GitHubの無料アカウントでは、容量は1GB未満を推奨(実際には制限はないが1GBを超えると警告メールが来る)、100MBを超えるファイルは扱えない(50MBを超えるファイルをpushしようとすると警告表示)という条件があるので覚えておいてください。

GitHubをリモート・リポジトリとして使う

GitHubをリモート・リポジトリとして使うと、他の人とソースコードを共有したり、同じプログラムを共同開発する環境を作ることができます。

  • GitHub にリポジトリを作る

GitHub にサインインして Repositories のところにある [New] のボタンを押します。リポジトリの名前などを入力して [Create repository] のボタンを押してください。

ソースコードを公開する場合は “Public”、非公開にして限定メンバーで使用する場合は “Private” を選択します。

“ADD a README file” をチェックすると簡単なREADME.mdファイルを作ってくれます。これはあとからでも簡単に作れるので任意でチェックしてください。

.gitignoreファイルをまだ作ってない場合は “Add .gitignore” をチェックして作成しようとしているシステム名(例えば”Unity”など)を選択すると標準的なテンプレートを作成してくれます。ただし、ここで作った .gitignore ファイルはローカル環境にも置くことを忘れないでください。(後述)

ブランチ名はデフォルトで “main” となりますが変更することも可能です。ローカルリポジトリの名前に合わせておいてください。

これで GitHub 上にリポジトリ、すなわちリモート・リポジトリができました。専用のURLができますので、GitHub上で確認しておいてください。

  • git remote

パソコン上のローカル・リポジトリと、リモート・リポジトリを関連付けるコマンドを実行します。

  • 自動生成したファイルがあれば、ローカルレポジトリに取り込む

リポジトリを作る時に自動作成したファイル(README.mdや.gitignoreなど)をローカル環境にも設置します。Githubのリポジトリ画面で [Code] → [Download ZIP] を実行するとGitHub上のファイルを取得できますので、必要なファイルをローカルレポジトリに移動またはコピーしてください。

GitとGitHubの基本的な使い方はローカル・レポジトリの変更履歴をGitHubで管理するという流れですが、この時点ではローカルレポジトリに存在しないファイル(自動生成したファイル)がGitHubに存在している、おかしな状態なのでこの操作が必要になります。git pushコマンド(次に説明)を初めて実行する前に行ってください。

  • git push

ローカル・リポジトリからリモート・リポジトリにファイル送信して、両方を同じ状態にします。

このとき、次のようなエラーが発生することがあります。

これは自分が関知しない変更がGitHub側にあったことによるエラーです。.gitignoreファイルを自動作成してローカル・レポジトリに設置した場合などにも同じ状況になってしまいます。次のコマンドを実行するとエラーは消えますので再度 git push コマンドを実行してください。

  • 共同開発メンバーをGitHubに招待する

GitHub上のリモート・リポジトリを “Private” で作成し、共同作業で開発を行う場合は他のメンバーを招待しないとリモート・リポジトリにアクセスできません。リポジトリの画面を開き、歯車アイコンの [Settings]、左側のメニューから [Manage Access] を選ぶと [Invite Collaborator] のメニューから開発プロジェクトのメンバーにアクセスを許可することができます。

大きなファイルの管理

GitHubで扱えるファイルの最大サイズには上限があることは説明しましたが、開発の内容によっては音声ファイルや画像ファイルなど大きなファイルを扱う必要がある場合もあります。そのような場合には Git Large File Storage (Git LFS) を使うとファイル管理が可能になります。

大きなファイルを管理する - GitHub Docs
Git Large File Storage を使うと、大きなファイルを管理することができます。

Git LFS のインストール方法はここに解説があります。Mac・Windows・Linux それぞれのタブを選ぶと手順が表示されます。

履歴管理

ここまでの知識で Git と GitHub の最低限の機能は使えますが、実際のプログラム開発では様々な理由によりソースコードの履歴管理が必要になります。以下のような状況でどのような Git コマンドを使うのか、詳しくは「Google先生」に教えてもらうのが手軽です。

  • 過去の状態に戻したい。

ソースコードに変更を加えているうちに支離滅裂になってしまった、あるいは意図しないバグが入り込んでしまった、というような場合は過去の状態に戻したくなります。git checkout や git reset コマンドをつかうことになります。

  • 別の理由で同時に作業を進めたい。

マスターのソースコードは管理を続けながら、それとは別に新しい機能を作り込んだり広範囲のバグ修正を行ったりする場合、マスターに悪影響を及ぼさないように別環境を作って作業を行います。これをブランチと言います。git branch 等のコマンドを使います。

  • 修正内容をまとめたい。

ブランチで分けたソースコードの作業が一段落したら、マスターのソースコードに反映しなければなりません。git merge 等を使います。

複数の人のチームで開発を行う場合、プルリクエストの機能を使う必要が出てきます。次のページを勉強しておくと良いです。

プルリクエストとは?|サル先生のGit入門【プロジェクト管理ツールBacklog】
ようこそ、サル先生のGit入門へ。Gitをつかってバージョン管理ができるようになるために一緒に勉強していきましょう!

コメント