web-dev-qa-db-ja.com

Xcode 8のソース管理で競合が表示されない

Xcodeがバージョン8.0(8A218a)に更新された後、一部のファイルが競合する場合、Xcode onlyからgitリポジトリから変更をプルする問題があります。私たちは皆同じブランチに取り組んでいます。

競合がない限り、すべてが完全に機能し、コミット、プル、プッシュが可能です。

しかし、一部のファイルで競合が発生するたびに、Xcodeが競合を表示しないであることがわかりました。コンフリクトリゾルバーウィンドウを表示せずにプルポップアップウィンドウを閉じるだけです。情報も何もありません。見えない

プル成功

メッセージ。そして、メッセージを取得してコミットをプッシュすることはできません(変更がプルされないため)。

すべての変更がリモートリポジトリから取得されていることを確認して、再試行してください

terminalを使用してプルしようとしましたが、競合するファイルはgitメッセージで混乱し、それらのgitメッセージに沿って同じ競合ファイル内の私の変更や他の人の変更を示します。また、他の人が作業していたファイルは、自分の変更/追加として表示されます。

また、gitを最新バージョン(現在は2.10.0)に更新しようとしました。運もありません。

だから私は自分のコピーを削除して最新のものを複製し、私が行った変更を再適用することになりますが、これは非常に迷惑です。

誰にもこれに対する解決策がありますか?

編集:ここに端末を使用した回避策としてできることを示します:

  1. ターミナルを開いて、Xcodeユーティリティがどこにあるかをシステムに伝えます。

    Sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
    
  2. 「opendiff」をデフォルトのmergetoolとしてグローバルに設定します。

    git config --global merge.tool opendiff
    
  3. Xcode mergetoolを手動で開き、通常の方法で競合を取り除きます。

    git mergetool
    
  4. 変更を保存、コミット、プッシュ。

51
Despotovic

ターミナルでgitを使用してこの問題を解決します。mergetoolが使用されます。最初に、いくつかの変更を行いますが、おっと、最新ではありません:

git fetch Origin
git pull Origin master

From ssh://[email protected]:22/projectname
 * branch            master     -> FETCH_HEAD
Updating a030c3a..ee25213
error: Entry 'filename.c' not uptodate. Cannot merge.

そのため、最新の状態に戻して再試行しますが、競合が発生します。

git add filename.c
git commit -m "made some wild and crazy changes"
git pull Origin master

From ssh://[email protected]:22/projectname
 * branch            master     -> FETCH_HEAD
Auto-merging filename.c
CONFLICT (content): Merge conflict in filename.c
Automatic merge failed; fix conflicts and then commit the result.

そこで、変更点を確認することにしました。

git mergetool

mergetoolを使用して競合をマージします

changes...no...their changes...
git checkout --ours filename.c
git checkout --theirs filename.c
git add filename.c
git commit -m "using theirs"

そして最後の時間を試します

git pull Origin master

From ssh://[email protected]:22/projectname
 * branch            master     -> FETCH_HEAD
Already up-to-date.

回答: Gitでマージの競合を解決する方法?

2
Wayne Chen

次の一連のアクションでこの問題を解決します。

Xcodeを終了

ターミナルを開き、プロジェクトのフォルダーに移動します

git checkout-。

git pull

Pullコマンドの出力を見てください。ファイルの1つに競合があることを通知する必要があります。このファイルを外部エディター(Xcodeではない)で開きます。ファイルには、競合を説明する特別なマーカーが含まれているはずです(GITによって追加されました)。マーカーは次のようになります。

<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt

マーカーを削除して競合を解決します

git add [ファイル名]

git commit -m "[ファイル名]の競合を解決しました"

git Push

1
Arik Segal

Xcode 8.2.1に更新してください

私は同じ問題を抱えていましたが、Xcodeバージョンを8.2.1に更新すると解決します。

Xcodeバージョン8.1で直面していたすべての競合を今日解決しました。

1

xcodeを最新バージョンに更新し、パートナーも同じバージョンを使用していることを確認してください

0
dory daniel