Git リポジトリに変更をコミットしてプッシュする
Git リポジトリに新しいファイルを追加するか、すでに Git バージョン管理下にあるファイルを変更し、現在の状態に満足したら、作業の結果を共有できます。 これには、ローカルに コミットしてリポジトリのスナップショットをプロジェクト履歴に記録し、次にリモートリポジトリに プッシュして他のユーザーが使用できるようにすることが含まれます。
Git ユーザー名を設定する
Git は、コミットを ID に関連付けるために、ユーザー名を知っている必要があります。 ユーザー名を設定していない場合、PyCharm は最初に変更をコミットしようとしたときに指定を求めます。
ターミナルを開き、次のいずれかのコマンドを実行します:
マシン上のすべての Git リポジトリに名前を設定するには、
$ git config --global user.name "John Smith"を使用します単一のリポジトリの名前を設定するには、
$ git config user.name "John Smith"を使用します
変更をローカルでコミットする
左側にある垂直方向の コミット ツールウィンドウ(Alt+0 )を開きます。

変更をコミットする準備ができたら、対応するファイルまたは変更リスト全体を選択します。
Ctrl+K を押すと、アクティブな変更リスト全体が選択されます。
バージョン管理外ファイル ノード以下のファイルも選択できます。PyCharm はこれらのファイルを 1 ステップでステージングしてコミットします。
If you want to append your local changes to an existing local commit rather than create a new one, select 修正 and click
to choose the commit you want to modify.
コミットメッセージを入力します。
をクリックして、最近のコミットメッセージのリストから選択できます。
プッシュをする前に、 コミットメッセージを編集することもできます。
コミットチェックを実行したり、コミット後にファイルをサーバーにアップロードしたり、詳細オプションを使用してコミットしたりする必要がある場合は、右下隅の
をクリックするか、 Ctrl+O を押します。

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

チャンクから特定の行のみをコミットする場合は、含める行を右クリックし、 Split Chunks and Include Selected Lines into Commit を選択します。

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

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

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

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

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

ステージングされた変更(PyCharm 外部でステージングされた変更も含む)は、エディターで白抜きの変更マーカーで示されます:

コードチャンクではなく 1 行などの細かな変更、あるいは 1 行に対する複数の変更をステージングするには、 コミット ツールウィンドウ(Alt+0 )で、変更を含むファイルを選択し、コンテキストメニューから Compare HEAD, Staged and Local Versions を選択します。
これにより三分割の 差分ビューアーが開き、左側にはリポジトリのバージョン、右側にはローカルバージョン、中央ペインは変更内容を編集できる機能付きエディターとなります。

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

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