2025/02/06(木)ゆるGIT学習

今まで仕事ではもっぱらSubversionを使っていた。
WindowsなのでクライアントはTortoiseSVN
新しい仕事でgitを使うことになったのでいろいろ再確認していく。
趣味で使う分には雰囲気で操作しても問題ないんだが、仕事だとさすがに?って思ったので
誤った記載があったら修正しますんでコメントください

基本

originってなんだよ

リモートリポジトリのエイリアス
以下は同じ意味になる

git fetch origin master
git fetch git@github.com:hoge/fuga.git master
HEADってなんだよ

作業中ブランチの最新コミット

コマンド

clone

ざっくりfetch+checkout
リモートの最新を取得し、デフォルトブランチをチェックアウトする。 gitのデフォルトブランチ名はmaster
そういえばgithubは数年前からmainになったね

pull

内部的にはfetch + merge
fetchorigin/master が最新に更新される
mergemaster ブランチに最新が取り込まれる

fetch

リモートの最新を取り込む
ローカルブランチには反映されない
origin/masterは最新になるがmasterはそのまま

merge

2つの異なるブランチの変更を統合する。
この際、マージコミットという特別なコミットが生成される。

A---B---C-----M(マージコミット)
        |    /
        D---E
rebase

ブランチの変更を別のブランチの先頭に付けなおす
いまいち動作を把握しきれていない...

  1. 元の状態
    master: A---B---C---D---E
    .               |
    dev:            D'---E'
    
  2. devブランチ内でgit rebase masterを処理

    master: A---B---C---D---E
    .               |
    dev:            D---E---D'---E'
    
  3. masterブランチ内でgit rebase devを処理
    master: A---B---C---D---E---D'---E'
    
checkout

作業ブランチの切り替え

branch

新しいブランチを作成する。
git branch -aですべてのブランチ、作業中のブランチを表示する。

push

ローカルの変更をリモートへ反映させる