[st-kaiwa3 r]Gitを使ってると、origin masterとmasterっていう2つが出てくるよね?あれなんなの?どう違うの?[/st-kaiwa3]
結論から言うと、
originがGITHUB側(リモートリポジトリ側)で、
originが付いてない方がPCやサーバー側(ローカルリポジトリ側)
って事なんですが、
そもそもmasterってなんなの?どこにあんの?って部分も含めて、図解でやさしく解説していきます。
これが分かると、GITを大幅に使いこなせるようになるので、しっかり理解しておきましょう!
[st-kaiwa1 r]Gitがなんなのかよく理解してないって場合はこちらの記事を先に読んどくといいですよ。
GITとGITHUBとは?全く分からない初心者向けに図入りでやさしく解説!
Gitのリポジトリとは?サーバーはリモート?ローカル?図解で解説![/st-kaiwa1]
Gitのorigin masterとmasterの違い。
これは、Gitを見える化する初心者にはすんごいありがたいツールであるSourceTreeというソフトの画面なのですが、
origin/master と master の2種類がありますよね。他にもorigin/testとかorigin/HEADなんてのもいます(汗)。
まず、冒頭で言った通り、originって付いてる方がGithub(リモートリポジトリ)の事で、ついてない方、master とか test とかそういう方がPC側(ローカルリポジトリ)って事です。
なので、実際にコマンドでGitを操作をする時は、例えば、
git push origin master
というコマンドを入れますよね。
これは、「git で origin master に push してください。」って意味です。
言い換えると、「origin master にPC上のコードをコピーして!」って事になります。
逆に、
git pull origin master
だったら、
「git で origin master から pull してきてください」という意味になります。
つまり「GitHubのorigin masterのデータをPCにコピーして! 」って事になります。
そもそもGitのmasterとはなんなのか?
Gitにおけるmasterっていうのは、ブランチ(支店)の名前です。
銀行で言えば、master支店っていうのがあるのと同じです。だから、あなた自身でtest支店とか、proto支店とか、yamada支店とか、好きな名前を付けて、新しいブランチを作る事もできます。
masterっていうのは、元々Gitに用意されてる支店(ブランチ)です。
masterだけ使ってても問題ないです。
でも、1つのブランチだけだと困る時は追加のブランチを作ります。
例えば、あなたがサイトを作ってて、そのバックアップを毎回 master に保存してるとしましょう。
ある日、サイトを試験的に大幅にカスタマイズしたくなりました。
でも、カスタマイズ前の状態の安定版サイトと、
カスタマイズをした試験版サイトのデータを分けて保管しときたいですよね。
ここで新しいブランチtest を作って、試験版はtestに保存するわけです。
で、「あ、このカスタマイズやっぱだめだな。カスタマイズ前に全部戻そう」って思ったら、masterに保存されてるデータをクローンすれば、元通りのデータをPCに持ってこれるわけです。
[st-kaiwa1 r]例えば、PCでサイトを作ってるけど、サーバーにアップロード済みのサイトをFTPで直接いじりたい時もあるよね。[/st-kaiwa1]
[st-kaiwa3 r]あるある、で、サーバーの方イジって、PC側もイジって、どっちのどこをイジったかが分からなくなるんだ。で、PCのサイトをアップロードしたら、サーバーでイジったデータが消えちゃったりとかあるね(汗)。[/st-kaiwa3]
[st-kaiwa1 r]そう、だからそんな時はブランチを分ければいいんだ。PCのデータはmasterにpushして、サーバーを直接イジったら、serverっていうブランチ作ってpushしとけばいい。
そうすれば、サーバーのサイトのコピーと、PC上のサイトのコピー、両方GITHUBに残しておけるわけ。[/st-kaiwa1]
[st-kaiwa3 r]なるほど、そうすれば、事故っても復活できるね。[/st-kaiwa3]
master はどこにあって、origin masterはどこにある?
origin master などのoriginは、リモートリポジトリ側、つまりGITHUB内のブランチの事を意味してます。
GITHUBの画面でブランチボタンを押すと、ブランチ一覧が出てきますね。これらがoriginのブランチ達です。
じゃあ、master はどこにあるのか?
これはPC側(ローカルリポジトリ側)にあります。
PC側にも、実は同じようにブランチが作られてます。
まず、git add や git commit などの操作をすると、一旦PC側、ローカルリポジトリ側のmasterブランチに変更したデータが保存されます。
そしてこのデータをpushすると、origin/masterに同じものがコピーされるってわけです。
例えば、上のSourceTreeの画面を見ると、ask と origin/ask が同じ段にありますよね。これは、askとorigin/askに同じデータが入ってるという状態です。PC側とGITHUB側、両方のask支店に同じデータが入ってるよという事になります。
今度はPC側のコードをいじり、それをgit add, git commit というコマンドを使って、askにバックアップを取ってみます。
このように、askだけ上段に上がりました。askには「説明文の付け足し」という変更が施されたファイルが保存されました。
しかし、GITHUB側のorigin/askには、その変更はまだされてない古いファイルが保存されてるというわけです。
これで、Pushを実行する事で、origin/askにもaskと同様の変更がコピーされます。
こんな具合で、origin側とoriginなし側の違いが分かったでしょうか?
[st-kaiwa3 r]うん、一通り、masterとorigin masterの違いが理解できたよ。
でもHEADって奴が未だによく分からないんだけど。[/st-kaiwa3]
[st-kaiwa1 r]HEADだけはまた別物なんだ(汗)。HEADについてはこっちで詳しく解説してるよ!
GitのHEADとは?origin/HEADとの違いは?初心者向けに画像でやさしく解説!
あとGitを見える化できるSourceTreeは無料で使えるよ!
→SourceTreeのインストール方法2020最新版。GITHUBとつなぐとこまで詳細解説。[/st-kaiwa1]