このページではgit pushとgit pullを用いて、リモートサーバへの変更の共有と変更点のローカルへの反映方法についてまとめている。
参考にしていただければ幸いだ。
目次
そもそも、リポジトリの変更を共有するとは?
リポジトリの変更を共有するとは、ローカルのリポジトリの変更をGitサーバ上のリモート・リポジトリに記録し、リモート・リポジトリを介してその変更を共有することだ。
リポジトリの変更を共有する作業の流れは、ローカルから報告された変更をリモートに記録するところから始まる。
記録されたリモートの変更をローカルの別のリポジトリに反映させることもできるし、リモート・リポジトリをそのままクローンしてローカルに別のリポジトリを作成することもできる。
Gitを使った作業の流れは次の通りだ。
- 変更をgit pushでリモート・リポジトリに反映させる。
- リモート・リポジトリをgit cloneでクローンする。
- 変更をgit pushとgit pullで他のリポジトリに反映させる。
では、基本的なGitの使い方と流れを見てみよう。
変更をリモート・リポジトリに反映させる
変更を共有するためにローカルのリポジトリに記録された変更をリモート・リポジトリに反映させる。この時originがリモート・リポジトリの名前で、masterがローカルにあるリポジトリの名前になる。
このために使うコマンドは簡単だ。
git push origin master
コマンドの実行の仕方を確認していこう。
使い方と流れ
ローカルにあるリポジトリのディレクトリに移動する。変更をリモート・リポジトリに反映させるためにgit pushコマンド実行する。
実行結果
リモート・リポジトリがあるディレクトリに移動して、git logコマンドを実行する。リモート・リポジトリにローカルのリポジトリの変更が反映されたことが確認できる。
リモート・リポジトリをクローンする
ローカルにリポジトリを作成するためにリモート・リポジトリをクローンすることもできる。クローンするとリモート・リポジトリのコピーが作成される。
このために使うコマンドの基本は簡単だ。
git clone [リモート・リポジトリ]
ここで、リモート・リポジトリをどのように指定するかだが、「リモート・リポジトリを作成する」のセクションで共有設定を行ったときに出てきた「ネットワーク・パス」を指定する。
コマンドの実行の仕方を確認していこう。
使い方と流れ
リポジトリをクローンするディレクト:/c/gitworkcloneを作成する。そのディレクトに移動して、git cloneコマンドを実行する。
実行結果
リポジトリのディレクトリに移動して、git logコマンドを実行するとリポジトリが作成されていることが確認できる。
さらに、lsコマンドでディレクトリ内のファイルを書くにしてみると、Program01.javaファイルがあるのが確認できる。
変更を他のリポジトリに反映させる
最初に説明したように、変更を共有するためにgit pushを使ってローカルのリポジトリに記録された変更をリモート・リポジトリに反映させることが必要だ。そして、リモート・リポジトリに反映された変更をローカルの別のリポジトリに反映させる。
このために使うコマンドの基本がpullだ。
git pull
コマンドの実行の仕方を確認していこう。
使い方と流れ
前のセクションでクローンして作成したリポジトリのディレクトリにあるProgram01.javaファイルを変更して、その変更が別のリポジトリに反映されるか確かめてみよう。
クローンで作成したディレクトリに移動して、現在のProgram01.javaのコードを見る。
Program01.javaのコードをエディタで「System.out.println("Function-01");」を追加し、コードが修正されたことを確認する。
変更をgit addとgit commitコマンドによりリポジトリに記録する。
次にgit pushコマンドで変更をリモート・リポジトリに反映させる。
他のリポジトリのディレクトリに移動する。リモート・リポジトリの変更をgit pullコマンドでローカルのリポジトリに反映させる。
実行結果
変更の記録を見るためにgit logコマンドを実行すると、別のリポジトリのProgram01.javaの変更が反映されていることが分かる。
さらに、Program01.javaのコードを確認すると確かに「System.out.println("Function-01");」が追加されている。
まとめ
このページではリモートサーバへ変更を共有するgit pushおよび反対にローカルへ反映するgit pullについてまとめてみた。
gitの使い方の基本となるので、ぜひ参考にしていただければと思う。