SourceTree + Beyond Compareを使用して、Gitの競合を解決します



Sourcetree Beyond Compare Resolve Git Conflicts



ビジュアルSourceTreeプラグインbeyondCompareとの競合を解決します

1.建設紛争



(1)server.xmlファイルの40行目の内容を変更し、プッシュをリモートライブラリに送信します

(2)他の40の作業ディレクトリも、ファイルの下位40行を変更し、リモートライブラリにプッシュしました。



プッシュすると、次の問題が発生します。

画像

git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags origin master:master Pushing to root@xxxxx:xxxxx/test.git To root@xxxxx:xxxxxx/test.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'root@xxxxx:xxxxxx/test.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. Completed with an error, see above.

画像



プロンプトリモートが更新されました。ローカルバージョンが低すぎます。最新のコードをプルしてから、もう一度プッシュしてください。

(3)次に、以下に示すように、プルコードは競合に対してローカルになります。

2、外部比較ツールを構成します

(1)ソースツリーを開く---->ツール---->オプション。

(2)以下に示す構成によると:

(3)ユーザーディレクトリにあります .gitconfig ファイルが開かれます(例:C: Users %username%。gitconfig)。

以下の情報を追加して保存してください。

画像

[user] Name = configured git account Email = Mailbox when configuring git [core] autocrlf = true [difftool 'sourcetree'] cmd = 'd:/Program Files (x86)/Beyond Compare 3/BComp.exe' '$LOCAL' '$REMOTE' [mergetool 'sourcetree'] cmd = 'd:/Program Files (x86)/Beyond Compare 3/BComp.exe' '$LOCAL' '$REMOTE' '$BASE' '$MERGED' trustExitCode = true [diff] tool = sourcetree [difftool] prompt = false [merge] tool = sourcetree [mergetool] prompt = false

画像

3.競合を解決します

(1)ローカルコピーの一時ファイル---->右---->競合の解決---->外部マージツールを開きます。

Byynd Compareソフトウェアの起動にはしばらく時間がかかります。その後、次の情報が表示されます。

(2)次に、Beynod Compareツールを閉じると、競合する感嘆符がなくなり、1つになります。 .orig ファイルが生成されます。次に、それを選択します .orig ファイル、右クリック---->削除。

次に、コミットしてプッシュします。

追加:競合が発生する可能性のある別の状況

プルは次のように表示されます。

画像

it -c diff.mnemonicprefix=false -c core.quotepath=false pull local-server-aggregator develop /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell:3: warning: Insecure world writable dir /usr in PATH, mode 040777 From 192.168.0.200:weitoo/server-aggregator * branch develop -> FETCH_HEAD Updating b0c5c94..40cef3b error: Your local changes to the following files would be overwritten by merge: server/conflict.file Please, commit your changes or stash them before you can merge. Aborting

画像

上記のメッセージは、サーバー上で新しいコードをプルするために、ローカルの変更をステージングする必要があることを示しています。

(1)次に、一時的な処理を続行します。

  • [保存(スタッシュ)]をクリックします。名前だけです。これは、最後のサーバーバージョンとローカルの変更の違いです。削除しないでください。マージは成功し、その後削除されます。

  • プルはサーバーコードをプルします。今回は、ローカルコードがサーバー上のコードになります。

  • [ストレージ]-> [アプリケーションストレージ領域]をクリックします。今回は、以前の変更をローカルにマージします。今回は、以下に示すように、競合が発生します。
git -c diff.mnemonicprefix=false -c core.quotepath=false stash apply root@xxxxx{0} Auto-merging server/server.xml CONFLICT (content): Merge conflict in server/server.xml

(2)上記の競合解決方法と同様に、競合ファイルを表す感嘆符がソースツリーに表示されますが、少し異なります。左端のバージョンがリモートバージョン、中央がリモートバージョン、最後がリモートバージョンです。ローカル変更。

これは、操作方法に関連しています。最初にローカル変更を一時的に保存し、最初にリモートコードをプルします。今回はローカルがリモートコードになり、最後に一時ストレージとマージして、リモートがローカル変更になります。

(3)上記の競合の処理方法と同じです。

転送元: https://www.cnblogs.com/yufeng218/p/6523422.html