如何使用 Git 合并工具解决 react-native-git-upgrade 冲突?
How to use a Git merge tool to resolve react-native-git-upgrade conflicts?
我在我的项目上使用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
没有显示任何 "Unmerged paths"。 git mergetool
失败并显示消息 "No files need merging"
所以我不得不通过 removing/keeping 行手动找出它们。有没有办法在这里使用 Git 合并工具?
react-native-git-upgrade 是非侵入式的,它会创建一个临时 Git 存储库而不是使用现有存储库。所以这些文件被这个临时存储库看到冲突,而不是你的。
此临时本地 Git 存储库位于系统临时目录中。 运行宁react-native-git-upgrade --verbose
时可以读取路径:
如果您希望能够使用合并工具,则必须使用临时存储库。使用 env var 指出此文件夹中的 Git 存储库,就像 react-native-git-upgrade 一样。
对于 CLI 合并工具:
$ GIT_DIR=/var/folders/vx/jg1x1gd532167rd6ts8y8d2dgp5w7m/T/react-native-git-upgrade/.gitrn git mergetool
不要忘记附加名为 .gitrn
的 repo 目录!
请注意,临时目录的路径是特定于机器的,这就是为什么您必须先 运行 react-native-git-upgrade --verbose
才能获得您的。
我 运行 升级后陷入同样的混乱。然后我发现 Visual Studio Code 有一个名为 GitLens 的扩展,它允许您解决合并冲突,而不管 repo 的状态如何。
我在我的项目上使用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
没有显示任何 "Unmerged paths"。 git mergetool
失败并显示消息 "No files need merging"
所以我不得不通过 removing/keeping 行手动找出它们。有没有办法在这里使用 Git 合并工具?
react-native-git-upgrade 是非侵入式的,它会创建一个临时 Git 存储库而不是使用现有存储库。所以这些文件被这个临时存储库看到冲突,而不是你的。
此临时本地 Git 存储库位于系统临时目录中。 运行宁react-native-git-upgrade --verbose
时可以读取路径:
如果您希望能够使用合并工具,则必须使用临时存储库。使用 env var 指出此文件夹中的 Git 存储库,就像 react-native-git-upgrade 一样。
对于 CLI 合并工具:
$ GIT_DIR=/var/folders/vx/jg1x1gd532167rd6ts8y8d2dgp5w7m/T/react-native-git-upgrade/.gitrn git mergetool
不要忘记附加名为 .gitrn
的 repo 目录!
请注意,临时目录的路径是特定于机器的,这就是为什么您必须先 运行 react-native-git-upgrade --verbose
才能获得您的。
我 运行 升级后陷入同样的混乱。然后我发现 Visual Studio Code 有一个名为 GitLens 的扩展,它允许您解决合并冲突,而不管 repo 的状态如何。