【Git初心者入門】git cloneでベアリポジトリの概念を知ろう。

スポンサーリンク

はじめに

クマくん
クマくん

あ、サメさん。

さめさん
さめさん

どうしたんだい?。

クマくん
クマくん

サメさんが書いたコードを参考にしたくて。

サメさんのGithubのリポジトリのURL教えて欲しいんだ。

さめさん
さめさん

クローン(複製)したいんだね?

じゃあ、今度鮭の丸焼きプレゼントしてね!

https://…………………..だよ。

クマくん
クマくん

もちろんだよ!

ありがとう!

・・・カチャカチャ

git cloneしてっと

クマくん
クマくん

あれ?サメさん。ブランチ切っていないの?

珍しいね?

さめさん
さめさん

え?たくさんリポジトリ作って管理しているけど。。

クマくん
クマくん

git branchで中に入っているbranch確認したんだけど、masterブランチしか入っていないよ?

さめさん
さめさん

あー、なるほどね。

それじゃあ、git branch –allで–allスイッチつけて試してごらんよ。

クマくん
クマくん

おおお!

いっぱい出てきた。でもこれなんだ?branch名がちょっとおかしいぞ・・・。

さめさん
さめさん

クマくん。

多分、クマくんはgit を操作する上で、ちょっとしたことだけど重要なことを知らないだけだと思うよ。

ベアリポジトリって知っているかい?

クマくん
クマくん

ベアリポジトリ

僕の親類かな?

さめさん
さめさん

それはベア(熊)違い。

さめさん
さめさん

OK。

まずはgit cloneをどんどん使っていくことになるだろうから、

ベアリポジトリの概念を知って操作に慣れておこう!

ベアリポジトリとは?

ベアリポジトリの特徴と例
  • ベアリポジトリは作業ディレクトリを持たないリポジトリである。
  • 外部に公開し、作業を中継するリポジトリとして使う。
  • GithubのようなサーバーをベースとするGitの基本システム。
ベアリポジトリの理解を深めよう
クマくん
クマくん

えーと、、、

作業用ディレクトリを持たないってどういうこと?

さめさん
さめさん

簡単に言うと、ただ複製を作るためのオリジナルでいるってことかな。

Githubを僕たちも使っていると思うんだけど、リモートリポジトリと普段呼んでいるリポジトリはベアリポジトリだからね。

クマくん
クマくん

えええ!

そうなんだ・・・

言われてみればリモートリポジトリって複製作るためっていうか、全てまとめてるもんね。

さめさん
さめさん

そうなんだ。

リモートリポジトリで僕たち編集とか基本しないでしょ?

コンフリクトが起きた時は例外だけど。

だから基本的に色々コードを書き溜めておく作業台としてではなく、一旦清書として提出する先みたいなイメージだね。

よくある質問

チーム開発をしていて、git cloneしてきたのにブランチが1つしか見つからない。

クマくん
クマくん

さっき、なんでベアリポジトリのこと分かっていないって分かったの?

さめさん
さめさん

さっきmasterブランチしかないって言ってたからね。

ベアリポジトリからgit cloneで複製をしてきたら、ベアリポジトリでアクティブだった。つまりHEADが指していたブランチだけが表示されるんだよ。

クマくん
クマくん

他のブランチ消えちゃうの?

さめさん
さめさん

安心して。

さっきも出したでしょ!

git branch –allで–allスイッチをつければ見えてないけど実はあるブランチを見ることができるんだよ。

さめさん
さめさん

git checkout -b そのブランチ名でしっかりとコミットログも引き継げるんだ。

試しに作業で作ってみようか!

練習

ローカルでベアリポジトリ用のディレクトリを作成する。

さめさん
さめさん

ここでは

git clone –bareというスイッチを使ってクローンするよ。

git clone –bare 参照したいディレクトリ 置きたい場所

という文法でコマンドを使うよ。

$ cd 
# ホームディレクトリに移動

$ mkdir test
# テストディレクトリを作成

$ touch first
# firstファイルを作成

$ git init
# gitリポジトリを生成

$ git add .
# ステージングエリアに追加

$ git commit -m "first file create"
# コミットする

$ git checkout -b "second"
# secondブランチを作成し移動

$ touch second
# secondファイルを作成

$ git add .
# ステージングエリアに追加

$ git commit -m "second file create"
# コミットする

$ cd 
# ホームディレクトリに移動

$ git clone --bare test test.git
# testディレクトリからtest.gitというベアリポジトリを作成

$ cd test.git
# ベアリポジトリのtest.gitへ移動

$ git branch
# masterブランチしか見えないことを確認

$ git branch --all
# masterブランチとsecondブランチが見えることを確認
* master 
remote/origin/second
さめさん
さめさん

remote/origin/secondっていうのがベアリポジトリにあるブランチだね。

最初は見えないけど、ちゃんと参照できるんだ!

ベアリポジトリにあるブランチを参照しているからコミットログも引き継いでそこからコミットをつなげていくんだよ。

$ git checkout "second"
# secondブランチへ移動

$ git log --oneline
second file create
first file create
# コミットログを引き継いでいることを確認。

終わりに

クマくん
クマくん

気にせず使ってたけど、これでスッキリしたよ!

さめさん
さめさん

gitは洗練されたシステムだから、結構へぇぇってなるよね。

意外と、あれ?これなんだ?って思う挙動があったら積極的に聞いてね!

さめさん
さめさん

Git関連はやっぱり本を呼んだようがいいと思う。

おすすめ書籍だよ。

おすすめ記事

【コーチングスキルを徹底解説③】フィードバックについて詳しく知ろう!
プログラミングメンターが勧める未経験からエンジニアになるための準備
未経験者から最強のRailsエンジニアになるためのロードマップ
Git
スポンサーリンク
クマくんをフォローする
目指せ、スーパーエンジニア
タイトルとURLをコピーしました