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 ステップでステージングしてコミットします。
個別のコミットを作成するのではなく、ローカルの変更を最新のコミットに追加する場合は、 修正 オプションを選択します。
コミットメッセージを入力します。
をクリックして、最近のコミットメッセージのリストから選択できます。
コミットをプッシュする前に、後で コミットメッセージを編集することもできます。
コミットチェックを実行したり、コミット後にファイルをサーバーにアップロードしたり、詳細オプションを使用してコミットしたりする必要がある場合は、右下隅の
をクリックするか、 Ctrl+O を押します。

次のオプションを使用できます。
作成者: 他の人による変更をコミットしている場合は、これらの変更の作成者を指定できます。
Sign-off コミット: チェックインしようとしている変更が自分によって行われたことを証明するため、またはコミットするコードに対する責任を負うことを証明するためにコミットをサインオフする場合に選択します。
このオプションを有効にすると、コミットメッセージの最後に次の行が自動的に追加されます。 Signed off by: <username>
コミットチェック 領域で、選択したファイルをローカルリポジトリにコミットする前に IntelliJ IDEA で実行するアクションを選択します。
次のオプションを使用できます。
コードの整形: プロジェクトコードのスタイル設定に従ってコードフォーマットを実行します。
コードの再配置: 配置ルールの設定に従ってコードを再配置します。
インポートの最適化: 冗長なインポートステートメントを削除します。
クリーンアップ: コードクリーンアップインスペクションからのクイックフィックスをバッチ適用します。 プロファイルの選択 をクリックして、IDE がインスペクションを実行 するプロファイルを選択します。
コピーライトの更新: 選択したコピーライトプロファイル - スコープの組み合わせに応じた コピーライト情報を追加または更新します。
悪意のある依存関係の確認: プロジェクトで宣言されている可能性のある 悪意のある NPM および PyPI 依存関係を検索します。
高度なコミットチェック エリアでは、次のオプションが利用できます。
コミット完了後に高度なチェックを実行する: このオプションを有効にすると、コミットが完了した 後に 、選択した高度なコミットチェックが実行されます。
このオプションを有効にすると、高度なコミットチェックの一部が失敗した場合でも、変更はコミットされます。
コードの解析(A): それらをコミットしながら変更されたファイルを分析します。 プロファイルの選択 をクリックして、IDE がインスペクションを実行する インスペクションプロファイルを選択します。
TODO の確認: 指定されたフィルターに一致する TODO アイテムを確認します。 構成 をクリックして 既存の TODO フィルターを選択するか、 TODO 設定ページを開いて適用する新しいフィルターを定義します。
実行構成: コミットチェックとしてテストを実行します。 実行構成 の近くにある 構成の選択 をクリックし、実行する構成を選択します。
コミット後 領域では、コミットされたファイルをローカルまたはリモートホスト、マウントされたディスク、ディレクトリにアップロードするために使用する サーバーアクセス構成または サーバーグループを選択できます。 詳細は、 デプロイ を参照してください。
次のオプションを使用できます。
ファイルのアップロード: コミットされたファイルをローカルまたはリモートホスト、マウントされたディスク、ディレクトリにアップロードするために使用 するサーバーアクセス構成または サーバーグループを選択します。
アップロードを抑止するには、 なし を選択します。
リストにサーバー構成を追加するには、
をクリックし、表示される デプロイ ダイアログで必要なフィールドに入力します。
このリストは、 FTP/SFTP/WebDAV 接続 プラグインが有効な場合にのみ使用できます。
常に選択したサーバーまたはサーバーのグループを使用: 常に選択したサーバーまたは サーバーグループにファイルをアップロードしてください。
このチェックボックスは、 FTP/SFTP/WebDAV 接続 プラグインが有効な場合にのみ使用できます。
準備ができたら、 コミット または コミットとプッシュ (Ctrl+Alt+K )をクリックして、コミットの直後に変更をリモートリポジトリにプッシュします。 リモートにプッシュされる前に、現在のコミットと他のすべてのコミットを確認できます。
ファイルの一部をコミットする
特定のタスクに関連する変更を加えると、同じファイルに影響を与える他の無関係なコード変更も適用される場合があります。 このような変更をすべて 1 つのコミットに含めることは、確認、 リバート、 チェリーピックなどを行うのが困難になるため、適切なオプションではない場合があります。
IntelliJ IDEA では、次のいずれかの方法で、このような変更を個別にコミットできます。
変更のコミット ダイアログで、コミットに含める 変更されたコードチャンクと行を選択し 、後でコミットできるように他の変更を保留のままにしておきます。
コードを編集するときに、その場で 異なるコードチャンクを別々の変更リストに入れて 、これらの変更リストを個別にコミットします。
コミットしたいチャンクと特定の行を選択する
コミット ツールウィンドウ(Alt+0 )を開きます。
選択したファイルのリポジトリバージョンとローカルバージョンの違いを表示するには、 コミット ツールウィンドウ (Alt+0) で、ツールバーの
をクリックするか、 Ctrl+D を押します。
コミットしたい、変更した、新しく追加したコードの各チャンクの横にあるチェックボックスを選択し、その他の変更を選択しないままにします。

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

または、余白の上にマウスを移動し、コミットに含める行またはコミットから除外する行の横にあるチェックボックスをオンまたはオフにします。
コミット をクリックします。 選択されていない変更は現在の変更リストに残るため、別々にコミットすることができます。
エディターから選択した変更をコミットする
すでに変更をコミットした後で何かを忘れていたことに気付いた場合は、エディターから直接更新をすぐにコミットできます。
エディターでファイルを変更するときは、ガターで対応する 変更マーカーをクリックします。
表示されるツールバーにコミットメッセージを入力し、
この変更をコミット をクリックします。

コミットメッセージフィールドで
修正 をクリックすると、ローカルの変更が最新のコミットに追加されます。
変更を異なる変更リストに入れる
エディターでファイルを変更するときは、ガターで対応する 変更マーカーをクリックします。
表示されるツールバーで、変更したコードチャンクのターゲット変更リストを選択します(または新しい変更リストを作成します)。

各変更リストを別々にコミットします。
ローカルの変更を確認する方法をカスタマイズする
IntelliJ IDEA には、コミット前にローカルの変更を確認するためのワークフローをカスタマイズするためのさまざまな設定があります。
コミットツールウィンドウをカスタマイズする
コミット ツールウィンドウ (Alt+0) の場所と動作は、優先するワークフローに基づいて変更できます。
コミットインターフェースは、ダイアログのように見える別のウィンドウとして開くことができますが、非ブロッキング (または非モーダル) のままです。
コミット ツールウィンドウ (Alt+0) で、
オプション をクリックし、 を選択します。 ウィンドウを常に IDE の前面に表示するには、 を選択します。
コミット ツールウィンドウを、ローカル変更のリストを含むウィンドウとして機能するように設定し、変更をコミットする準備ができたらコミットコントロールをオンにすることができます (
、 コミット、 Ctrl+K を使用)。で、 コミットのコントロールを切り替える チェックボックスを選択します。
コミット ツールウィンドウは、 Git ツールウィンドウ Alt+9 の ログ タブ内の ローカルの変更 タブになることができます。
で、 コミットツールウィンドウを有効にする チェックボックスをオフにします。
差分ビューアーの動作をカスタマイズする
コミット ツールウィンドウ (Alt+0) には、変更されたファイルのリストが表示されます。 変更されたファイルをダブルクリックすると、差分ビューアーまたはソースファイルを開くことができます。
オプション をクリックし、 ダブルクリックで表示 を選択してから、希望するオプションを選択します。
Diff を選択すると、変更されたファイルをダブルクリックしたときに常に差分ビューアーが開き、変更内容を確認できます。
ソース は、編集できるように常にファイル自体を開きます。
次のいずれかの設定を使用して、差分ビューアーをエディターまたは別のウィンドウで開くように設定することもできます。
差分ビューアーで、ツールバーの
設定 をクリックし、 別ウィンドウで差分を表示 を選択します。
で、 エディタータブで差分を開く チェックボックスをオフにします。
Git ステージングエリアを使用して変更をコミットする
変更されたファイルが自動的にステージングされる 変更リストを使用するのではなく、コミットのために変更を ステージングする(英語)という概念に慣れている場合は、 Ctrl+Alt+S を押して設定を開き、 バージョン管理 | Git を選択してから、 ステージングエリアを有効化 チェックボックスを選択します。
コミット ツールウィンドウは次のようになります。

ステージングエリアを使用すると、同じファイルへの変更 (重複する変更を含む) を簡単に個別にコミットでき、エディターからフォーカスを切り替えることなく、どの変更がすでにステージングされているかを確認できます。
コミットのステージ変更
次のいずれかを実行します。
ファイル全体をステージングするには、 コミット ツールウィンドウ (Alt+0) で、このファイルを選択し、その隣の右側にある
をクリックするか、 Ctrl+Alt+A を押します。

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

ステージングされた変更 (IntelliJ IDEA 外部からステージングされた変更を含む) は、エディターで白抜きの変更マーカーでマークされます。

コードチャンクではなく単一行のような詳細な変更、または単一行に対する複数の変更のうちの 1 つをステージングするには、 コミット ツールウィンドウ (Alt+0) で、変更を含むファイルを選択し、コンテキストメニューから HEAD、ステージ済み、ローカルバージョンの比較 を選択します。
これにより、3 方向の 差分ビューアーが開きます。左側のペインにはリポジトリのバージョンが表示され、右側のペインにはローカルバージョンが表示され、中央のペインはステージングする変更を加えることができる完全な機能のエディターです。

準備ができたら、 変更をローカルでコミットする説明に従って変更をコミットします。
変更をリモートリポジトリにプッシュする
変更をプッシュする前に、 リモートと同期し 、競合を避けるためにリポジトリのローカルコピーが最新であることを確認してください。
IntelliJ IDEA を使用すると、任意のブランチから 追跡対象のブランチ(英語)または他の任意のリモートブランチに変更をアップロードできます。
次のいずれかを実行します。
現在のブランチから変更をプッシュするには、 Ctrl+Shift+K を押すか、メインメニューから を選択します。
リモートを持つローカルブランチから変更をプッシュするには、このブランチを VCS ウィジェットで選択し、アクションのリストから プッシュ を選択します。
コミットをいくつか行ったが、まだリモートブランチにプッシュしたくない場合は、 Git ツールウィンドウ (Alt+9) の ログ タブで、プッシュする最後のコミットを選択し、アクションリストから ここまでのすべてをプッシュ… オプションを選択します。
コミットのプッシュダイアログ が開き、すべての Git リポジトリ(マルチリポジトリプロジェクトの場合)が表示され、最後のプッシュ以降に各リポジトリの現在のブランチで行われたすべてのコミットが一覧表示されます。

ここまでのすべてをプッシュ… オプションを選択した場合は、選択したコミットハッシュまでのすべてのコミットのリストが表示されます。
同期的に制御されていない複数のリポジトリを使用するプロジェクトがある場合、デフォルトでは現在のリポジトリのみが選択されます (同期リポジトリ制御の有効化の詳細については、 バージョン管理設定: Git を参照してください)。
リポジトリにリモートがない場合は、 リモートの定義 リンクが表示されます。 このリンクをクリックして、表示されるダイアログでリモートの名前と URL を指定します。 これは保存され、後で 経由で編集できます (詳細については、 リモートリポジトリを追加するを参照してください)。
プッシュ先のターゲットブランチを変更したい場合は、ブランチ名をクリックします。 ラベルがテキストフィールドに変わり、そこで既存のブランチ名を入力するか、新しいブランチを作成できます。 右下隅にある すべてのターゲットを編集 リンクをクリックして、すべてのブランチ名を同時に編集することもできます。
ローカルのブランチを変更することはできません。選択された各リポジトリの現在のブランチがプッシュされます。
変更をプッシュする前にプレビューしたい場合は、必要なコミットを選択してください。 右側のペインには、選択したコミットに含まれている変更が表示されます。 ツールバーのボタンを使ってコミットの詳細を調べることができます。
コミットの作成者が現在のユーザーと異なる場合、このコミットはアスタリスクでマークされています。
コミット時にタグをプッシュするには、 タグのプッシュ チェックボックスを選択します。
デフォルトでは、このチェックボックスを選択しない限り、
push操作を実行すると、タグはリモートリポジトリに送信されません。選択したブランチに属していないタグ(
git push --tagsに相当)を含む、すべてのタグをプッシュしたい場合は、 すべて を選択します。選択しようとしている選択したブランチに属するタグだけをプッシュしたい場合は、 現在のブランチ を選択します(Git 1.8.3 以降で利用可能な
git push --follow-tagsに相当)。
準備ができたら プッシュ ボタンをクリックし、ドロップダウンメニューから実行する操作を選択します: プッシュ または 強制プッシュ (
git push --force-with-leaseと同等)。これらの選択肢は、現在のブランチが 保護されたブランチ フィールドにリストされていない場合にのみ利用できます(バージョン管理設定: Git を参照)。それ以外の場合は、
push操作のみを実行できます。
プッシュが拒否された場合、作業コピーを更新する
作業コピーが古くなったために push が拒否された場合、 設定 ダイアログの Git 設定ページで 現在のブランチのプッシュが拒否された場合に自動更新する オプションが選択されていなければ、IntelliJ IDEA は プッシュが拒否されました ダイアログを表示します。 以下を実施:
プロジェクトで複数の Git リポジトリを使用している場合は、それらのうちどれを更新するかを指定します。 push が拒否されたかどうかに関係なく、すべてのリポジトリを更新する場合は、 すべてのリポジトリを更新する オプションを選択します。 このオプションをオフにすると、影響を受けるリポジトリのみが更新されます。
このダイアログで選択した更新方法を使用してプッシュが次回拒否されたときに、IntelliJ IDEA が更新手順をサイレントに適用するようにするには、 更新方法の選択を記憶し、今後確認なしで更新する オプションを選択します。
このダイアログを終了すると、 設定 ダイアログの Git 設定ページにある 現在のブランチのプッシュが拒否された場合に自動更新する チェックボックスが選択され、適用された更新方法がデフォルトの方法になります。
更新方法を変更するには、このオプションの選択を解除して、現在のブランチのプッシュが次に拒否されたときに プッシュが拒否されました ダイアログを呼び出し、別の更新手順を適用して、もう一度 更新方法の選択を記憶する オプションを選択します。
それぞれ リベース または マージ ボタンをクリックして更新方法を選択します。
強制プッシュを使用する必要があるのはいつですか?
push を実行すると、リモートリポジトリに欠落している変更があり、リポジトリのローカルコピーで上書きする場合、Git は操作の補完を拒否します。 通常、変更で更新する前に、 プルを実行してリモートと同期する必要があります。
git push --force コマンドはこのチェックを無効にし、リモートリポジトリを上書きすることでその履歴を消去し、データを失うことを可能にします。 内部的には、フォースプッシュを選択すると、IntelliJ IDEA は git push --force-with-lease 操作(より安全なオプション)を実行し、他の人のコミットを上書きしないようにします。プッシュ オプションの詳細は git push を参照してください。
git push --force を実行する必要がある場合は、プッシュされたブランチをリベースしてからリモートサーバーにプッシュしたい場合があります。 この場合、プッシュしようとすると、リモート参照はローカル参照の祖先ではないため、Git は変更を拒否します。 このような状況で pull を実行すると、2 つのブランチのコピーが作成され、次にブランチをマージする必要があります。