9cubed
ブログ | Tailwind | Vite | Python | Node.js | Linux | PowerShell | その他 | 将棋ウォーズ | 歌の練習
プログラミング講座

第149回 Gitの仕組みについて その2(想像)

公開日:2018-09-28
更新日:2019-05-11

1. 概要

Gitのコミット、ブランチ、フェッチなどの仕組みについて説明しています。

大変申し訳ございません。
ダラダラと長くなった挙句、
補足と訂正が動画中に山のように入っており、大変見づらくなっております。
まだ他にも間違いがあるかもしれません。
また、何度も念仏のように同じ説明を繰り返しています。。。

2. 動画



3. 補足

1. ハッシュ値について

コミット、ファイル一覧(tree)、ファイル本体(blob) は、
ハッシュ値をファイル名として objects 配下に保存されます。

ファイルを1つだけ追加してコミットをすると、
objects 配下に、以下3つのファイルが作成されます。
・コミット
・ファイル一覧(tree)
・ファイル本体(blob)

ファイル本体の内容が同じであれば、同じハッシュ値が算出されるのと同様に、
ファイル一覧(tree)も内容が同じであれば、同じハッシュ値が算出されます。
このように、Git ではハッシュ値でファイルなどを管理することにより、
同じものを共有化して、ディスク容量の削減を行っています。

また、ファイル名をハッシュ値にしているため、
過去のファイルを改ざんした場合、改ざんしたのがわかるようになっています。

2. リモートリポジトリのブランチについて

フェッチをすると、objects 配下にリモートリポジトリのファイルがコピーされ、
「remotes/origin/ブランチ名」と言う特殊なブランチに、
リモート側の同じブランチの、最新のコミットID が設定されます。

そのため、この特殊なブランチに切り替えると、リモートと同じ内容になります。
切り替わっているのは、あくまでもローカル内で、
直接リモート側に切り替わっている訳ではありません。
変更してもすぐにリモートには反映されません。

3. FETCH_HEAD、「remotes/origin/ブランチ名」の特殊なブランチについて

通常のブランチはコミットをすると、
コミットにより生成された新しいコミットID(ハッシュ値)を自動的に参照してくれますが、
FETCH_HEAD や「remotes/origin/ブランチ名」は、
フェッチをした時点のコミットIDで固定されます。

そのため、FETCH_HEAD などに切り替えて、その後コミットをしても、
FETCH_HEAD が指すコミットIDが変更されないため、ブランチの作成を促されます。
もしブランチを作成しない場合は、参照できないコミットが作成されます。
(コミットIDを覚えておけば利用できます)

4. ブランチと切り替えについて

ブランチは、コミットIDを保持しているだけです。

例えば、フェッチをして FETCH_HEAD に切り替えれば、
リモートと同じ内容を見ることができますが、
フェッチ後にリモート側のコミットIDを直接指定して切り替えれば、
FETCH_HEAD と同様に、リモート側と同じ内容を見ることができます。


YouTube X

新着一覧

  • SCSS のインストールVite
  • Tailwind CSS のプロジェクトの作成Tailwind
  • TypeScriptのプロジェクトの作成Vite
  • Flask のインストールと動作確認Python
  • 簡易Webサーバーの作成Python
  • pipeline で文章の生成Python
  • pipeline で文章の要約Python
  • 音声から文字起こしPython
  • Node.js のインストールNode.js
  • .ps1(PowerShellスクリプト)を実行可能にするPowerShell

アーカイブ

  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲