P258 git init -b main fluff 開発(ノンベア)リポジトリの作成
git init --bare -b main fluff-bare ベアリポジトリの作成(権威ある参照箇所)
--bareオプションを指定してgit cloneを実行すると、ベアリポジトリが作られる
P261 リモートの作成 git remote .git/configにリモートがある git configで操作
P263 リポジトリのブランチの分類: リモート追跡ブランチ(リモートリポジトリの追跡が目的)、ローカル追跡ブランチ(開発ブランチとリモート追跡ブランチの変更の両方を集める)、トピックブランチ(開発ブランチ)、リモートブランチ(リモートリポジトリにある)
git branch -a
main ローカル追跡ブランチ
mylocal-branch トピックランチ(開発ブランチ)
remotes/origin/main リモート追跡ブランチ
main ローカル追跡ブランチ
mylocal-branch トピックランチ(開発ブランチ)
remotes/origin/main リモート追跡ブランチ
P264 リモートは URLとrefspec(refの対応づけを示す)の2つからなる
refspecの例: +refs/heads/*:refs/remotes/remote/* (fetchで利用)
P274 git push origin main
P277 git branch -a
*main ローカル追跡ブランチ
remotes/origin/HEAD -> orign/main リモートがアクティブなブランチだと考えているブランチをシンボル名で示す
remotes/origin/main リモート追跡ブランチ
P280 git pull は、git fetchのあと、git merge(or rebase)
P284 図で見るリモートリポジトリ開発サイクル
オリジナルリポジトリ AーB ←main
↓origin/main ①
クローンリポジトリ AーB ←main ③ ④
①オリジナルリポジトリのmainブランチはクローンのorigin/mainという新しいリモート追跡ブランチに導入される
②新しいクローンレポジトリのなかで、origin/mainブランチはmain(オリジナルの?)のHEADコミットを参照するように初期化される。ここではBを参照。
③クローン内にmain(ローカル追跡ブランチ)が作られる。
④mainブランチは、オリジナルレポジトリのアクティブブランチのHEADであるorigin/HEADを参照するように初期化される。(Bを参照)
クローン後、カレントブランチとしてmainブランチを選び、チェックアウト
クローンで、X,Yをコミットすると
オリジナルリポジトリ AーB ←main
↓origin/main
クローンリポジトリ AーBーXーY ←main
オリジナルで、C,Dをコミットすると
オリジナルリポジトリ AーBーCーD ←main
↓origin/main
クローンリポジトリ AーBーXーY ←main
この状態を 履歴が分岐 あるいは フォーク したという
自分の履歴をプッシュしようとするとき、 rejectされる
(git push -f で強制的に上書きもできるが)
プッシュの前に 自分のリポジトリでマージが必要
git fetchで、オリジナルを取り込む
CーD ←origin/main
|
クローンリポジトリ AーBーXーY ←main
あとは mainブランチに origin/mainブランチをマージすると両者を統合できる
git merge orign/main
コンフリクトが起きたら git reset --hard ORIG_HEADでYにもどることも可
マージ出来たら git push
C ー D
| |
オリジナルリポジトリ AーBーXーYーM ←main
C ー D
| |
クローンリポジトリ AーBーXーYーM ←main
↑origin/main
0 件のコメント:
コメントを投稿