Git メモ | Git
Git メモ
用語整理
| 用語 | 説明 |
|---|---|
origin |
git remote -v に登録されているリモートリポジトリ名(URL のエイリアス) |
origin/feature |
リモートトラッキングブランチ(remote-tracking branch)。最後に git fetch した時点のリモート feature のスナップショット |
upstream |
ローカルブランチが既定で追跡するリモートブランチ |
git pull origin feature
git pull origin feature は次の2段階で実行されます。
git pull origin feature
= git fetch origin feature
+ git merge FETCH_HEAD
git fetch origin feature により
- リモート
originのfeatureを取得する origin/featureを更新するFETCH_HEADに取得したコミットを記録する
その後、
git merge FETCH_HEAD
によって、現在 checkout しているブランチへマージされます。
ポイント
origin featureは常にリモートoriginのfeatureブランチを指す- fetch により
origin/featureが更新される - merge 先は現在 checkout しているブランチ
例えば main を checkout 中なら
origin/feature ──► main
へマージされます。
git pull origin feature:feature
この書き方は特殊な構文です。
内部的には
git fetch origin feature:feature
git merge FETCH_HEAD
が実行されます。
feature:feature の意味
git fetch の refspec
<取得元>:<更新先>
を指定しています。
つまり
- 取得元:リモート
feature - 更新先:ローカル
feature
です。
挙動
現在 feature を checkout 中なら
- ローカル
featureが更新される(fast-forward が必要) - 続いて
git merge FETCH_HEADが実行される - 既に fast-forward されていれば merge は「Already up to date.」となる
現在 feature を checkout していない場合は、
- ローカル
featureは更新される - 現在 checkout 中のブランチへ
FETCH_HEADがマージされる
つまり merge が行われないわけではありません。
git push origin feature
git push origin feature
送信元はローカル feature です。
feature ─────────► origin/feature
ポイント
origin/featureを経由して送信するわけではない- push 成功後、ローカルの
origin/featureも最新状態へ更新される
upstream
upstream は、ローカルブランチが既定で追跡するリモートブランチです。
設定されていると
git pull
git push
だけで対象ブランチが決まります。
確認
git branch -vv
例
* feature abc1234 [origin/feature] コミットメッセージ
設定
git push -u origin feature
または
git switch -c feature --track origin/feature
(従来の git checkout -b feature origin/feature と同等)