正真正銘のGitHub初心者。
コミットとかプッシュとかプルとかわけがわからないので一旦まとめてみる。
リポジトリ
あるディレクトリのバージョン履歴(変更履歴)を保管しておく容れ物。リポジトリの管理下にファイルやディレクトリを置くことで、そのファイルやディレクトリの変更履歴を記録することができる。
ローカルリポジトリ
自分のPC上(ローカル環境)に置くリポジトリのこと。自分のPC上にあるファイルやディレクトリのバージョン管理をしたい場合に用いる。
リモートリポジトリ
外部のサーバなどのネットワーク上に置くリポジトリのこと。ネットワーク上に置くことで複数人で管理下のファイルやディレクトリを共有することができる。
リモートリポジトリには常に最新のソースコードを置く
リモートリポジトリには常に最新のソースコードを置いておく。それぞれの開発者は自身のPC上のローカルリポジトリにリモートリポジトリのソースコードをコピーする。
そしてローカルで何か変更を加えた時に、その変更をネットワーク上のリモートリポジトリに同期して反映させる。
コミット
リポジトリに変更を記録する操作をコミットと言う。ディレクトリやファイルの状態を記録するための操作。
コミットをすることで現在の状態が日時や変更を加えた人の情報と一緒に保存され、いつでもその状態に戻れるようになる。
インデックス
コミットするファイルが一時的に登録される場所で、コミットするためにチェックを入れたもの。GitHub Desktopだとこんな画面。
選択してコミットすると、選択したファイル群の変更が記録される。
クローン
リモートリポジトリを複製してローカルリポジトリを作成すること。クローンを実行すると、リモートリポジトリの内容をまるまるダウンロードしてきて、別のマシンにローカルリポジトリとして作成できる。
プッシュ
ローカルリポジトリで加えられた変更をリモートリポジトリに同期させる。ローカルリポジトリで変更を記録(コミット)したあとは、プッシュをしないとリモートリポジトリに変更が反映されないので注意。
つまり順序としては(add-posting-article
というブランチで作業しているとして)
-
add-posting-article
にローカルリポジトリで変更を加えたものをインデックスにあげて、チェックを入れたものに対してコミットする。これで、ローカルリポジトリにファイルの変更履歴が記録される。 -
プッシュして、ローカルリポジトリでの
add-posting-article
の変更内容をリモートリポジトリのadd-posting-article
に反映させる。
プル
リモートリポジトリを取得してローカルリポジトリを更新する操作。他の開発者による変更がリモートリポジトリに反映されたあとや、マージをした後には必ずプルをする必要がある。(プルはプッシュの反対)
マージ
ブランチとブランチを統合すること。マージするには結合される側のブランチをする側のブランチの2つが必要。原則、結合される側のブランチはmasterブランチと言う名前。masterブランチは常に公開できるような状態にしておき、新しく作ったブランチをmasterブランチにマージしていく。
プルリクエスト
作成したブランチをmasterブランチにマージする時の確認作業。プルリクエストを使うと、Github上でブランチ間にどれだけの差分があるかを確認できる。差分を元に他の開発者から確認やレビューをもらうことができる。(プルリクエストはローカル→リモートだが、プルはリモート→ローカル。よって分けて考えた方が混乱しなくて良い)