merge --abort | mergeを中止する (★)
難易度: :star:
コマンドの概要
merge中に問題が生じ、作業自体を取り消したい場合には --abort オプション付きで実行することでキャンセルが可能です。
例題 (リポジトリ: git-drill/merge-abort)
:mag: このリポジトリでは1つのテキストファイル(sample.md)が管理されています。
:mag: checkout直後はローカルではmasterブランチのみが参照可能です。
:octocat: リモートリポジトリにmasterとdevelopの2つのブランチが存在することを確認してください。
:octocat: masterブランチに以下のいずれかのブランチをmergeしてください。
リモートのdevelopブランチ
ローカルのdevelopブランチ (checkoutする必要があります)
:octocat: コンフリクトが発生しmergeが完了しないことを確認してからmerge自体を中止してください。
例題の模範回答
git branch -a
で以下の表示を確認します。現在のリポジトリの状態を確認します。
以下のいずれかを実行してmergeします
リモートのdevelopブランチをmergeする場合
ローカルのdevelopブランチをmergeする場合
コンフリクトによりmerge作業が停止したことを確認します。
merge作業を中止するには以下を実行すれば完了です。
merge作業前の状態と同じであることを確認します。
例題の解説
git branch
の-a (--all)
オプションは、現在のブランチを含む全てのブランチを表示します。今回使用した
git log
の各オプションについて知りたい場合は、こちらの課題を解いてみましょう。checkout直後はmasterブランチのみが手元にある状態のため、developをマージするには以下のいずれかを実行する必要があります。
リモートのdevelopブランチをmasterへmergeするか、または
リモートのdevelopブランチをローカルにcheckoutしそれをmasterへmerge
mergeの途中で "CONFLICT (content): Merge conflict in ..." というメッセージは、2つの差分を自動的にmergeできなかったことを表します。今回はmergeを中止しますが、コンフリクトを目視で確認し手動で統合することも可能です。中止する場合は
--abort
オプション付きでmergeコマンドを実行します。merge前の状態に戻ります。なお複数ファイルがコンフリクトしていた場合や、手動でのマージ作業を途中まで行った場合でも、同様に中止可能です。
演習
Last updated