Git の競合を解決する
チームで作業しているときに、現在作業中のファイルに誰かが変更をプッシュするという状況に遭遇する可能性があります。これらの変更が重複しない場合(つまり、異なるコード行に変更が加えられた場合)、競合するファイルは自動的にマージされます。しかし、同じ行が影響を受けた場合、Git は無作為に一方を他方を選ぶことはできず、衝突を解決するように求めます。
Git では、プル、マージ、リベース、チェリーピック、変更のスタッシュ解除、またはパッチの適用のいずれかの操作を実行しようとすると、競合が発生する可能性があります。競合がある場合、これらの操作は失敗し、アップストリームバージョンを受け入れるか、バージョンを優先するか、変更をマージするように求められます。

競合ダイアログは、Git レベルで競合が検出されると自動的にトリガーされます。
このダイアログで閉じるをクリックするか、コマンドラインからマージの競合を引き起こす Git 操作を呼び出すと、マージの競合ノードがローカルの変更ビューに表示され、解決するためのリンクが表示されます。

AppCode は、ローカルで競合を解決するためのツールを提供します。このツールは 3 つのペインで構成されています。
左側のペインには、読み取り専用のローカルコピーが表示されます
右ペインには、リポジトリにチェックインされた読み取り専用バージョンが表示されます。
中央のペインは完全に機能するエディターであり、競合の解決結果が表示されます。最初は、このペインの内容はファイルのベースリビジョンと同じです。つまり、競合する両方のバージョンの派生元のリビジョンです。

競合の解決
競合ダイアログのマージ、ローカルの変更ビューの解決リンクをクリックするか、エディターで競合するファイルを選択し、メインメニューから VCS | Git | 競合の解決を選択します。
矛盾しないすべての変更を自動的にマージするには、ツールバーの
( 競合しないすべての変更を適用)をクリックします。また、
( 競合しない変更を左側から適用)と
( 競合しない変更を右側から適用)を使用して、ダイアログの左 / 右部分からの矛盾しない変更をそれぞれマージすることもできます。
競合を解決するには、左(ローカル)バージョンと右(リポジトリ)バージョンに適用するアクション(
を受け入れるか
を無視する)を選択し、中央ペインで結果のコードを確認する必要があります。

中央のペインでハイライトされている競合を右クリックして、コンテキストメニューのコマンドを使用することもできます。左を使用して解決するコマンドと右を使用して解決するコマンドは、片側からの変更を受け入れ、反対側からの変更をそれぞれ無視するショートカットを提供します。

単純な競合(たとえば、同じ行の最初と最後が異なるファイルリビジョンで変更されている場合)では、ワンクリックで変更をマージできる単純な競合を解決
ボタンが使用可能になります。
このような競合は、競合しないすべての変更を適用アクションでは解決されません。なぜなら、それらが適切に解決されていることを確認する必要があるからです。
競合を解決するために、異なるバージョンを比較することも有用な場合があります。
ツールバーボタンを使用して、オプションのリストを呼び出します。ベースは、ローカルバージョンとリポジトリバージョンが由来するファイルバージョン(最初は中央のペインに表示されます)を参照し、垂直方向の中央は結果バージョンを参照します。
中央パネルでマージ結果を確認し、適用をクリックします。
生産性のヒント
- 競合しない変更を自動的に適用します
マージダイアログから適用するように指示する代わりに、競合しない変更を常に自動的に適用するように AppCode を構成できます。これを行うには、IDE 設定 Ctrl+Alt+S のツール | 差分 & マージページで競合しない変更を自動的に適用オプションを選択します。
- 中央ペインで変更を管理する
中央のペインで変更を管理するには、ガターの変更マーカーの上にマウスカーソルを置いてクリックしたときに表示されるツールバーを使用します。ツールバーは、変更された行の以前の内容を示す枠とともに表示されます。

例: 競合しない変更が複数あり、それらのうち 1 つまたは 2 つをスキップする必要がある場合は、競合しないすべての変更を適用アクションを使用してそれらすべてを同時に適用してから、このツールバーの前回保存した状態に戻すアクションを使用して不要な変更を元に戻します。
LF および CRLF の行末に関連する競合の処理
多くの場合、チームで作業し、同じリポジトリに貢献する人々は、異なるオペレーティングシステムを使用します。Unix、Linux、MacOS は LF を使用し、Windows は CRLF を使用して行末をマークするため、行末に問題が発生する可能性があります。
AppCode は、差分ビューアーの行末の不一致を表示するため、手動で修正できます。Git でこのような競合を自動的に解決するには、Windows では core.autocrlf 属性を true に設定し、Linux と MacOS では input に設定する必要があります (詳細については、行末の処理(英語)を参照してください)。Windows では git config --global core.autocrlf true を、Linux と macOS では git config --global core.autocrlf input を実行して、手動で構成を変更できます。
ただし、AppCode は自動的に設定を分析し、CRLF をリモートリポジトリにコミットしようとしている場合は警告し、オペレーティングシステムに応じて core.autocrlf 設定を true または input に設定することをお勧めします。
LF および CRLF 改行コード文字のスマート処理を有効にするには、環境設定ダイアログ Ctrl+Alt+S を開き、左側のバージョン管理 | Git ノードを選択します。CRLF 改行コードがコミットされる前に警告するオプションを有効にします。
このオプションを有効にすると、CRLF 区切り文字を使用してファイルをコミットしようとするたびに、影響を受けるファイルで関連する Git の属性(英語)を設定していない限り、AppCode は改行コードに関する警告ダイアログを表示します(この場合、AppCode は自分のしていることを明確に理解していると仮定し、このファイルを分析から除外します)。
改行コードに関する警告ダイアログで、次のいずれかをクリックします。
そのままコミットは警告を無視し、
CRLFセパレータでファイルをコミットします。修正してコミットを使用して、オペレーティングシステムに応じて
trueまたはinputにcore.autocrlf属性を設定します。その結果、コミット前にCRLF改行コード文字がLFに置き換えられます。
マージ中に競合がどのように解決されたかを後で確認する必要がある場合は、Git ツールウィンドウ Alt+9 のログタブで必要なマージコミットを探し、右側のコミットの詳細ペインでコンフリクトが発生しているファイルを選択し、 をクリックするか、Ctrl+D を押します(詳細は変更がどのようにマージされたかを確認するを参照)。
関連ページ:
リモート Git リポジトリと同期する (フェッチ、プル、更新)
変更をアップストリームにプッシュして作業結果を共有する前に、リモートリポジトリと同期して、プロジェクトのローカルコピーが最新であることを確認する必要があります。これを行うには、次のいずれかの方法があります: 変更のフェッチ、変更のプル、プロジェクトの更新 Git ブランチポップアップは、ブランチにまだフェッチされていない受信コミットがあるかどうかを示します。変更のフェッチ:アップストリームから変更をフェッチすると、リモートリポジトリと最後に同期してから行われたコミットからのすべての新しいデータがロー...
Git ブランチから別の Git へ変更を適用する
Git では、あるブランチから別のブランチへの変更を統合するいくつかの方法があります。ブランチのマージ、ブランチのリベース、ブランチから別のブランチに別々のコミットを適用する (チェリーピック)、コミットから個別の変更を適用する、特定のファイルをブランチに適用する、ブランチのマージ:特定のタスクで機能する機能ブランチを作成し、機能を完了してテストした後、作業の結果をメインコードベースに統合するとします。これを行う最も一般的な方法は、ブランチをマスターにマージすることです。機能ブランチで作業をし...
Git を使用して複数のフィーチャーを同時に処理する
場合によっては、未完成のものを使って別のタスクに切り替えてから、それらに戻る必要があります。AppCode はあなたの作業を失うことなくいくつかの異なる機能に便利に取り組むためのいくつかの方法を提供します: 保留中の変更はスタッシュまたはシェルブできます。スタッシュの変更は、シェルブに非常に似ています。唯一の違いは、パッチの生成方法と適用方法にあります。スタッシュは Git によって生成され、AppCode の内部または外部から適用できます。変更がシェルブされたパッチは AppCode によって生...
パッチを使う
ローカルの変更をコミットする代わりに、.patch ファイルに変更を加えて、後でソースに適用したり、メールで送信したりできます。パッチの使用は、変更を VCS リポジトリにチェックインせずに共有するための便利なメカニズムです。コミットされていない変更からパッチを作成するローカルの変更ビューで、パッチを作成するファイルまたは変更リストを選択し、コンテキストメニューからローカルの変更からパッチを作成を選択します。コミットする変更を選択し、コミットボタンの横にある矢印をクリックしてパッチの作成を選択する...
Git リポジトリの変更を調査する
AppCode では、プロジェクト内のすべての変更を追跡できます。これにより、変更の作成者を特定し、ファイルバージョンまたはコミット間の違いを確認し、必要に応じて変更を安全にロールバックして元に戻すことができます。プロジェクト履歴を確認する:指定したフィルターに一致するプロジェクトソースに加えられたすべての変更を確認できます。プロジェクト履歴を表示するには、Git ツールウィンドウのログタブを開きます。すべてのブランチおよびリモートリポジトリにコミットされたすべての変更が表示されます。マルチリ...