[st-kaiwa3 r]Gitにはいろんな用語が出てくるけど、pushやpullって何をしている状態なの?cloneも合わせて教えてほしい。[/st-kaiwa3]
Gitはコードのバックアップを取ってくれるシステムです。
そのバックアップを取る作業や、PCからサーバーにサイトをアップロードする時などにpushやpull、そしてcloneというコマンドを使います。
ここでは、push, pull とはなんなのか、cloneとはどう違うのか、どう使い分けるのか、それをGIT初心者のあなたでもスッキリ分かるように図解で解説します。
これを読めば、バッチリGITでサーバーとのやり取りもできるはずです!
[st-kaiwa1 r]そもそもGITやGITHUBはなんのために使うのかよく分かってないって場合は、こちらを先に読んでおくとこれから話す事が分かるよ!
GITとGITHUBとは?全く分からない初心者向けに図入りでやさしく解説![/st-kaiwa1]
GITのpush, pull とは?
GITのコマンドであるpush, pullを一言で表すなら、
Pushは、「ローカルリポジトリからリモートリポジトリにコピーを渡す行為」、もっと分かりやすく言うと、「PCからGITHUBにファイルをコピーする行為」です。
Pullは、「リモートリポジトリからローカルリポジトリにコピーを引っ張ってくる行為」、もっと分かりやすく言うと「GITHUBからPCにコピーを持ってくる行為」です。
Pushの図
PC(ローカル)から、git push origin master という命令を出すと、GitがPC上にあるデータ(コード)をGITHUB(リモート)のorigin/masterブランチにコピーしてくれます。
[st-kaiwa1 r]PC(ローカルリポジトリ)からリモートに向かってデータを押し出すからPushなんだ。[/st-kaiwa1]
Pullの図
今度は、PC(ローカル)が git pull origin master という命令を出すと、GitがGITHUB(リモート)のorigin/masterブランチにあるデータを引っ張り出して、PCにコピーしてくれます。
[st-kaiwa1 r]PC(ローカルリポジトリ)が、データをリモートから引っ張ってきてと命令を出してるからPullって事。厳密に言うと、旧データに新データを持ってきて上書きする行為。空っぽのフォルダに新しいデータを持ってくる場合はcloneを使うんだ(後述)[/st-kaiwa1]
GITを操作してる側(PC)から見て、Push(データを押し出す)、Pull(データを引っ張ってくる)と言ってるわけです。
GITのPush、コミットとの違いは?
そもそも、このPushというコマンドを使う前に、必ずcommitという操作をしておく必要があります。
この図のように、データ(ファイル)をGITHUBに保存するためには、まずターミナル(コマンドプロンプト)かSourcetreeを立ち上げて、コミットという作業をする必要があります。
add(stage)とcommitというコマンドを実行すると、まずPC上のブランチにファイル(データ)がバックアップされます。
さらにこれをGITHUBにもコピー保存しておきたい場合に、今度は、git push origin master というコマンドを使う事で、GitHubにも同じデータが保存されるわけです。
Gitを見える化できるツール SourceTree の場合は、
コミットが完了した後、Pushというボタンを押します。
次の画面でも、masterからmasterの欄にチェックを入れて(最初から入ってる)Pushを押せば完了です。
SourceTreeのインストール方法2020最新版。GITHUBとつなぐとこまで詳細解説。
[st-kaiwa1 r]そもそもcommitまでの操作が分かってない場合は、こちらを読んでね!
GitのCommitとは?AddやPushとの違いは?初心者向けに図解でやさしく解説!
↓この記事では、commit, push全行程を解説してるよ
GITでレンタルサーバーにアップロード。やり方とコマンドを完全解説!
Pullについては次の項で詳しく触れるよ。[/st-kaiwa1]
サーバーの場合のPushとPullは?
実際にGITを使う理由として、PC上にあるデータをサーバーにアップロードできるからというのもありますよね。
例えば、あなたがサイトを運営してるとします。
PCでサイトのコードを書き換えました。
このコードをサーバーにアップして、サイトの変更を適用したいとします。
FTPを使う手もありますが、GITを使ってアップロードしてみましょう。
下のイメージ図のように、まず、PCからGITHUBにデータをpushします。
そして、今度は、サーバーにターミナルでログインして、サーバー側からpullの命令を出す事で、GITHUBにあるデータをサーバーに引っ張ってくるわけです。
こうする事で、PC上の変更をサーバーにもまるっと適用できます。
[st-kaiwa3 r]つまり、PCでは git push origin master、その後に、サーバー上でターミナルから git pull origin master すればいいって事だね。[/st-kaiwa3]
[st-kaiwa1 r]正解!ただ、これは、サーバー上のサイトと、PC上で仮作成してるサイトを全く同じ内容にするための同期に使うんだ。サーバーにまだサイトが無い場合は、Cloneを使うよ。[/st-kaiwa1]
Gitのorigin masterとmasterの違い、意味を初心者向けに図解でやさしく解説!
Cloneとは?Push、Pullとどう違う?
push, pull 以外にもcloneというコマンドがGitにはあります。
cloneは、まっさらな場所にデータをコピーする事を言います。
例えば、あなたがPC上でサイトを作成してるとします。
まだサーバーにはこのサイトはアップロードしてません。そんな時は、GITのcloneコマンドを使って、PC上のサイトをサーバーにまるっとコピーします。
[st-kaiwa1 r]FTPでやったら1日かかる作業だけど、GITなら1分でコピーが完了するよ![/st-kaiwa1]
さっきの手順とほとんど一緒です。まずPCから git push origin master コマンドを使って、GitHubにすべてのサイトデータをコピーします。
次にサーバーにターミナルでログインし、git clone https://github.com/~.git というコマンドを使う事で、丸ごとGithubからサイトを新たにコピーできます。
githubアドレス部分(上の赤文字部分)ですが、
自分のGithubにログインし、リポジトリを開き、Codeというボタンを押したところで、取得できます。このアドレスを使って、git clone コマンドを打ちます。
コマンドを打つとユーザー名とパスワードを聞かれるので、Githubのユーザー名とパスワードを入力します。これで、クローンが完了。サーバーにPCで作ったサイトと全く同じデータがアップロードされました。
[st-kaiwa3 r]つまり、初めてサーバーにサイトをアップする時は、cloneを使う。その後、サイト内の変更をアップする時はpullを使う。これで合ってる?[/st-kaiwa3]
[st-kaiwa1 r]その通り!空っぽのフォルダにサイトを丸ごとGITHUBからコピーするならclone。逆にサイトの旧コードを新コードに上書きするならpullなんだ。[/st-kaiwa1]
[st-kaiwa3 r]ちなみに、サーバーにアップロードするんなら、FTPでもできるよね?なぜ多くの人はFTPではなく、わざわざGITを使ってるの?[/st-kaiwa3]
[st-kaiwa1 r]もしファイル1つなら、FTPの方が早いよ。でも大量にファイルがあったら、FTPだと遅すぎて日が暮れちゃうよね。GITだとサイト丸ごとコピーが1分で完了するよ。あとGITを介する事でバックアップもされる。FTPでアップロードした後、ファイルをイジったら元に戻せない。でもGITの場合、アップロード時点のバックアップが残ってるから、いつでも元通りに戻せるんだ。[/st-kaiwa1]
[st-kaiwa3 r]なるほど、どう考えてもGITをメインに使うべきだね。[/st-kaiwa3]
まとめ
- Pushはローカルリポジトリからリモートリポジトリにデータを送るために使う。
- Pullはリモートリポジトリのデータをローカルリポジトリに持ってくるために使う。
- cloneは空のフォルダに全部丸ごとコピーするために使う。pullは旧データに新データを上書きするために使う。
というわけでGitの Push、Pull、Clone それぞれの意味と使い方が理解できたでしょうか。
今回話したPushやcommitを含めた全行程の解説はこちら
→GITでレンタルサーバーにアップロード。やり方とコマンドを完全解説!