ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
MERGING 状態とは
git merge 実行中に、Git が自動マージできないコンフリクトを検出すると、リポジトリは「マージ作業中」を示すMERGING 状態になります。シェルプロンプト (zsh の git-prompt 等) に (main|MERGING) と表示されるのはこの状態です。
$ git merge feature
Auto-merging src/app.php
CONFLICT (content): Merge conflict in src/app.php
Automatic merge failed; fix conflicts and then commit the result.
# プロンプトが MERGING に
(main|MERGING) $
MERGING 状態の判定
# 状態確認
git status
# On branch main
# You have unmerged paths.
# (fix conflicts and run "git commit")
# (use "git merge --abort" to abort the merge)
#
# Unmerged paths:
# (use "git add <file>..." to mark resolution)
# both modified: src/app.php
# 内部ファイルの存在
ls .git/MERGE_HEAD .git/MERGE_MSG
# .git/MERGE_HEAD ← これがあれば MERGING 中
# .git/MERGE_MSG ← マージコミット用メッセージのドラフト
取りうる 3 つの選択肢
| 選択肢 | コマンド | 結果 |
|---|---|---|
| ① 競合解決して完了 | 編集 → git add → git commit | マージコミット作成 (推奨) |
| ② マージを取り消す | git merge --abort | マージ前の状態に戻る (安全) |
| ③ マージを強制完了 (空マージ) | git commit --allow-empty 等 | 非推奨。状況限定 |
選択肢①: 競合解決 → コミット
競合した箇所は次のようなマーカーで示されます:
<<<<<<< HEAD
echo "main branch version";
=======
echo "feature branch version";
>>>>>>> feature
これを「どちらか」または「両方」を残す形に編集します。Git は中身を解釈しないので、自分でロジック的に正しい形を選ぶ必要があります。
# 1. 衝突ファイルを編集してマーカー (<<<, ===, >>>) を消す
$EDITOR src/app.php
# 2. 解決済みとしてステージ
git add src/app.php
# 全衝突解決を一括ステージ
git add .
# 3. マージコミット作成
git commit
# (エディタが開いて、MERGE_MSG の内容で確定)
# メッセージを指定
git commit -m "Merge branch 'feature' into main"
# 状態確認
git status
# nothing to commit, working tree clean
# (main) ← MERGING が消える
衝突解決の支援ツール
# 衝突中のファイル一覧
git diff --name-only --diff-filter=U
# src/app.php
# 各ファイルの衝突箇所
git diff
# GUI マージツール
git mergetool
# vimdiff / kdiff3 / VS Code 等が起動
# VS Code を mergetool に
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd 'code --wait $MERGED'
「相手側」「自分側」をまるごと採用
# ours (現在のブランチ側を採用)
git checkout --ours src/app.php
# theirs (マージ元側を採用)
git checkout --theirs src/app.php
# ステージして完了
git add src/app.php
git commit
選択肢②: マージを取り消す
これが一番安全な「やり直し」手段です。マージ前の HEAD に戻り、作業ツリーも復元されます:
git merge --abort
# 確認
git status
# On branch main
# nothing to commit, working tree clean
# (Git 2.11 以降推奨。古い Git では git reset --merge と同等)
--abort 前に行った未コミットのローカル変更も復元される点が安全。ただし、マージ衝突中に手動編集した内容は失われます (それは想定通り)。
選択肢③: 強制的に完了 / 強制的にリセット
状況により以下も使われますが、未コミット変更の喪失に注意:
# 全衝突を未解決のまま、現在の状態でマージコミットを作る (危険)
git commit -am "WIP merge"
# マージ作業中の状態を完全に破棄して直前の HEAD へ
git reset --merge
# 直前の HEAD (ORIG_HEAD) へハードリセット
git reset --hard ORIG_HEAD
# git reset --hard は未コミット変更を消すので注意
# git stash で退避してから実行することも検討
git merge --continue (Git 2.12+)
競合解決 → git add 済の状態で、コミットを完了するには:
git merge --continue
# = git commit (MERGE_MSG をテンプレに)
関連状態: REBASING / CHERRY-PICKING / BISECTING
MERGING と同様に、Git は各操作中の状態をマーカーファイルで管理しています:
| 状態 | マーカー | 進める | 取り消す |
|---|---|---|---|
| MERGING | .git/MERGE_HEAD | git merge --continue | git merge --abort |
| REBASING | .git/rebase-merge/ or rebase-apply/ | git rebase --continue | git rebase --abort |
| CHERRY-PICKING | .git/CHERRY_PICK_HEAD | git cherry-pick --continue | git cherry-pick --abort |
| REVERTING | .git/REVERT_HEAD | git revert --continue | git revert --abort |
| BISECTING | .git/BISECT_LOG | git bisect good/bad | git bisect reset |
よくあるシナリオ
1. git pull で MERGING になった
git pull
# Auto-merging ...
# CONFLICT ...
# 解決
$EDITOR conflicting-file
git add .
git commit
# やり直したい
git merge --abort
git pull --rebase # rebase 方式で取り込み直し
2. MERGING を放置したまま別ブランチに行きたい
# ❌ 直接 checkout は怒られる
git checkout other-branch
# error: you need to resolve your current index first
# 正しい順序
git merge --abort
git checkout other-branch
# どうしても変更を取っておきたい場合
git stash --include-untracked
git merge --abort
git stash pop
3. MERGE_HEAD が残ったまま再起動 → 状態が分からない
# 内部ファイルから判断
ls .git/MERGE_HEAD .git/MERGE_MSG .git/CHERRY_PICK_HEAD .git/REBASE_HEAD 2>/dev/null
# MERGING 中なのが判明したら
git merge --abort
FAQ
Q: git merge --abort しても MERGING が消えない
A: Git のバージョンが古い可能性。git reset --merge または git reset --hard ORIG_HEAD で代用。
Q: マージコミットを残したくない
A: git merge --abort してから git pull --rebase あるいは git rebase target-branch。マージコミットの代わりに線形履歴になります。
Q: 衝突ファイルがバイナリ (画像など)
A: テキストマーカーは入らない。git checkout --ours/--theirs でどちらか丸ごと採用 → git add。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 用語一覧
- エラー一覧
- git本体のインストール(Linux)
- Linuxサーバーへのgit導入とクライアントのセットアップ
- リモートリポジトリをローカルリポジトリとしてクローンする方法
- リモートとローカルのリポジトリを同期(pull)する方法
- 設定の確認
- gitユーザー名とemailの設定
- リモートリポジトリの作成
- ローカルリポジトリの作成
- 新規ファイル/ディレクトリをインデックスに登録
- インデックスの登録状態を確認
- ローカルリポジトリの変更をコミット
- コミット履歴の確認
- クライアントからリモートリポジトリの接続設定、確認、削除
- リポジトリへのプッシュ
- リモートリポジトリからクライアントへのSSHクローン
- リモートとローカルの差分表示
- バージョンの確認
- プロキシの設定
- ローカルをリモートリポジトリの状態に戻す
- ブランチの作成, 一覧表示, 切り替え
- ブランチのマージと削除
- リベース
- .gitignoreの書き方
- .gitignoreの設定が反映されない場合
- 特定のファイルをgitの管理から外す方法
- 参照(ORIG_HEAD, HEAD, FETCH_HEAD)
- git rm [-r --cached] の取り消し
- 一部のディレクトリ/ファイルのみをリポジトリから復元する方法
- ローカルとリモートリポジトリの有無を同期
- pushの取消し方法
- マージツールの起動方法
- Gitで「MERGING」の状態
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?