如何使用Git合并工具解决react-native-git-upgrade的冲突?

4

我使用react-native-git-upgrade来升级我的React Native项目,这个过程留下了一些冲突分隔符需要我现在解决:

                DEAD_CODE_STRIPPING = NO;
<<<<<<< ours
            HEADER_SEARCH_PATHS = (
                "$(inherited)",
                /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
                "$(SRCROOT)/../node_modules/react-native/React/**",
                "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
                "$(SRCROOT)/../node_modules/react-native-video",
            );
            INFOPLIST_FILE = "MyAwesomeApp/Info.plist";
=======
                INFOPLIST_FILE = MyAwesomeApp/Info.plist;
>>>>>>> theirs
            LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
            OTHER_LDFLAGS = (
                "$(inherited)",
                "-ObjC",
                "-lc++",
            );

但是 Git 并没有显示这些冲突:git status 没有显示任何“未合并路径”。而 git mergetool 则会提示“没有需要合并的文件”。因此,我只能通过手动删除/保留行来解决这些冲突。是否有一种方法可以在这里使用 Git 合并工具呢?
2个回答

5
react-native-git-upgrade是一种非侵入式的工具,它会创建一个临时的Git存储库而不是使用现有的存储库。因此,这些文件被临时存储库所识别为冲突,而不是你自己的存储库。
这个临时的本地Git存储库位于系统临时目录中。在运行“react-native-git-upgrade --verbose”命令时,可以读取其路径: enter image description here 如果您想要使用合并工具,就必须使用临时存储库。使用env变量指向该文件夹中的Git存储库,就像react-native-git-upgrade一样。
对于CLI合并工具:
$ GIT_DIR=/var/folders/vx/jg1x1gd532167rd6ts8y8d2dgp5w7m/T/react-native-git-upgrade/.gitrn git mergetool

不要忘记添加名为.gitrn的仓库目录!

请注意,临时目录的路径是与机器有关的,这就是为什么您需要先运行react-native-git-upgrade --verbose以获取您自己的路径。


当我使用正确的路径运行命令时,会出现以下错误信息:

此消息显示是因为未配置“merge.tool”。请参阅“git mergetool --tool-help”或“git help config”以获取更多详细信息。 'git mergetool' 现在将尝试使用以下工具之一: tortoisemerge emerge vimdiff 没有文件需要合并

- rex
这是一个普遍存在的问题。请参考这个问题了解如何解决合并冲突。 - ncuillery

0
我在升级后遇到了同样的问题。然后我发现 Visual Studio Code 有一个名为 GitLens 的扩展,它允许您解决合并冲突,而不管存储库的状态如何。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接