AppCode 2023.1 ヘルプ

Git プロジェクト履歴を編集する

Git を使用すると、プロジェクト履歴を編集できます。これは、機能ブランチで作業していて、他の人と共有する前に、それをクリーンアップして希望どおりに表示したい場合に便利です。例: コミットメッセージを編集したり、同じ機能に関連する小さなコミットをまとめたり、無関係な変更を含むコミットを個別のコミットに分割したり、前のコミットに変更を追加したりできます。

コミットメッセージを編集する

変更する必要があるのがコミットメッセージだけであれば、このコミットをプッシュする前にそれを編集できます。

  1. Git ツールウィンドウ Alt+9ログタブでメッセージを編集するコミットを右クリックし、コンテキストメニューからコミットメッセージの編集を選択するか、F2 を押します。

  2. 開いたダイアログで、新しいコミットメッセージを入力し、OK をクリックします。

前のコミットを修正する

ときどき早くコミットしていくつかのファイルを追加し忘れたり、最後のコミットで別のコミットを作成せずに修正したいエラーに気づくことがあります。

これは、前のコミットに段階的な変更を追加するコミットの修正オプションを使用して行うことができます。その結果、2 つの異なるコミットではなく、1 つのコミットで終了します。

  1. コミットツールウィンドウ Alt+0 で、前のコミットに追加する変更を含む変更されたファイルを選択します。

  2. 修正チェックボックスを選択してコミットボタンをコミットの修正に変更し、クリックします。

以前のコミットを修正する

以前のコミットに変更を個別にコミットするのではなく追加する必要がある場合は、fixup または squash アクションを使用して変更できます。どちらのコマンドも、選択したコミットに段階的な変更を追加しますが、コミットメッセージの処理は異なります。

  • squash は新しいコミットメッセージを元のコミットに追加します

  • fixup は新しいコミットメッセージを破棄し、元のコミットからのメッセージだけを残します

  1. コミットツールウィンドウ Alt+0 で、以前のコミットに追加する変更を含む変更されたファイルを選択します。

  2. Git ツールウィンドウ Alt+9ログタブで、ローカルの変更で変更するコミットを右クリックし、コンテキストメニューからフィックスアップまたはスカッシュインを選択します。

  3. 変更を無効にすることを選択した場合は、必要に応じてコミットメッセージを修正します。

  4. コミットボタンの矢印をクリックしてコミットしてリベースを選択します。

コミットのスカッシュ

同じ機能に関連する 2 つのコミットを統合する必要がある場合は、ブランチの履歴をより明確にするために、1 つにまとめることができます。

  1. Git ツールウィンドウ Alt+9ログタブで、1 つに結合するコミットを選択し、コンテキストメニューからコミットのスカッシュを選択します。

  2. 開いたダイアログで、コミットメッセージを編集し(デフォルトでは、両方のコミットからのメッセージが含まれています)、OK をクリックします。

  3. Ctrl+Shift+K をリモートブランチへの変更をプッシュします。

コミットを削除する

変更を元に戻す追加のコミットを作成せずに、現在のブランチでプッシュされたコミットを破棄できます。

  • ログビューで破棄するコミットを選択し、コンテキストメニューからコミットの削除を選択します。

対話型リベースを実行してプロジェクト履歴を編集する

AppCode の Git 統合により、対話的なリベースを行うことで、プロジェクト履歴を直線的かつ意味のあるものに編集することができます。これにより、自分の機能ブランチから別のブランチに変更を統合する前に、個々のコミットの変更、順序の変更、コミットの一本化、余計な変更を含むコミットのスキップなど、コミット履歴をクリーンアップすることが可能です。

現在のブランチの履歴を編集する

AppCode では、変更を別のブランチに適用する前に、現在のブランチのコミット履歴を編集できます。

  1. Git ツールウィンドウ Alt+9 を開き、ログタブに切り替えます。

  2. 現在のブランチからのコミットのみを表示するようにログをフィルタリングします。

    Filter log by branch
  3. 編集する一連のコミットの中で最も古いコミットを選択し、右クリックしてここから対話的にリベースを選択します。

    選択したコミット後に行われた現在のブランチのすべてのコミットのリストを含む対話式リベースダイアログが表示されます。

    Interactive Rebase dialog

    ここから対話的にリベースオプションが無効になっている場合は、次のいずれかの理由が考えられます。

    • 選択したコミットには複数の親があります

    • 選択したコミットは現在のブランチにありません

    • 選択されたコミットは保護されたブランチにプッシュされます

    理由を特定するには、コンテキストメニューでアクションにカーソルを合わせ、ステータスバーでメッセージを探します。

    Status bar message
  4. ブランチ履歴に対して次の変更を実行できます。

    • コミットを適用する順序を変更する : up arrow および down arrow ボタンを使用して、コミットをリストの上下に移動します。

    • コミットを選択 : これは、すべてのコミットのデフォルトの状態です。コミットに対してすでに実行したアクションを取り消す必要がある場合は、ピック App actions rollback をクリックして、このコミットがそのまま適用されるようにします。

    • 編集 : 停止して編集 the Pause button をクリックして、リベースを開始するときに、このコミットで停止して編集できるようにします。

      コミット時にリベースが停止すると、AppCode ウィンドウの右下隅に通知がポップアップ表示され、リベースを続行または中止できます。

      the rebase status notification

      リベースを続行する前に、コンテキストアクション(前回保存した状態に戻す元に戻す修正など)を使用してこのコミットを変更できます。アクションを実行しない場合、このコミットはそのまま適用されます。

      通知を閉じた場合は、メインメニューから Git | リベースを続行を選択して再開します。

    • コミットメッセージを言い換える : リワードをクリックするか、コミットをダブルクリックして、開いたミニエディターでテキストを編集します。

    • 2 つのコミットを 1 つに結合する : 前のコミットに統合するコミットを選択し、スカッシュまたはスカッシュボタンの横にある矢印をクリックしてからフィックスアップをクリックします。

      スカッシュをクリックすると、デフォルトで 2 つのコミットからのメッセージが結合されるため、結果のコミットメッセージを変更しない場合、このアクションはブランチ履歴に反映されます。

      フィックスアップをクリックすると、フィックスアップコミットのコミットメッセージが破棄されるため、この変更はブランチ履歴に表示されません。

      どちらの場合も、これらのアクションのいずれかを適用すると開くミニエディターでコミットメッセージを編集できます。

    • コミットを無視する : ドロップをクリックして、選択したコミットからの変更が適用されないようにします。

    • 変更点をすべて元に戻す : リセットをクリックして、コミットに適用したすべてのアクションを破棄します。

    その結果、コミットをリベースダイアログには、ブランチのコミットに適用したすべてのアクションを示すグラフが表示されるため、リベースを開始する前に確認できます。

    Interactive Rebase graph
  5. リベース開始をクリックします。

ブランチの履歴を編集し、別のブランチに統合する

AppCode を使用すると、ブランチを別のブランチ上にリベースし、変更を適用する前にソースブランチ履歴を編集できます。

  1. メインメニューから Git | リベースを選択します。

    Git rebase dialog
  2. オプションを変更をクリックし、--interactive を選択します。

  3. リストから、現在のブランチをリベースするターゲットブランチを選択します。

    Choose target branch in the Git rebase dialog

  4. ブランチ全体をリベースするのではなく、特定のコミットからソースブランチをリベースする必要がある場合は、オプションを変更をクリックして --onto を選択します。ソースブランチフィールドに、現在のブランチを新しいベースに適用する開始点となるコミットのハッシュを入力します。

    Specify commit hash with --onto
  5. リベースするブランチが現在チェックアウトされていない場合は、オプションを変更別のリベース対象ブランチを選択する順にクリックし、表示されるリストからブランチを選択します。

    Choose the branch you want to rebase

    AppCode は、リベース操作を開始する前に、このブランチをチェックアウトします。

  6. ブランチで到達可能なすべてのコミットをリベースする場合は、オプションを変更をクリックして、--root を選択します(このオプションの詳細については、git-rebase(英語) を参照してください)。

  7. 親から何も変更されないコミットである空のコミットを保持する必要がある場合は、オプションを変更をクリックして --keep-empty を選択します(このオプションの詳細については、git-rebase(英語) を参照してください)。

  8. リベースをクリックします。

    選択したコミット後に作成された、現在のブランチ内のすべてのコミットのリストを含む対話式リベースダイアログが表示されます。

    Interactive Rebase dialog
  9. ブランチ履歴に対して次の変更を実行できます。

    • コミットを適用する順序を変更する : up arrow および down arrow ボタンを使用して、コミットをリストの上下に移動します。

    • コミットを選択 : これは、すべてのコミットのデフォルトの状態です。コミットに対してすでに実行したアクションを取り消す必要がある場合は、ピック App actions rollback をクリックして、このコミットがそのまま適用されるようにします。

    • 編集 : 停止して編集 the Pause button をクリックして、リベースを開始するときに、このコミットで停止して編集できるようにします。

      コミット時にリベースが停止すると、AppCode ウィンドウの右下隅に通知がポップアップ表示され、リベースを続行または中止できます。

      the rebase status notification

      リベースを続行する前に、コンテキストアクション(前回保存した状態に戻す元に戻す修正など)を使用してこのコミットを変更できます。アクションを実行しない場合、このコミットはそのまま適用されます。

      通知を閉じた場合は、メインメニューから Git | リベースを続行を選択して再開します。

    • コミットメッセージを言い換える : リワードをクリックするか、コミットをダブルクリックして、開いたミニエディターでテキストを編集します。

    • 2 つのコミットを 1 つに結合する : 前のコミットに統合するコミットを選択し、スカッシュまたはスカッシュボタンの横にある矢印をクリックしてからフィックスアップをクリックします。

      スカッシュをクリックすると、デフォルトで 2 つのコミットからのメッセージが結合されるため、結果のコミットメッセージを変更しない場合、このアクションはブランチ履歴に反映されます。

      フィックスアップをクリックすると、フィックスアップコミットのコミットメッセージが破棄されるため、この変更はブランチ履歴に表示されません。

      どちらの場合も、これらのアクションのいずれかを適用すると開くミニエディターでコミットメッセージを編集できます。

    • コミットを無視する : ドロップをクリックして、選択したコミットからの変更が適用されないようにします。

    • 変更点をすべて元に戻す : リセットをクリックして、コミットに適用したすべてのアクションを破棄します。

    その結果、コミットをリベースダイアログには、ブランチのコミットに適用したすべてのアクションを示すグラフが表示されるため、リベースを開始する前に確認できます。

    Interactive Rebase graph
  10. リベース開始をクリックします。

関連ページ:

Git ブランチから別の Git へ変更を適用する

Git では、あるブランチから別のブランチへの変更を統合するいくつかの方法があります。ブランチのマージ、ブランチのリベース、ブランチから別のブランチに別々のコミットを適用する (チェリーピック)、コミットから個別の変更を適用する、特定のファイルをブランチに適用する、ブランチのマージ:特定のタスクで機能する機能ブランチを作成し、機能を完了してテストした後、作業の結果をメインコードベースに統合するとします。これを行う最も一般的な方法は、ブランチをマスターにマージすることです。機能ブランチで作業をし...

Git リポジトリに変更をコミットしてプッシュする

Git リポジトリに新しいファイルを追加した後、またはすでに Git バージョン管理下にある変更されたファイルを追加し、それらの現在の状態に満足したら、作業の結果を共有できます。これには、リポジトリのスナップショットをプロジェクト履歴に記録するためにローカルにコミットしてから、プッシュをリモートリポジトリにコミットして、他のユーザーが利用できるようにすることが含まれます。Git ユーザー名を設定する Git は、コミットを ID に関連付けるために、ユーザー名を知っている必要があります。ユーザー名...

Git リポジトリの変更を元に戻す

コミットされていない変更を元に戻すコミットする前に、ローカルで行った変更をいつでも元に戻すことができます。コミットツールウィンドウで、元に戻すファイルを 1 つ以上選択し、コンテキストメニューからロールバックを選択するか、を押します。最後のコミット以降に選択したファイルに加えられたすべての変更は破棄され、アクティブな変更リストから消えます。ファイルのステージングを解除するデフォルトでは、AppCode は、変更されたファイルが自動的にステージングされる変更リストの概念を使用します。ファイルが...

Git を使用して複数のフィーチャーを同時に処理する

場合によっては、未完成のものを使って別のタスクに切り替えてから、それらに戻る必要があります。AppCode はあなたの作業を失うことなくいくつかの異なる機能に便利に取り組むためのいくつかの方法を提供します: 保留中の変更はスタッシュまたはシェルブできます。スタッシュの変更は、シェルブに非常に似ています。唯一の違いは、パッチの生成方法と適用方法にあります。スタッシュは Git によって生成され、AppCode の内部または外部から適用できます。変更がシェルブされたパッチは AppCode によって生...

タグを使用して特定の Git コミットをマークする

Git を使用すると、コミットにタグを付けて、プロジェクト履歴の特定のポイントをマークし、将来参照できるようにすることができます。例: リリーススナップショットをキャプチャーするためにブランチを作成する代わりに、リリースバージョンに対応するコミットにタグを付けることができます。コミットにタグを割り当てる Git ツールウィンドウを開き、ログタブに切り替えます。目的のコミットを見つけて右クリックし、コンテキストメニューから新規タグを選択します。新しいタグの名前を入力し、OK をクリックします。タグは、...