merge --abort | mergeを中止する (★)

難易度: :star:

コマンドの概要

  • merge中に問題が生じ、作業自体を取り消したい場合には --abort オプション付きで実行することでキャンセルが可能です。

例題 (リポジトリ: git-drill/merge-abort)

  1. :mag: このリポジトリでは1つのテキストファイル(sample.md)が管理されています。

  2. :mag: checkout直後はローカルではmasterブランチのみが参照可能です。

  3. :octocat: リモートリポジトリにmasterとdevelopの2つのブランチが存在することを確認してください。

  4. :octocat: masterブランチに以下のいずれかのブランチをmergeしてください。

    1. リモートのdevelopブランチ

    2. ローカルのdevelopブランチ (checkoutする必要があります)

  5. :octocat: コンフリクトが発生しmergeが完了しないことを確認してからmerge自体を中止してください。

例題の模範回答

  1. git branch -a で以下の表示を確認します。

    * master
     remotes/origin/develop
     remotes/origin/master
  2. 現在のリポジトリの状態を確認します。

  3. 以下のいずれかを実行してmergeします

    1. リモートのdevelopブランチをmergeする場合

    2. ローカルのdevelopブランチをmergeする場合

  4. コンフリクトによりmerge作業が停止したことを確認します。

  5. merge作業を中止するには以下を実行すれば完了です。

  6. merge作業前の状態と同じであることを確認します。

例題の解説

  1. git branch-a (--all) オプションは、現在のブランチを含む全てのブランチを表示します。

  2. 今回使用した git log の各オプションについて知りたい場合は、こちらの課題を解いてみましょう。

  3. checkout直後はmasterブランチのみが手元にある状態のため、developをマージするには以下のいずれかを実行する必要があります。

    • リモートのdevelopブランチをmasterへmergeするか、または

    • リモートのdevelopブランチをローカルにcheckoutしそれをmasterへmerge

  4. mergeの途中で "CONFLICT (content): Merge conflict in ..." というメッセージは、2つの差分を自動的にmergeできなかったことを表します。今回はmergeを中止しますが、コンフリクトを目視で確認し手動で統合することも可能です。中止する場合は --abort オプション付きでmergeコマンドを実行します。

  5. merge前の状態に戻ります。なお複数ファイルがコンフリクトしていた場合や、手動でのマージ作業を途中まで行った場合でも、同様に中止可能です。

演習

Last updated