変更をコミットして Git リポジトリにプッシュする
Git リポジトリに新しいファイルを追加した後、またはすでに Git バージョン管理下にある変更されたファイルを追加し、それらの現在の状態に満足したら、作業の結果を共有できます。これには、リポジトリのスナップショットをプロジェクト履歴に記録するためにローカルにコミットしてから、プッシュをリモートリポジトリにコミットして、他のユーザーが利用できるようにすることが含まれます。
Git ユーザー名を設定する
Git は、コミットを ID に関連付けるために、ユーザー名を知っている必要があります。ユーザー名を設定していない場合、IntelliJ IDEA は、最初に変更をコミットしようとしたときに、ユーザー名を指定するように求めます。
ターミナルを開き、次のいずれかのコマンドを実行します。
マシン上のすべての Git リポジトリに名前を設定するには、
$ git config --global user.name "John Smith"
を使用します単一のリポジトリの名前を設定するには、
$ git config user.name "John Smith"
を使用します
変更をローカルでコミットする
左側にある垂直コミットツールウィンドウ Alt+0 を開きます。
変更をコミットする準備ができたら、対応するファイルまたは変更リスト全体を選択します。
Ctrl+K を押すと、アクティブな変更リスト全体が選択されます。
バージョン管理外ファイルノードでファイルを選択することもできます。IntelliJ IDEA はこれらのファイルを 1 ステップでステージングしてコミットします。
コミットメッセージを入力します。
をクリックして、最近のコミットメッセージのリストから選択できます。
コミットをプッシュする前に、後でコミットメッセージを編集することもできます。
コミット前のチェックを実行する必要がある場合、コミット後にファイルをサーバーにアップロードする必要がある場合、または詳細オプションを使用してコミットする必要がある場合は、
をクリックします。
次のオプションが利用可能です:
作成者 : 他の人が行った変更をコミットする場合は、これらの変更の作成者を指定できます。
コミットを修正 : ローカルの変更を最新のコミットに追加できます。
- Sign-off コミット : チェックインしようとしている変更が自分によって行われたことを証明するためにコミットをサインオフするか、コミットするコードの責任を取るかを選択します。
このオプションを有効にすると、コミットメッセージの最後に次の行が自動的に追加されます。サインオフ: <username>
コミット前領域で、選択したファイルをローカルリポジトリにコミットする前に IntelliJ IDEA で実行するアクションを選択します。
コミット後領域では、コミットされたファイルをローカルまたはリモートホスト、マウントされたディスク、またはディレクトリにアップロードするために使用するサーバーアクセス構成またはサーバーグループを選択できます。詳細については、アプリケーションをデプロイするを参照してください。
準備ができたら、コミットまたはコミットとプッシュ(Ctrl+Alt+K)をクリックして、コミットの直後に変更をリモートリポジトリにプッシュします。リモートにプッシュされる前に、現在のコミットと他のすべてのコミットを確認できます。
ファイルの一部をコミットする
特定のタスクに関連する変更を加えると、同じファイルに影響を与える他の無関係なコード変更も適用される場合があります。このような変更をすべて 1 つのコミットに含めることは、確認、復帰、チェリーピックなどを行うのが困難になるため、適切なオプションではない場合があります。
IntelliJ IDEA では、次のいずれかの方法で、このような変更を個別にコミットできます。
変更のコミットダイアログの変更されたコードチャンクを選択で、コミットに含めたいコードチャンクを選択し、他の変更を保留にして、後でコミットできるようにします。
コードを編集するときに、さまざまなコードチャンクをその場でさまざまな変更リストに入れ、これらの変更リストを個別にコミットします。
コミットしたいチャンクを選択する
垂直コミットツールウィンドウ Alt+0 を開きます。
選択したファイルのリポジトリバージョンとローカルバージョンの違いを表示するには、コミットツールウィンドウ Alt+0 で、ツールバーの
をクリックするか、Ctrl+D を押します。
コミットしたい、変更した、または新しく追加したコードの各チャンクの横にあるチェックボックスを選択し、その他の変更を選択しないままにします。
コミットをクリックしてください。選択されていない変更は現在の変更リストに残るため、別々にコミットすることができます。
変更を異なる変更リストに入れる
エディターでファイルを変更するときは、ガターで対応する変更マーカーをクリックします。
表示されるツールバーで、変更したコードチャンクのターゲット変更リストを選択します(または新しい変更リストを作成します)。
各変更リストを別々にコミットします。
Git ステージングエリアを使用して変更をコミットする
変更されたファイルが自動的にステージングされる変更リストを使用する代わりに、コミットのために変更をステージング(英語)するという概念に慣れている場合は、設定 / 環境設定ダイアログ Ctrl+Alt+S で に移動し、ステージングエリアを有効化オプションを選択します。
コミットツールウィンドウは次のようになります。

ステージングエリアを使用すると、同じファイルへの変更(重複する変更を含む)を簡単にコミットし、エディターからフォーカスを切り替えることなく、どの変更がすでにステージングされているかを確認できます。
コミットのステージ変更
以下のいずれか 1 つを実行します:
ファイル全体をステージングするには、コミットツールウィンドウ Alt+0 で、このファイルを選択し、その隣の右側にある
をクリックするか、Ctrl+Alt+A を押します。
ファイル内の特定のチャンクをステージングするには、エディターで、変更されたチャンクの横にあるガターの変更マーカーをクリックし、ステージをクリックします。
段階的な変更(IntelliJ IDEA の外部から段階的な変更を含む)は、エディターで境界線の形をした変更マーカーでマークされます。
コミットツールウィンドウ Alt+0 で、コードチャンクの代わりに単一行のように細かい変更をステージングしたり、単一行への多数の変更の 1 つをステージングしたりするには、変更を含むファイルを選択し、コンテキストメニューから対話式で追加を選択します。
これにより、3 方向の差分ビューアーが開きます。左側のペインにはリポジトリのバージョンが表示され、右側のペインにはローカルバージョンが表示され、中央のペインは、ステージングする変更を加えることができる完全に機能するエディターです。
準備ができたら、変更をローカルでコミットする説明に従って変更をコミットします。
変更をリモートリポジトリにプッシュする
変更をプッシュする前に、リモートと同期し、競合を回避するためにリポジトリのローカルコピーが最新であることを確認してください。
IntelliJ IDEA を使用すると、任意のブランチから追跡対象のブランチ(英語)またはその他のリモートブランチに変更をアップロードできます。
以下のいずれか 1 つを実行します:
現在のブランチから変更をプッシュするには、 Ctrl+Shift+K をプッシュするか、メインメニューから を選択します。
リモートを持つローカルブランチから変更をプッシュするには、ブランチポップアップでこのブランチを選択し、アクションのリストからプッシュを選択します。
コミットのプッシュダイアログが開き、すべての Git リポジトリ(マルチリポジトリプロジェクトの場合)が表示され、最後のプッシュ以降に各リポジトリの現在のブランチで行われたすべてのコミットが一覧表示されます。
同期的に制御されない複数のリポジトリを使用するプロジェクトがある場合、現在のリポジトリのみがデフォルトで選択されます(同期リポジトリ制御を有効にする方法の詳細については、バージョン管理設定: Git を参照してください)。
リポジトリにリモートがない場合は、リモートの定義リンクが表示されます。このリンクをクリックして、表示されるダイアログでリモートの名前と URL を指定します。保存され、後で で編集できます(詳細はリモートリポジトリを追加するを参照)。
プッシュ先のターゲットブランチを変更したい場合は、ブランチ名をクリックします。ラベルがテキストフィールドに変わり、そこで既存のブランチ名を入力するか、または新しいブランチを作成できます。右下隅にあるすべてのターゲットを編集リンクをクリックして、すべてのブランチ名を同時に編集することもできます。
ローカルのブランチを変更することはできません。選択された各リポジトリの現在のブランチがプッシュされます。
変更をプッシュする前にプレビューしたい場合は、必要なコミットを選択してください。右側のペインには、選択したコミットに含まれている変更が表示されます。ツールバーのボタンを使ってコミットの詳細を調べることができます。
コミットの作成者が現在のユーザーと異なる場合、このコミットはアスタリスクでマークされています。
準備ができたらプッシュボタンをクリックし、ドロップダウンメニューから実行する操作を選択します: プッシュまたは強制プッシュ(
push --force-with-lease
と同等)。これらの選択オプションは、現在のブランチが保護されたブランチフィールドにリストされていない場合にのみ使用可能です(バージョン管理設定: Git を参照)。それ以外の場合は、
push
操作のみを実行できます。
プッシュが拒否された場合、作業コピーを更新する
作業コピーが古くなったためにプッシュが拒否された場合、設定 / 環境設定ダイアログの Git 設定ページで現在ブランチのプッシュが却下された場合に自動更新するオプションが選択されていなければ、IntelliJ IDEA はプッシュが拒否されましたダイアログを表示します。以下を実施:
プロジェクトで複数の Git リポジトリを使用している場合は、それらのうちどれを更新するかを指定します。プッシュが拒否されたかどうかに関係なく、すべてのリポジトリを更新する場合は、すべてのリポジトリを更新しますオプションを選択します。このオプションをオフにすると、影響を受けるリポジトリのみが更新されます。
このダイアログで選択した更新方法を使用してプッシュが次回拒否されたときに、IntelliJ IDEA が更新手順をサイレントに適用するようにするには、更新方法の選択を記憶し、今後確認なしで更新するオプションを選択します。
このダイアログを終了すると、設定 / 環境設定ダイアログの Git 設定ページにある現在ブランチのプッシュが却下された場合に自動更新するチェックボックスが選択され、適用された更新方法がデフォルトの方法になります。
更新方法を変更するには、このオプションの選択を解除して、現在のブランチのプッシュが次に拒否されたときにプッシュが拒否されましたダイアログを呼び出し、別の更新手順を適用して、もう一度更新方法の選択を記憶するオプションを選択します。
強制プッシュを使用する必要があるのはいつですか?
プッシュを実行すると、リモートリポジトリに欠落している変更があり、リポジトリのローカルコピーで上書きする場合、Git は操作の補完を拒否します。通常、変更で更新する前に、プルを実行してリモートと同期する必要があります。
--force push
コマンドはこのチェックを無効にし、リモートリポジトリを上書きできるようにします。これにより、その履歴が消去され、データが失われます。内部的には、プッシュを強制することを選択すると、IntelliJ IDEA は push --force-with-lease
操作を実行します。これは、他の人のコミットを上書きしないようにするためのより安全なオプションです(プッシュオプションの詳細については、git push(英語) を参照してください)。
それでも --force push
を実行する必要がある可能性がある状況は、プッシュされたブランチをリベースしてから、それをリモートサーバーにプッシュしたい場合です。この場合、プッシュしようとすると、リモート参照はローカル参照の祖先ではないため、Git は変更を拒否します。この状況でプルを実行すると、ブランチのコピーが 2 つ作成され、マージする必要があります。
内部的には、プッシュを強制することを選択すると、IntelliJ IDEA は push --force-with-lease
操作を実行します。これは、他の人のコミットを上書きしないようにするためのより安全なオプションです(プッシュオプションの詳細については、git push(英語) を参照してください)。
関連ページ:

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

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

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

Web サーバーとの同期を構成する
IntelliJ IDEA はインプレース、ローカル、およびリモートサーバーを区別しますが、IntelliJ IDEA のコンテキストにおけるこれらの用語の意味は、それらの一般的な意味とは少し異なります。インプレースサーバー構成では、Web サーバーがコンピューターで実行されており、プロジェクトはドキュメントルート(たとえば、/htdocs フォルダー)にあり、サーバーで直接開発を行います。インプレースサーバーのドキュメントルートは、プロジェクトルートの親です。ドキュメントルートは、Web ルートま...

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

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