GoLand 2024.1 ヘルプ

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

Git リポジトリに新しいファイルを追加するか、すでに Git バージョン管理下にあるファイルを変更し、現在の状態に満足したら、作業の結果を共有できます。これには、ローカルにコミットしてリポジトリのスナップショットをプロジェクト履歴に記録し、次にリモートリポジトリにプッシュして他のユーザーが使用できるようにすることが含まれます。

Git ユーザー名を設定する

Git は、コミットを ID に関連付けるために、ユーザー名を知っている必要があります。ユーザー名を設定していない場合、GoLand は、最初に変更をコミットしようとしたときに、ユーザー名を指定するように求めます。

  • ターミナルを開き、次のいずれかのコマンドを実行します。

    • マシン上のすべての Git リポジトリに名前を設定するには、$ git config --global user.name "John Smith" を使用します

    • 単一のリポジトリの名前を設定するには、$ git config user.name "John Smith" を使用します

変更をローカルでコミットする

  1. 左側にある垂直コミットツールウィンドウ Alt+0 を開きます。

    Commit tool window
  2. 変更をコミットする準備ができたら、対応するファイルまたは変更リスト全体を選択します。

    Ctrl+K を押すと、アクティブな変更リスト全体が選択されます。

    バージョン管理外ファイルノードでファイルを選択することもできます。GoLand はこれらのファイルを 1 ステップでステージングしてコミットします。

  3. 個別のコミットを作成するのではなく、ローカルの変更を最新のコミットに追加する場合は、修正オプションを選択します。

  4. コミットメッセージを入力します。Commit message history button をクリックして、最近のコミットメッセージのリストから選択できます。

    コミットをプッシュする前に、後でコミットメッセージを編集することもできます。

  5. コミットチェックを実行する、コミット後にサーバーにファイルをアップロードする、または詳細オプションを使用してコミットする必要がある場合は、右下隅にある the Gear icon をクリックします。

    advanced commit options popup

    次のオプションが利用可能です:

    • 作成者 : 他の人による変更をコミットしている場合は、これらの変更の作成者を指定できます。

    • Sign-off コミット : チェックインしようとしている変更が自分によって行われたことを証明するためにコミットをサインオフするか、コミットするコードの責任を取るかを選択します。

      このオプションを有効にすると、コミットメッセージの最後に次の行が自動的に追加されます。Signed off by: <username>

    • コミットチェック領域で、選択したファイルをローカルリポジトリにコミットするときに GoLand で実行するアクションを選択します。

      次のオプションが利用可能です:

      • コードの整形 : プロジェクトコードのスタイル設定に従ってコードフォーマットを実行します。

      • コードの再配置 : 配置ルールの設定に従ってコードを再配置します。

      • インポートの最適化 : 冗長なインポートステートメントを削除します。

      • コードの解析 : それらをコミットしながら変更されたファイルを分析します。プロファイルの選択をクリックして、IDE がインスペクションを実行するインスペクションプロファイルを選択します。

        例: go.mod ファイルのローカルパスを置き換えた場合、GoLand は変更をコミットする前に通知を表示できます。これは、これらの置換が誤ってコミットされた状況を回避できます。

        この機能を有効にするには、コミットダイアログ設定でコードの解析チェックボックスを選択する必要があります。

      • TODO の確認 (<フィルター名>) : 指定されたフィルターに一致する TODO アイテムを確認します。構成をクリックして既存の TODO フィルターを選択するか、TODO 設定ページを開いて適用する新しいフィルターを定義します。

      • クリーンアップ : コードクリーンアップインスペクションからのクイックフィックスをバッチ適用します。プロファイルの選択をクリックして、IDE がインスペクションを実行するプロファイルを選択します。

      • テストの実行 : コミットチェックとしてテストを実行しますテストの実行の近くにある構成の選択をクリックし、実行する構成を選択します。

      • コピーライトの更新 : 選択したコピーライトプロファイルとスコープの組み合わせに従って、コピーライト表示を追加または更新します。

      • Go fmt : go fmt を使用してコードをフォーマットします。Go ツールの詳細については、「Go ツール」を参照してください。

  6. 準備ができたら、コミットまたはコミットとプッシュCtrl+Alt+K)をクリックして、コミットの直後に変更をリモートリポジトリにプッシュします。リモートにプッシュされる前に、現在のコミットと他のすべてのコミットを確認できます。

ファイルの一部をコミットする

特定のタスクに関連する変更を加えると、同じファイルに影響を与える他の無関係なコード変更も適用される場合があります。このような変更をすべて 1 つのコミットに含めることは、確認、リバートチェリーピックなどを行うのが困難になるため、適切なオプションではない場合があります。

GoLand では、次のいずれかの方法で、このような変更を個別にコミットできます。

コミットしたいチャンクと特定の行を選択する

  1. コミットツールウィンドウ Alt+0 を開きます。

  2. 選択したファイルのリポジトリバージョンとローカルバージョンの違いを表示するには、コミットツールウィンドウ Alt+0 で、ツールバーの the Diff icon をクリックするか、Ctrl+D を押します。

  3. コミットしたい、変更した、新しく追加したコードの各チャンクの横にあるチェックボックスを選択し、その他の変更を選択しないままにします。

    GoLand: Partial commit dialog
  4. チャンクから特定の行のみをコミットする場合は、含める行を右クリックし、チャンクを分割し、選択した行をコミットに含めるを選択します。

    GoLand: An option to include current line in commit in the context menu

    または、余白の上にマウスを移動し、コミットに含める行またはコミットから除外する行の横にあるチェックボックスをオンまたはオフにします。

  5. コミットをクリックしてください。選択されていない変更は現在の変更リストに残るため、別々にコミットすることができます。

変更を異なる変更リストに入れる

  1. エディターでファイルを変更するときは、ガターで対応する変更マーカーをクリックします。

  2. 表示されるツールバーで、変更したコードチャンクのターゲット変更リストを選択します(または新しい変更リストを作成します)。

    Partial commit changelists
    Partial commit changelists
  3. 各変更リストを別々にコミットします。

Git ステージングエリアを使用して変更をコミットする

変更されたファイルが自動的にステージングされる変更リストを使用するのではなく、コミットのために変更をステージングする(英語)という概念に慣れている場合は、Ctrl+Alt+S を押して設定を開き、バージョン管理 | Git を選択してから、ステージングエリアを有効化チェックボックスを選択します。

Git staging area

ステージングエリアを使用すると、同じファイルへの変更(重複する変更を含む)を簡単にコミットし、エディターからフォーカスを切り替えることなく、どの変更がすでにステージングされているかを確認できます。

コミットのステージ変更

  1. 以下のいずれか 1 つを実行します:

    • ファイル全体をステージングするには、コミットツールウィンドウ Alt+0 で、このファイルを選択し、その隣の右側にある the Add button をクリックするか、Ctrl+Alt+A を押します。

      Stage an entire file from the Commit tool window
    • ファイル内の特定のチャンクをステージングするには、エディターで、変更されたチャンクの横にあるガターの変更マーカーをクリックし、ステージをクリックします。

      Stage a change from the editor

      段階的な変更(GoLand の外部から段階的な変更を含む)は、エディターで境界線の形をした変更マーカーでマークされます。

      Gutter marker for staged changes
    • コードチャンクではなく単一行のような詳細な変更、または単一行に対する複数の変更のうちの 1 つをステージングするには、コミットツールウィンドウ Alt+0 で、変更を含むファイルを選択し、コンテキストメニューから HEAD、ステージ済み、ローカルバージョンの比較を選択します。

      これにより、3 方向の差分ビューアーが開きます。左側のペインにはリポジトリのバージョンが表示され、右側のペインにはローカルバージョンが表示され、中央のペインはステージングする変更を加えることができる完全な機能のエディターです。

      Stage changes interactively
  2. 準備ができたら、変更をローカルでコミットする説明に従って変更をコミットします。

変更をリモートリポジトリにプッシュする

変更をプッシュする前に、リモートと同期し、競合を避けるためにリポジトリのローカルコピーが最新であることを確認してください。

GoLand を使用すると、任意のブランチから追跡対象のブランチ(英語)またはその他のリモートブランチに変更をアップロードできます。

  1. 以下のいずれか 1 つを実行します:

    • 現在のブランチから変更をプッシュするには、 Ctrl+Shift+K をプッシュするか、メインメニューから Git | プッシュを選択します。

    • リモートを持つローカルブランチから変更をプッシュするには、ブランチポップアップでこのブランチを選択し、アクションのリストからプッシュを選択します。

    コミットのプッシュダイアログが開き、すべての Git リポジトリ(マルチリポジトリプロジェクトの場合)が表示され、最後のプッシュ以降に各リポジトリの現在のブランチで行われたすべてのコミットが一覧表示されます。

    同期的に制御されていない複数のリポジトリを使用するプロジェクトがある場合、デフォルトでは現在のリポジトリのみが選択されます (同期リポジトリ制御の有効化の詳細については、バージョン管理設定: Git を参照してください)。

  2. リポジトリにリモートがない場合は、リモートの定義リンクが表示されます。このリンクをクリックし、表示されるダイアログでリモートの名前と URL を指定します。これは保存され、後で Git | リモートの管理経由で編集できます (詳細については、リモートリポジトリを追加するを参照してください)。

  3. プッシュ先のターゲットブランチを変更したい場合は、ブランチ名をクリックします。ラベルがテキストフィールドに変わり、そこで既存のブランチ名を入力するか、新しいブランチを作成できます。右下隅にあるすべてのターゲットを編集リンクをクリックして、すべてのブランチ名を同時に編集することもできます。

    ローカルのブランチを変更することはできません。選択された各リポジトリの現在のブランチがプッシュされます。

  4. 行ったコミットがいくつかあるが、まだリモートブランチにプッシュしたくない場合は、Git ツールウィンドウのログタブで、最後にプッシュしたいコミットを選択し、アクションのリストからここまでのすべてをプッシュオプションを選択します。

    コミットのプッシュダイアログが開き、選択したコミットハッシュまでのすべてのコミットが表示されます。

  5. 変更をプッシュする前にプレビューしたい場合は、必要なコミットを選択してください。右側のペインには、選択したコミットに含まれている変更が表示されます。ツールバーのボタンを使ってコミットの詳細を調べることができます。

    コミットの作成者が現在のユーザーと異なる場合、このコミットはアスタリスクでマークされています。

  6. 準備ができたらプッシュボタンをクリックし、ドロップダウンメニューから実行する操作を選択します: プッシュまたは強制プッシュpush --force-with-lease と同等)。

    これらの選択オプションは、現在のブランチが保護されたブランチフィールドにリストされていない場合にのみ使用できます ( バージョン管理設定: Git を参照)。それ以外の場合は、push 操作のみを実行できます。

プッシュが拒否された場合、作業コピーを更新する

作業コピーが古くなったためにプッシュが拒否された場合、設定ダイアログの Git 設定ページで現在のブランチのプッシュが拒否された場合に自動更新するオプションが選択されていなければ、GoLand はプッシュが拒否されましたダイアログを表示します。以下を実施:

  1. プロジェクトで複数の Git リポジトリを使用している場合は、それらのうちどれを更新するかを指定します。プッシュが拒否されたかどうかに関係なく、すべてのリポジトリを更新する場合は、すべてのリポジトリを更新するオプションを選択します。このオプションをオフにすると、影響を受けるリポジトリのみが更新されます。

  2. このダイアログで選択した更新方法を使用してプッシュが次回拒否されたときに、GoLand が更新手順をサイレントに適用するようにするには、更新方法の選択を記憶し、今後確認なしで更新するオプションを選択します。

    このダイアログを終了すると、設定ダイアログの Git 設定ページにある現在のブランチのプッシュが拒否された場合に自動更新するチェックボックスが選択され、適用された更新方法がデフォルトの方法になります。

    更新方法を変更するには、このオプションの選択を解除して、現在のブランチのプッシュが次に拒否されたときにプッシュが拒否されましたダイアログを呼び出し、別の更新手順を適用して、もう一度更新方法の選択を記憶するオプションを選択します。

  3. リベースまたはマージボタンをそれぞれクリックして、更新方法(リベース(英語)またはマージ(英語))を選択します。

強制プッシュを使用する必要があるのはいつですか?

プッシュを実行すると、リモートリポジトリに欠落している変更があり、リポジトリのローカルコピーで上書きする場合、Git は操作の補完を拒否します。通常、変更で更新する前に、プルを実行してリモートと同期する必要があります。

--force push コマンドを使用すると、このチェックが無効になり、リモートリポジトリを上書きできるため、履歴が消去され、データ損失が発生します。内部では、強制プッシュを選択すると、GoLand は push --force-with-lease 操作を実行します。これは、他の人のコミットを上書きしないようにするためのより安全なオプションです (プッシュオプションの詳細については、git Push(英語) を参照してください)。

それでも --force push を実行する必要がある可能性がある状況は、プッシュされたブランチをリベースしてから、それをリモートサーバーにプッシュしたい場合です。この場合、プッシュしようとすると、リモート参照はローカル参照の祖先ではないため、Git は変更を拒否します。この状況でプルを実行すると、ブランチのコピーが 2 つ作成され、マージする必要があります。

関連ページ:

Git リポジトリのセットアップ

既存の Git リポジトリのクローンを作成するか、既存のプロジェクトを Git バージョンコントロール下に置くと、GoLand はコンピューターに Git がインストールされているかどうかを自動的に検出します。IDE が Git 実行可能ファイルを見つけられない場合、それをダウンロードすることを提案します。GoLand は、Windows10 バージョン 2004 で使用可能な Windows Subsystem for Linux 2(WSL2)の Git をサポートします。Git が Wind...

ターミナル

GoLand には、IDE 内からコマンドラインシェルを操作するための組み込みターミナルエミュレータが含まれています。専用のターミナルアプリケーションに切り替えることなく、Git コマンドの実行、ファイルのアクセス許可の設定、その他のコマンドラインタスクの実行に使用します。ターミナルプラグインを有効にするこの機能は、デフォルトで GoLand にバンドルされて有効になっているターミナルプラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認する...

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

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

コードスタイル

スキーム:この領域では、コードスタイルスキームを選択し、必要に応じて変更します。コードスタイルスキームの設定は、GoLand がコードを生成、リファクタリング、再フォーマットするたびに自動的に適用されます。IDE には、プロジェクトスキームとデフォルトスキームの 2 つの定義済みスキームが付属しています。プロジェクトスキームでは、構成する設定は現在のプロジェクトにのみ適用されます。これらの設定は、.idea の codeStyles フォルダーに保存され、VCS を介してプロジェクトと共有されます。...

コードの再フォーマットと再配置

GoLand を使用すると、現在のコードスタイルスキームまたは .editorconfig ファイルで指定した要件に従ってコードを再フォーマットできます。で定義されていないものがあれば、プロジェクト設定から取得されます。コードの一部、ファイル全体、ファイルのグループ、ディレクトリ、モジュールを再フォーマットできます。コードの一部または一部のファイルを再フォーマットから除外することもできます。コードフラグメントを再フォーマットするエディターで、再フォーマットしたいコードフラグメントを選択します。再フォ...

プロファイルを構成する

インスペクションプロファイルは、有効なインスペクション、これらのインスペクションが分析するファイルのスコープ、およびインスペクション重大度設定に関する情報を保持します。GoLand には、2 種類のプロファイルがあります。プロファイル IDE に保管は、GoLand 構成ディレクトリの inspection フォルダーに保存され、すべてのプロジェクトで使用できます。プロジェクトにコピーオプションを使用して、IDE プロファイルを現在のプロジェクトにコピーできます。プロファイルプロジェクトに保管は、.id...