Xcode 8源代码控制不显示冲突

时间:2016-09-19 18:33:58

标签: xcode git version-control xcode8

在Xcode更新到版本8.0(8A218a)之后,当有些文件发生冲突时,我在从Xcode 中删除git存储库的更改时遇到问题。我们都在同一个分支机构工作。

只要没有冲突,一切都很完美,我能够提交,拉动和推动。

但我发现每当我们在某些文件中发生冲突时, Xcode就不再显示冲突了。它只是关闭拉动弹出窗口而不显示冲突解决程序窗口。没有信息或任何东西。

我没看到
  

拉成功

消息。我无法推送我的提交(因为没有提取更改)获取消息:

  

确保已从远程存储库中提取所有更改   再试一次

我尝试使用终端进行拉动,但是冲突的文件被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. 保存更改,提交,推送。

5 个答案:

答案 0 :(得分:2)

我在终端中使用git来解决这个问题,使用了mergetool。 Fisrt,我做了一些改变,但是哎呀,不是最新的:

git fetch origin
git pull origin master

From ssh://gitosis@example.com: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://gitosis@example.com: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://gitosis@example.com:22/projectname
 * branch            master     -> FETCH_HEAD
Already up-to-date.

回答:How to resolve merge conflicts in Git?

答案 1 :(得分:1)

以下操作步骤可解决此问题:

退出Xcode

打开终端并cd到项目的文件夹

git checkout - 。

git pull

查看pull命令的输出。它应该宣布其中一个文件存在冲突。 在外部编辑器(而不是Xcode)中打开此文件。该文件现在应该包含描述冲突的特殊标记(它们是由GIT添加的) 标记看起来像这样:

import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;


public class OpenSansTextView extends TextView {
    public OpenSansTextView(Context context, AttributeSet attributeSet){
        super(context, attributeSet);
        this.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/OpenSans-Regular.ttf"));
    }
}

删除标记并解决冲突

git add [文件名]

git commit -m“[文件名]已解决冲突”

git push

答案 2 :(得分:1)

请更新到Xcode 8.2.1

我遇到了同样的问题。但是一旦我将Xcode版本更新为8.2.1就解决了。

我已经解决了今天所有的冲突,我在Xcode版本8.1中遇到了这些冲突。

答案 3 :(得分:0)

将您的Xcode更新为最新版本确保您的合作伙伴也拥有相同的

答案 4 :(得分:-1)

使用Github仍然在Xcode 8.1中发生。

在终端中执行git fetch,然后再次从Xcode中取出似乎可以解决这个问题。