Skip to main content

git merge, rebase コマンド

未整理..

概要

考え方的にはこういう理解

  1. merge → 分岐している間の履歴を辿れるように本線に合流
  2. squash → 分岐は無かったことにして本線に1回のコミットとして合流
  3. rebase → 分岐後の履歴を、本線の後ろにくっつける(その前に本線の変更が手元に取り込まれる)

git merge

bash
git switch main
git pull
git merge feature/my-work
bash
git switch main
git merge --ff-only feature/my-work

git merge --squash

bash
git switch main
git merge --squash feature/my-work
git commit -m "Add feature my-work"

git rebase

bash
git switch feature/my-work
git fetch origin
git rebase origin/main

切替前に手元の変更を退避

switch しようとしてコンフリクトして失敗。そんなときは git stash で変更を退避。

コマンド意味
git stash手元の変更を退避
git stash pop退避した変更を手元に適用 (適用されたら退避分は消える)

もうちょっと試してから追記する

  • 複数回 stash したら スタックに積まれる(紛らわしいので push と書けない)。つまり pop 複数回で戻す
  • git stash list
  • git stash apply stash@2 : 消さずに適用
  • git stash pop stash@2 : 適用して(成功したら)削除

以下広告