今回は前回までの内容を元にGitの舞台裏をのぞいてみたいと思います。first-forwardなどの理解につながるものです。ポインタと呼ばれる非プログラマやプログラミング初学者の方には戸惑う方も多い内容ですが、Gitの見通しがとても良くなる重要な知識ですので、なるべくわかりやすくお伝えしたいと思います。dirを使ったことがあるエクスプローラでファイル操作ができるgitのクローンやコミットをやったことがある※なお、本資料はWindows向けの資料となっています。オブジェクトとポインタプログラミングでも多く登場する2つの言葉「オブジェクト(Object)」と「ポインタ(Pointer)」が、Gitにも登場します。オブジェクトを指し示すものです。Gitはコミットを行なうたびに、その時のファイルの記録をオブジェクトにします。作られたオブジェクトは、あとから識別できるように重複しない名前(以降、IDと呼称)をつけます。IDをつける方法としてSHA-1と呼ばれる特殊な計算方法を用いたものです。Gitの記録のしくみをみてみよう前提知識はまずはこれくらいで良いでしょう。ここからは、スタート編およびブランチ編で行なった動作を振り返りながら、Gitの内部を見ていきたいと思います。logコマンドを使って、これまでのログを確認してみましょう。次のようになっています。ログは下にいくほど古い記録になります。※赤い囲み部分はIDです。このログを時間を追ってみてみましょう。最初に行なったのは、GitHub上で行ったReadMeの作成です。このコミットによりリポジトリは次のようになります。※上の図を含めた以降の図では、次の表記を用います。黒字:コミット時コメント赤吹き出し:ブランチ(ポインタ)上の注記で示したように、ブランチこそがGitにおけるポインタです。masterとorigin/masterというブランチがあります。originがついているほうはリモートリポジトリ側のブランチを指します。時間を追ってみていきましょう。次はprogram01.txtというプログラムを作成し、機能Aを追加しました。このコミットにより、図は次のようになります。リモートリポジトリにpushしていないため、origin/masterは最初の位置のままです。次はprogram01.txtに機能Bを追加し、さらにprogram02.txtを作成して表示機能Aを作りました。このコミットで次のようになります。この時点でリモートリポジトリへのpushを行ないましたので、図のようになります。origin/masterが進んでいることがわかります。次はブランチを作成しました。onlyAというブランチを作成し、機能A-2を追加してコミットしています。新しいブランチができたので、吹き出しが追加されています。ここで注目すべきはonlyAは枝分かれしているわけではない点です。onlyAが指すコミットは、前回コミットから少し変更が加わっただけにすぎません。したがってgitは、この新しいコミットは前回のコミットからの続きである。いう形で履歴を記録します。onlyブランチはその1本につながった履歴の1番先頭のコミットを指しているだけです。onlyAブランチで機能A-3を追加しコミットしました(下図)。最後にonlyAブランチをmasterブランチにマージしました。マージ後のリポジトリは次の状態です。直前の図とほとんど変化がありません。masterブランチの指す先が変わっただけです。今回はマージといっても、マージ先のmasterブランチに元々別の変更があったわけではありません。したがって、masterブランチが指す先をonlyAブランチが指しているオブジェクトと同じにしてしまえば、マージ完了と同じ意味になるのです。Forwardと表示されます。「先に進めた」という意味合いです。最後にリモートリポジトリへのコミットをすることで、すべてのブランチ(ポインタ)が最新のコミットオブジェクトを指し示します(下図)さらに上の図には、HEADとorigin/HEADいうポインタがついています。logによる結果の画面でも確認できます。)これはローカルおよびリモートリポジトリそれぞれにおいて、現在操作対象となっているブランチを指すものです。おわりに本日はここまでとさせていただきます。最後までご覧くださり、ありがとうございました。Gitにおけるオブジェクトとポインタの概念が理解できると、Gitをより効果的に活用できると思います。これらをマスターしてGitライフを楽しみましょう。合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。ECFエデュケーションキッズも大人も。Tech関連記事GitGitを使ってみよう!【競合編】Gitを複数の作業者で更新したときに発生する競合。その解決方法などを解説しています。GitGitを使ってみよう!【スタート編】Gitを始めてみたい方、初心者向けのスタートガイドを作ってみました。Windowsのインストール方法をご紹介しています。GitGitを使いこなそう!【リベース編】Gitシリーズ、今回はリベース編です。コミット履歴をスッキリ整えましょう!GitGitを使いこなそう!【リバート編】Git講座も第10回!!今回はコミットをなかったことにするコミット!リバート編です。初心者向けにGitHubアカウントの取得方法を公開しています。LLC.メニューホーム合同会社イー・シー・エフECFエデュケーションホーム検索トップサイドバーカテゴリーGitIoTSTEMコンピュータリテラシープログラミングJavaJavaScriptPythonScratchキッズプログラミングプログラミングと教育マイクロビット工作タイトルとURLをコピーしました。