マージコミットのコミットメッセージを付与する
git merge hoge-branch -m "Commit Message"
git merge hoge-branch -m "Commit Message" --no-ff
-mをつければよい。
ファストフォワードの場合は、--no-ffをつけることで、マージコミットが作成される。
マージ(ローカル)をなかったことにする
git reset --soft @~
git reset --mixed @~
git reset --hard @~
git reset --soft "@^"
softはステージに残す。
mixedはワーキングに残す。(デフォ。指定しない場合これ。)
hardは何も残さない。
キャレットを使用する場合は、"ダブルクォーテーション"で囲む。(windowsの場合、改行扱いになる)
チルダとキャレットの違いは割愛。
@はHEADのこと。
HEADは今いるコミットのポインタみたいなもの。
マージツールの設定
ワーキングディレクトリ vs. コミットで差分があるとき、ツールを設定しておけばgit difftool
のコマンドで外部ツールで確認できる。差分がないと何も起こらない。
ツールで設定する項目
https://git-scm.com/docs/git-difftool/2.31.0
diff.tool
デフォの差分ツール
difftool.<tool>.cmd
差分ツールを呼び指すコマンド。
difftool.prompt
差分ツールを呼び出す際にプロンプトを表示するか。
プロンプトを表示する必要ない場合に、これも設定する。
なお、差分ツール以外でもプロンプトが表示されることがあるので、全てで無効にするには次のようにする。
git config --global --replace-all core.pager "leff -F- -X"
すでにある設定を上書きするとき、あるオプション(--repalce-all ??)をつけて設定すればよい。
マージツール:p4merge
git config --global merge.tool p4merge
git config --global mergetool.1p4merge.path /Applications/p4merge.app/Contents/MacOS/p4merge
git config --global mergetool.prompt false
~/.gitconfigファイルに設定が追加されているはず。
マージツール:WinMerge
git config --global merge.tool winmerge
git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
git config --global mergetool.prompt false
マージツールを使ってマージする
マージしてコンフリクトが起こってる状態で、次のコマンドを実行する。
git mergetol
(実行前にマージツールの設定が必要)
分岐を1本のブランチにする:リベース
リベースしてブランチを1本にしてからマージすることで、マージコミットのようなものが作られない。
→ コミット履歴がすっきり。
既存のコミットを削除して、新たなコミットとして追加されることに注意。
→プッシュされているものに対しては、リベースしない。
基本的にはローカルコミット→ローカルコミットへリベースする。
ワーキングブランチをmainブランチにリベースする
git rebase main
コンフリクトが起こった場合
マージするときと同様、Unmerged pathに追加される。
マージツール等を使用して解消して、次のコマンドを入力。
git rebase --continue