変更をリバートする
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
コードにはミスがつきものです。バージョン管理を使用すれば、ミスを取り消して修正できます。
コミットをリバートすると、存在する問題をプロジェクトの履歴から消去するのではなく、問題のある変更を元に戻す新しいコミット(リバートコミット)が作成されます。コミットをリバートすると、以前のコミットが存在した場所のギャップではなく、明白な監査証跡が提供されます。コミットのリバートでは、プロジェクトのアクセス制御とプロセスに従って、以下を実行します。
- 元のコミットで追加された行を削除する。
- 元のコミットで削除された行を復元する。
- 元のコミットで変更された行を以前の状態に復元する。
リバートするのはコミットだけではありません。問題のある変更が複数のコミットにまたがる場合は、コミットごとにリバートするのではなく、マージリクエストからすべての変更をリバートすることを検討してください。このアプローチにより、より明白な監査証跡が提供されます。
マージリクエストをリバートする
マージリクエストをマージした後、マージリクエスト内のすべての変更をリバートできます。
前提条件:
マージリクエストの編集、リポジトリへのコードの追加を許可するプロジェクトのロールが必要です。
プロジェクトは、プロジェクトの設定 > マージリクエストで設定されているマージメソッド Merge Commitを使用する必要があります。
GitLab 16.9以降では、早送りされたコミットをGitLab UIから元に戻すことができます。ただし、以下のいずれかに該当する場合に限ります:
- コミットがスカッシュされている、または
- マージリクエストに単一のコミットが含まれている。
詳細については、イシュー22236を参照してください。
マージリクエストExampleをリバートするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左サイドバーで、コード > マージリクエストを選択します。
- セカンダリメニューからマージ済みを選択し、マージリクエストを選択します(ここでは
Example)。 - マージリクエストのレポート領域までスクロールし、マージしたユーザーの情報を示すレポートを見つけます。
- Revertを選択します。
- ブランチでRevertで、変更をリバートするブランチを選択します。
- マージリクエストなしですぐにリバートするには:
- 新しいマージリクエストを作成をクリアします。
- Revertを選択すると、
Exampleのリバートが完了します。
- すぐにリバートせずに、新しいマージリクエストでリバートを確認するには、新しいマージリクエストを開始を選択した後、以下を実行します。
- リバートするマージリクエストのフィールドに入力し、マージリクエストを作成を選択します。
- マージリクエストがマージされると、
Exampleのリバートが完了します。
コミットをリバートする
リポジトリ内のコミットは、次のいずれかにリバートできます。
- 現在のブランチ。
- 新しいマージリクエスト。
前提条件:
- プロジェクトのロールは、マージリクエストを編集し、コードをリポジトリに追加する権限を持っている必要があります。
- この場合、Revertオプションは表示されないため、コミットがまだリバートされていない必要があります。
これを行うには、次の手順を実行します:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コミットを含むマージリクエストがわかっている場合:
- 左サイドバーで、コード > マージリクエストを選択し、目的のマージリクエストを選択します。
- コミットを選択し、リバートするコミットのタイトルを選択します。これにより、マージリクエストのコンテキストにコミットが表示されます。
- GitLabは、コミット
00001111を表示していますというメッセージをセカンダリメニューの下に表示します。00001111はコミットのハッシュです。コミットハッシュを選択して、コミットのページを表示します。
- コミットの元のマージリクエストが不明な場合:
- 左側のサイドバーで、コード > コミットを選択します。
- コミットのタイトルを選択し、コミットに関する完全な情報を表示します。
- 右上隅で、オプションを選択し、Revertを選択します。
- ブランチでRevertで、変更をリバートするブランチを選択します。
- マージリクエストなしですぐにリバートするには:
- 新しいマージリクエストを作成をクリアします。
- Revertを選択します。
- すぐにリバートせずに、新しいマージリクエストでリバートを確認するには、新しいマージリクエストを開始を選択した後、以下を実行します。
- リバートするマージリクエストのフィールドに入力し、マージリクエストを作成を選択します。
- マージリクエストがマージされると、コミットのリバートが完了します。
マージコミットを別の親コミットにリバートする
マージコミットをリバートすると、マージ先のブランチ(多くの場合、main)が常に最初の親になります。マージコミットを別の親コミットに戻すには、コマンドラインからそのコミットを元に戻す必要があります。Gitで変更を元に戻すを参照してください。
リポジトリからテキストを削除する
リポジトリからテキストを削除する方法やその他のデータ削除手法については、リポジトリサイズを参照してください。
関連トピック
- 公式
git revertドキュメント - Gitを使用して変更を取り消す
- コミットAPIを使用してコミットをリバートする
- 変更履歴がリバートされたコミットを処理する方法