ぼっち大学生のプログラミング日記

得た知識やコードを並べることで自身の成長を試みるためのブログです。

リモートを使ってみようの巻

基本的なGitコマンドを抑えたので、さっそくGitHubでも使ってみましょう。

その前に、簡単にリモートリポジトリの話でもしましょうか。

 

今まではローカルリポジトリの話をしていました。

(つまり、自分のPC内だけでGitリポジトリを扱うということです)

 

個人で開発を進めるならばローカルのみでも問題ないですが、そんなことはありませんね。当然、共同作業が必要になってくると思います。

 

ということで、リモートリポジトリを作ろうという話になります。

練習用に、新しくディレクトリとファイルを作りましょう。

 

完成予想図は以下のような感じです。

            f:id:champon1020:20190414111129j:plain

sample.gitというのはベアリポジトリというもので、ここでいうリモートリポジトリに相当します。sample.cloneがローカルリポジトリです。

ローカルで作業してコミットをし、sample.gitに変更に関しての情報を送信(push)します。また、共同作業者はsample.gitから受信(fetch)することもできます。

(fetchのほかにpullという受信方法がありますが、違いは受信後にmergeするかしないかです。mergeしないほうがfetchになります。詳しいことは調べてみてください。今回はfetchを使います。)

 

なんだか共同作業ができそうですね。

ちなみにベアリポジトリというのは、中身が.gitの中身のみとなっているリポジトリということです。

どういうこと????

すみません、説明します笑。

仮に、.gitの中身がCONTENTSであるとしましょう。

上が普通のリポジトリで下がベアリポジトリです。

f:id:champon1020:20190414122239j:plain

f:id:champon1020:20190414122233j:plain

言いたいことはわかりましたでしょうか?つまり、丸裸にされた.gitってことですね。

 

さて、まずはベアリポジトリを作るための型作りをしましょう。

ツリー構造は以下のようにします。

f:id:champon1020:20190414123618j:plain

sample.shの中身は何でもいいです。今回は例として"sample"という文字列を入力しました。

また、sampleディレクトリ内でgit initコマンドをしてgitリポジトリを作成します。git initした後、コミットするのを忘れないでください。

 

このsampleディレクトリからベアリポジトリを作ります。簡単です。

まず、trainingディレクトリに戻ります。そこで次のコマンドを入力します。

    git clone --bare sample sample.git

すると次のような構造になると思います。

 

f:id:champon1020:20190414123649j:plain

これで複製元のリポジトリ、つまりこれからリモートリポジトリになるものが完成しました。

さて、新しくディレクトリを作ってみましょう。

training内にsample.cloneというディレクトリを作り、そのディレクトリでgit initを実行しましょう。

すると、下のような構造になります。

f:id:champon1020:20190414123734j:plain

さて、用意するものはそろいました。では、実際にsample.cloneのリモートをsample.gitに設定してみましょう。

 

まず、sample.cloneディレクトリ内に入ります。

そして、次のコマンドを入力します

   git remote add origin ../sample.git

これは、「sample.gitというリポジトリをoriginという名前でリモートに追加するよ」ということです。

これによって、sample.cloneのリモートリポジトリはsample.gitということになりました。つまり、sample.gitにpushもできるしsample.gitからfetchもできるということです。

これを、共同作業するチーム全員で行うことにより、sample.gitリポジトリを親リポジトリとして、みんなでpushしたりfetchしたりして作業を進めていくことができます。

 イメージはこんな感じです。

f:id:champon1020:20190414124715j:plain

 

 

今回はリモートの簡単な構造と作り方を説明しました。

詳細のコードに関してはQittaなどで掲載しようかと思っています。

(Qittaのアカウントはこの前作ったばかりですが、学校とインターンが忙しくてブログだけで精いっぱいなので、まあいずれ出します笑)