GoLand 2020.3 ヘルプ

変更をコミットして 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. コミットメッセージを入力します。Commit message history button をクリックして、最近のコミットメッセージのリストから選択できます。

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

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

    advanced commit options popup

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

    • 作成者 : 他の人が行った変更をコミットする場合は、これらの変更の作成者を指定できます。

    • コミットを修正 : ローカルの変更を最新のコミットに追加できます。

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

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

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

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

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

      Notifications about replacements of local paths in the go.mod file
  5. 準備ができたら、コミットまたはコミットとプッシュCtrl+Alt+K)をクリックして、コミットの直後に変更をリモートリポジトリにプッシュします。リモートにプッシュされる前に、現在のコミットと他のすべてのコミットを確認できます。

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

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

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

コミットしたいチャンクを選択する

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

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

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

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

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

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

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

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

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

変更されたファイルが自動的にステージングされる変更リストを使用する代わりに、コミットのために変更をステージング(英語)するという概念に慣れている場合は、設定 / 環境設定ダイアログ Ctrl+Alt+Sバージョン管理 | Git に移動し、ステージングエリアを有効化オプションを選択します。

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

コミットのステージ変更

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

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

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

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

    • コミットツールウィンドウ Alt+0 で、コードチャンクの代わりに単一行のように細かい変更をステージングしたり、単一行への多数の変更の 1 つをステージングしたりするには、変更を含むファイルを選択し、コンテキストメニューから対話式で追加を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  5. 準備ができたらプッシュボタンをクリックし、ドロップダウンメニューから実行する操作を選択します: プッシュまたは強制プッシュ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 つ作成され、マージする必要があります。

内部的には、プッシュを強制することを選択すると、GoLand は push --force-with-lease 操作を実行します。これは、他の人のコミットを上書きしないようにするためのより安全なオプションです(プッシュオプションの詳細については、git push(英語) を参照してください)。

関連ページ:

Git リポジトリをセットアップする

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

ターミナル

GoLand には、IDE 内からコマンドラインシェルを操作するための組み込みターミナルエミュレータが含まれています。専用のターミナルアプリケーションに切り替えることなく、Git コマンドの実行、ファイルのアクセス許可の設定、およびその他のコマンドラインタスクの実行に使用します。ターミナルエミュレータは最初、デフォルトのシステムシェルで実行されますが、Windows PowerShell、コマンドプロンプト cmd.exe、、など、他の多くのシェルをサポートしています。シェルの変更については、ター...

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

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

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

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

リモート Git リポジトリと同期する (フェッチ、プル、更新)

変更をアップストリームにプッシュして作業の結果を共有する前に、リモートリポジトリと同期して、プロジェクトのローカルコピーが最新であることを確認する必要があります。これは、変更のフェッチ、変更のプル、またはプロジェクトの更新のいずれかの方法で行うことができます。Git ブランチポップアップは、ブランチにまだフェッチされていない受信コミットがあるかどうかを示します。変更のフェッチ:アップストリームから変更をフェッチすると、最後にリモートリポジトリと同期してから行われたコミットからのすべての新しいデー...

Git リポジトリの変更を調査する

GoLand では、プロジェクト内のすべての変更を追跡できます。これにより、変更の作成者を特定し、ファイルバージョンまたはコミットの違いを確認し、必要に応じて変更を安全にロールバックして元に戻すことができます。プロジェクト履歴を確認する:指定したフィルターに一致するプロジェクトソースに加えられたすべての変更を確認できます。プロジェクト履歴を表示するには、Git ツールウィンドウのログタブを開きます。すべてのブランチおよびリモートリポジトリにコミットされたすべての変更が表示されます。マルチリポジ...