変更の取り消し

GitLabでは、個々のコミットやマージリクエスト全体を取り消すことができます。Git でコミットを取り消すと、元のコミットで行われたすべてのアクションを取り消す新しいコミットが作成されます:

  • 元のコミットで追加された行は削除されます。
  • 元のコミットで削除された行は元に戻されます。
  • 元のコミットで変更された行は元の状態に戻されます。

コミットの差し戻しには、プロジェクトのアクセス制御やプロセスが適用されます。

マージリクエストの取り消し

マージリクエストがマージされた後、マージリクエストのすべての変更を取り消すことができます。

前提条件:

  • プロジェクトでマージリクエストを編集したりリポジトリにコードを追加できるロールを持っている必要があります。
  • プロジェクトの設定 > 一般 > マージリクエストで設定されているマージメソッド Merge Commit を使用している必要があります。GitLab UI から早送りされたコミットを戻すことはできません。

そのためには

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. コード > マージリクエストを選択し、マージリクエストを特定します。
  3. マージリクエストレポートエリアまでスクロールし、マージリクエストがいつマージされたかを示すレポートを見つけてください。
  4. 差し戻しを選択します。
  5. ブランチで元に戻す で、変更を戻すブランチを選択します。
  6. オプションです。新しい差し戻しコミットで新しいマージリクエストを開始するには、新しいマージリクエストを開始を選択します。
  7. 差し戻しを選択します。

マージリクエストが差し戻された後、[差し戻し] オプションは表示されなくなりました。

コミットの取り消し

リポジトリ内のコミットは、以下のいずれかに差し戻すことができます:

  • 現在のブランチ。
  • 新しいマージリクエスト。

前提条件:

  • プロジェクトでマージリクエストを編集したりリポジトリにコードを追加できるロールを持っている必要があります。

そのためには

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. コミットが含まれているマージリクエストがわかっている場合:
    1. コード > マージリクエストを選択し、マージリクエストを特定して選択します。
    2. コミットを選択し、差し戻したいコミットのタイトルを選択します。これでマージリクエストの変更タブにコミットが表示されます。
    3. リバートしたいコミットハッシュを選択します。GitLab はコミットの内容を表示します。
  3. コミットの元となったマージリクエストがわからない場合:
    1. コード > コミットを選択します。
    2. コミットのタイトルを選択すると、コミットに関する完全な情報が表示されます。
  4. 右上の隅で、オプションを選択し、次にリバートを選択します。
  5. ブランチで元に戻す で、変更を戻すブランチを選択します。
  6. オプションです。新しい差し戻しコミットで新しいマージリクエストを開始するには、新しいマージリクエストを開始を選択します。
  7. 差し戻しを選択します。

コミットがリバートされると、リバートオプションは表示されなくなります。

マージコミットを別の親コミットに戻す

マージコミットを取り消すと、マージ先のブランチ (通常はmain) が常に最初の親となります。マージコミットを別の親に戻すには、コマンドラインからコミットを戻す必要があります:

  1. 戻したい親コミットの SHA を特定します。
  2. 戻したいコミットの親コミットの番号を指定します。(デフォルトは 1 で、最初の親を表します)。
  3. このコマンドを変更し、2 を親番号に、7a39eb0 をコミット SHA に置き換えます:

    git revert -m 2 7a39eb0