🍑
Git入門コマンドライン演習80の備忘録
はじめに
Git入門コマンドライン演習80の備忘録
チェックアウトコマンド
Gitバージョン2.23.0からswitchコマンドが加わってブランチを切り替えられるようになった
従来のcheckoutコマンドは非常に多くの役割を持っていたためが理由
checkoutコマンドでも切り替えられるのは変わらず
git checkout <ブランチ名>
git switch <ブランチ名>
ステージング前の操作の取り消し
チェックアウトと同じ理由でrestoreコマンドが追加された
git checkout .
git restore .
差分の確認
コミットログ
1行で見るケースが多いの覚えておくのが良い
git log --oneline
コミットメッセージの修正
頻度としてはたまにやるぐらい
git commit --amend -m "hoge"
ファイルを以前の状態に戻すreset
コミットの中身の確認
git show --oneline <コミット>
fetchとpull
fetchコマンドはリモートブランチの情報を取得するだけ
pullはfetch&mergeの2段階の処理
rebase
rebaseは枝の付け替えと考えると分かりやすい
連続してcherry-pickをやっているイメージ
rebaseはコミットをまとめるのに使える(よく使う)
インタラクティブモードになるので、まとめたいコミットをsquashする
# 直前の3つのコミットをまとめる
git rebase -i HEAD^3
.gitignore
hoge.aとhoge.bを無視したい場合
hoge.[ab]
既に追跡しているファイルを後からgitignoreに追加した場合gitにファイルは残り続けているので以下のコマンドでgitからの追跡を止める
git rm --cached <フィアル名>
ローカルでのみ変更を無視する
追跡しているファイルを一時的にローカルだけで変更を加えたい場合に使う
# ローカルで変更したファイルをgitで追跡しない
git update-index --skip-worktree <ファイル名>
# ローカルで変更したファイルをgitで追跡しないをキャンセルする
git update-index --no-skip-worktree <ファイル名>
HEADについて
HEADとはいまいるブランチを参照するもの。
HEADにも種類があって
- HEAD
- FETCH_HEAD
- ORIG_HEAD
- MERGE_HEAD
がある
HEADの情報は.gitディレクトリに保存されている
HEADのエイリアスとして@が利用できる
Gitオブジェクト
- Blobオブジェクト
- ステージング時
- ファイル情報を指したもの
- Treeオブジェクト
- コミット時
- BlobオブジェクトやTreeオブジェクトを指したもの
- Commitオブジェクト
- コミット時
- Treeオブジェクトを指したもので、加えて前のCommitオブジェクトを指している
- Tagオブジェクト
- タグ時
- Commitオブジェクトを指している
git-flow
Gitは便利だけどチームで使い方のルールを決めておかないとスムーズな開発はできない
そこで提唱されているフローの1つ
feature, develop, release, hotfix, main
とブランチにそれぞれ役割をもたせて運用する
GitHub Flowはmainブランチをベースとしたフロー
merge
分岐がある場合とない場合でマージのされかたが異なるのそこを理解しておく
Discussion