Zenn
Open6

[TIL] 11. Git

wakakawakaka

各リポジトリ/ブランチ間の関係

wakakawakaka
  • git fetch はリモートブランチ(main)からリモート追跡ブランチ(origin/main)に反映するコマンド。
  • originとはリモートリポジトリのデフォルト名のこと。初期化時に設定している。
  • git branch -a ではローカルブランチとリモート追跡ブランチの一覧情報(つまりローカルリポジトリのブランチ一覧情報)を表示する。

https://git-scm.com/docs/git-branch#Documentation/git-branch.txt--a

wakakawakaka

Git/GitHubの内部動作

Gitでのバージョン管理情報はGitオブジェクトとリファレンスから成り立っており、これらは.gitディレクトリに格納されている。Gitオブジェクトの集合で構成された有向非巡回グラフとポストイットに相当するリファレンスでバージョン管理を行っていると考えることができる。

各Gitオブジェクトは以下の情報を可逆圧縮し、ハッシュ化したものを指す。以下の3種が存在する。

  • blobオブジェクト:個々のファイルデータ情報
  • treeオブジェクト:ディレクトリ情報(配下のファイル名、参照先ディレクトリ情報)
  • commitオブジェクト:トップレベルtreeオブジェクトや親コミット情報

リファレンスはcommitオブジェクトを指し示すポインタ。以下の2種が存在する。

  • branchレファレンス:commitを指す単純なポインタであり、ブランチを定義
  • HEADレファレンス:現在Checkoutしているcommitのポインタ(=現在の位置を指し示す

ブランチを切り替えるという操作(git checkout)をすると、HEADレファレンスが別のbranchレファレンスを参照する。.gitディレクトリに格納されている新しい参照先のGitオブジェクト情報からフォルダ構成を再構築することでブランチの切り替えを実現する

https://qiita.com/marchin_1989/items/2ec01553e907f3a9e6bb

wakakawakaka

Pushしてもリモートリポジトリに反映されない?

ローカルリポジトリをPushしても、一部の内部ディレクトリだけがリモートリポジトリにアップロードされない場合には、その内部ディレクトリが既にgit管理下にいる可能性がある。つまり、内部ディレクトリにも.gitディレクトリが存在する可能性がある。この場合にはローカルリポジトリと内部ディレクトリで同期先となるリモートリポジトリ(origin)が異なる。

https://qiita.com/easternchicken/items/e636e92cee39a55f0d5b

作成者以外のコメントは許可されていません