はじめに
Gitについて学んだはずなのに、いざ共同開発を始めようとしたときに自分が全然Gitを理解していないことに気が付いたので、備忘録として残すことにしました。
以下はGitHubに対する私個人の解釈が強く含まれていますので、何か誤解がありましたら遠慮なくご指摘ください。
開発環境
- Windows 10 Home
GitHubの目的
簡単に言うと、チームでディレクトリを管理することである。
ある時点でのディレクトリの状態のことをバージョンと呼び、それを共同で管理するプラットフォームがGitHub。そして、Gitはバージョンを管理するツールである。
ディレクトリのうち、Gitが接続されたものをリポジトリと呼ぶことにする。また、GitHub上に存在して協同でリポジトリをリモートリポジトリ、自分のpc上のリポジトリをローカルリポジトリと呼ぶことにする。
つまり、GitHubを用いたチーム開発とは、各個人がローカルリポジトリで作業をし、そしてそれぞれがその作業の結果をリモートリポジトリに反映させていくことである。
具体的な作業
1. 全体の作業を自分に反映
cloneとは、リモートリポジトリを自分のpcにコピーすること、すなわちローカルリポジトリを作ることである。繰り返しはなるが、リポジトリとは、Gitが接続されたディレクトリのことである。よって作業もこれをただのディレクトリとみなして進めればいい。
git clone <<リモートリポジトリのURL>>
また、pullとは、既にリモートリポジトリをclone済みのときに、リモートリポジトリの内容を今のローカルリポジトリの内容(あるブランチについて)更新させることである。
git pull origin <<ブランチ名>>
ここでいうoriginはリモートディレクトリを指している。
2. branchを切って作業
個人的にはこれはパラレルワールドを作っていくイメージである。
branchを切ることで異なる時間軸が用意できる。ローカルでの作業では、自分が進めたい時間軸を新たに作成してそこで作業をし、完成したらチームのメンバーに確認をしてもらって、メインの時間軸に自分の作業を反映させることができる。
※注意:branchを切るためにはcdコマンドでそのディレクトリに移動をしておく必要がある。
- 新たなbranchを切ってそこに移動
git checkout -b ブランチ名
branchの種類
- master branch
デフォルトのメインのbranch。これを完成形に持っていくのが目標。
- develop branch
サブのbranch。ここまで共同で管理。確実に変更することがなさそうならmasterにpushする。ローカルでの作業のためにはさらにここからbranchを切っていく。
3. 自分の作業を全体に反映
ローカル(ワーキングツリーとも呼ばれる)で作業を進めたら、最終的にはそれは全体に共有させたい。すなわち、リモートリポジトリに作業を反映させたい。そのためには、
- 自分の作業をローカルリポジトリに反映させること
- ローカルリポジトリの内容をリモートリポジトリに反映させること
が必要である。
1. どのファイルをローカルリポジトリに反映させるかを決める(add)
どの作業をローカルリポジトリに反映させるかは選べるのである。選ばれたファイルたちがいる場所はステージやインデックスと呼ばれる。
git add <<ファイル名>>
現在のディレクトリ以下にある、作業をしたすべてのファイルをステージに上げたければ以下のコマンドも使える。
git add .
2. ローカルリポジトリを更新(commit)
インデックスの内容をローカルリポジトリに反映させる。
git commit -m "コミットメッセージ"
3. リモートリポジトリに反映(push)
ローカルリポジトリの修正内容をリモートリポジトリに反映させる。
git push origin <<branch名>>
考察・終わりに
新しい言葉がたくさん出てきてややこしいですが、実際にgithubを使いながら慣れていければと思っています。