Git-Debug 回退分支查找问题

本文介绍在多人协作开发中遇到问题时,如何通过创建备用分支,逐步合并代码并检测差异,以确定导致问题的特定提交的方法。

该场景用于你在多人开发中当前版本出现了问题,但是不知道中间的哪次提交导致的,采用回溯的方式去查找问题。

  1. 创建一个指定的你认为没有问题的起点分支,暂定未Debug
  2. 然后逐段采用合并的方式去查看有没有问题
  3. 当查找到问题段以后可以对比版本差异来分析是哪里的问题

wyl@ubuntu:~/NVMP/nvmp$ git status On branch develop_sz0519 Your branch and 'origin/develop_sz0519' have diverged, and have 78 and 350 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Untracked files: (use "git add <file>..." to include in what will be committed) ../compile_commit_id nothing added to commit but untracked files present (use "git add" to track) wyl@ubuntu:~/NVMP/nvmp$ git pull Auto-merging scripts/ams_upload.sh CONFLICT (content): Merge conflict in scripts/ams_upload.sh Auto-merging nvmp/tp_package/wlan/src/wlan_manager/wlan_manager.c CONFLICT (content): Merge conflict in nvmp/tp_package/wlan/src/wlan_manager/wlan_manager.c Auto-merging nvmp/tp_package/wlan/src/wlan_manager/wlan_backup.c Auto-merging nvmp/tp_package/wlan/src/wlan_data_model.c Auto-merging nvmp/tp_package/wlan/src/wlan_adapter/wlan_adapter_rtl.c Auto-merging nvmp/tp_package/wlan/src/wlan_adapter/files/wq9001/is_cal_real.script Auto-merging nvmp/tp_package/wlan/src/wlan_adapter/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/wlan/src/wlan_adapter/Makefile Auto-merging nvmp/tp_package/wlan/src/onboarding_tapo/wifi_control.h Auto-merging nvmp/tp_package/wlan/src/onboarding_tapo/wifi_control.c Auto-merging nvmp/tp_package/wlan/src/onboarding_tapo/soft_ap.h Auto-merging nvmp/tp_package/wlan/src/onboarding_tapo/soft_ap.c Auto-merging nvmp/tp_package/wlan/src/onboarding_tapo/onboarding.c CONFLICT (content): Merge conflict in nvmp/tp_package/wlan/src/onboarding_tapo/onboarding.c Auto-merging nvmp/tp_package/wlan/src/include/wlan_manager.h CONFLICT (content): Merge conflict in nvmp/tp_package/wlan/src/include/wlan_manager.h Auto-merging nvmp/tp_package/wlan/src/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/wlan/src/Makefile Auto-merging nvmp/tp_package/wlan/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/wlan/Makefile Auto-merging nvmp/tp_package/mini_main/src/Makefile Auto-merging nvmp/tp_package/mini_main/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/mini_main/Makefile Auto-merging nvmp/tp_package/main/src/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/main/src/Makefile Auto-merging nvmp/tp_package/main/files/usr/bin/dbg_cmd Auto-merging nvmp/tp_package/main/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/main/Makefile Auto-merging nvmp/tp_package/lib/libxquic/src/transport/xqc_packet_out.c Auto-merging nvmp/tp_package/lib/libxquic/src/transport/xqc_frame.c Auto-merging nvmp/tp_package/lib/libxquic/src/transport/xqc_conn.h Auto-merging nvmp/tp_package/lib/libxquic/src/transport/xqc_conn.c Auto-merging nvmp/tp_package/lib/libxquic/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libxquic/Makefile Auto-merging nvmp/tp_package/lib/libxquic/CMakeLists.txt Auto-merging nvmp/tp_package/lib/libutils/src/ringbuffer.h Auto-merging nvmp/tp_package/lib/libtss/src/tss_tlcp.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libtss/src/tss_tlcp.c Auto-merging nvmp/tp_package/lib/libtss/src/tss_crypto_mbedtls.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libtss/src/tss_crypto_mbedtls.c Auto-merging nvmp/tp_package/lib/libtss/src/Makefile CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libtss/src/Makefile Auto-merging nvmp/tp_package/lib/libtss/Makefile CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libtss/Makefile Auto-merging nvmp/tp_package/lib/libtrk/src/user/libtrk.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libtrk/src/user/libtrk.c Auto-merging nvmp/tp_package/lib/libtrk/src/files/bin/trk_ctl.sh CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libtrk/src/files/bin/trk_ctl.sh Auto-merging nvmp/tp_package/lib/libtpssl/src/mbedtls/api/tcpApi.c Auto-merging nvmp/tp_package/lib/libtpssl/src/mbedtls/api/sslApi.c CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libtpssl/src/mbedtls/api/sslApi.c Auto-merging nvmp/tp_package/lib/libtpssl/src/include/sslApi.h Auto-merging nvmp/tp_package/lib/libtpssl/src/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libtpssl/src/Makefile Auto-merging nvmp/tp_package/lib/libtpssl/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libtpssl/Makefile Auto-merging nvmp/tp_package/lib/libsdm/src/system.c Auto-merging nvmp/tp_package/lib/libsdm/src/slp_model.h CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libsdm/src/slp_model.h Auto-merging nvmp/tp_package/lib/libsdm/src/slp_error.h Auto-merging nvmp/tp_package/lib/libsdm/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libsdm/Makefile Auto-merging nvmp/tp_package/lib/libmpp/src/libcamera/libimage.c Auto-merging nvmp/tp_package/lib/libmpp/src/include/libimage.h Auto-merging nvmp/tp_package/lib/libmpp/src/include/libavdc.h Auto-merging nvmp/tp_package/lib/libmpp/Makefile CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libmpp/Makefile Auto-merging nvmp/tp_package/lib/libmotor/src/ptz_spi/drv/spi_motor_action.c Auto-merging nvmp/tp_package/lib/libmotor/src/ptz_spi/drv/motor_model.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Sctp/Sctp.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Sctp/Sctp.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Sctp/Sctp.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Sctp/Sctp.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Rtp/Codecs/RtpH265Payloader.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Rtp/Codecs/RtpH265Payloader.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Rtp/Codecs/RtpH265Payloader.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Rtp/Codecs/RtpH265Payloader.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Rtcp/RollingBuffer.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Rtcp/RollingBuffer.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/SessionDescription.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/SessionDescription.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/SessionDescription.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/SessionDescription.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/Rtp.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/Rtp.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/Rtp.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/Rtp.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/Rtcp.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/Rtcp.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/Retransmitter.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/Retransmitter.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/PeerConnection.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/PeerConnection.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/PeerConnection.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/PeerConnection/PeerConnection.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Include_i.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Include_i.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/SocketConnection.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/SocketConnection.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/IceAgent.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/IceAgent.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/IceAgent.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/IceAgent.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/ConnectionListener.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/ConnectionListener.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/ConnectionListener.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Ice/ConnectionListener.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Crypto/Tls_mbedtls.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Crypto/Tls_mbedtls.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Crypto/Dtls_mbedtls.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Crypto/Dtls_mbedtls.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Crypto/Dtls.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Crypto/Dtls.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Crypto/Crypto.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/source/Crypto/Crypto.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/samples/kvsWebrtcClientMasterGstSample.c CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/samples/kvsWebrtcClientMasterGstSample.c Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/CMake/Dependencies/libmbedtls-CMakeLists.txt CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/amazon-kinesis-video-streams-webrtc-sdk-c/CMake/Dependencies/libmbedtls-CMakeLists.txt Auto-merging nvmp/tp_package/lib/libkvswebrtcClient/Makefile CONFLICT (add/add): Merge conflict in nvmp/tp_package/lib/libkvswebrtcClient/Makefile Auto-merging nvmp/tp_package/lib/libjson-c/src/json_api.h Auto-merging nvmp/tp_package/lib/libds/files/etc/dsd_convert.json CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libds/files/etc/dsd_convert.json Auto-merging nvmp/tp_package/lib/libdms/src/msg_utils.h Auto-merging nvmp/tp_package/lib/libdms/src/msg_utils.c CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libdms/src/msg_utils.c Auto-merging nvmp/tp_package/lib/libdms/src/mids.h CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libdms/src/mids.h Auto-merging nvmp/tp_package/lib/libaudio/src/audio_utils.h Auto-merging nvmp/tp_package/lib/libaudio/src/audio_utils.c Auto-merging nvmp/tp_package/base-files/files-patch/preinit_ubi_overlay Auto-merging nvmp/tp_package/base-files/files-patch/preinit_ram_overlay CONFLICT (content): Merge conflict in nvmp/tp_package/base-files/files-patch/preinit_ram_overlay Auto-merging nvmp/tools/firmware-utils/src/mkslpfw.h Auto-merging nvmp/tools/firmware-utils/src/mkslpfw.c Auto-merging nvmp/tools/firmware-utils/Makefile CONFLICT (content): Merge conflict in nvmp/tools/firmware-utils/Makefile CONFLICT (rename/delete): nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[servicefs.es deleted in HEAD and renamed in a594a0fdc3a2a859fb8069da44896ba013432059. Version a594a0fdc3a2a859fb8069da44896ba013432059 of nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[servicefs.es left in tree. CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[ubifs.es"->"nvmp/target/linux/nvt98567/generic/images/spinand/scripts/[[ubifs.es" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[ubifs.es"->"nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[ubifs.es" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[tpheader.es"->"nvmp/target/linux/nvt98567/generic/images/spinand/scripts/[[tpheader.es" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[tpheader.es"->"nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[tpheader.es" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[rootfs.es"->"nvmp/target/linux/nvt98567/generic/images/spinand/scripts/[[rootfs.es" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[rootfs.es"->"nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[rootfs.es" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[kernel.es"->"nvmp/target/linux/nvt98567/generic/images/spinand/scripts/[[kernel.es" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[kernel.es"->"nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[kernel.es" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[isp.es"->"nvmp/target/linux/nvt98567/generic/images/spinand/scripts/[[isp.es" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[isp.es"->"nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[isp.es" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[factory_info.es"->"nvmp/target/linux/nvt98567/generic/images/spinand/scripts/[[factory_info.es" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[factory_info.es"->"nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[factory_info.es" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[factory_boot.es"->"nvmp/target/linux/nvt98567/generic/images/spinand/scripts/[[factory_boot.es" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[factory_boot.es"->"nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[factory_boot.es" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[bootloader.es"->"nvmp/target/linux/nvt98567/generic/images/spinand/scripts/[[bootloader.es" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/scripts/[[bootloader.es"->"nvmp/target/linux/ssc30x/ssc308/images/spinand/scripts/[[bootloader.es" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/auto_update.txt"->"nvmp/target/linux/nvt98567/generic/images/spinand/auto_update.txt" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/auto_update.txt"->"nvmp/target/linux/AX620Q/ax620q/images/spinand/auto_update.txt" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/spinand/SPINANDINFO.sni"->"nvmp/target/linux/nvt98567/generic/images/spinand/SPINANDINFO.sni" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/spinand/SPINANDINFO.sni"->"nvmp/target/linux/AX620Q/ax620q/images/spinand/SPINANDINFO.sni" in "a594a0fdc3a2a859fb8069da44896ba013432059" CONFLICT (rename/rename): Rename "nvmp/target/linux/nvt98567/nand/SPINAND.INI"->"nvmp/target/linux/nvt98567/generic/images/SPINAND.INI" in branch "HEAD" rename "nvmp/target/linux/nvt98567/nand/SPINAND.INI"->"nvmp/target/linux/AX620Q/ax620q/images/SPINAND.INI" in "a594a0fdc3a2a859fb8069da44896ba013432059" Removing nvmp/target/linux/AX620Q/image/spinand/src/makePartitionIni.c Removing nvmp/target/linux/AX620Q/image/spinand/partitionInfo.ini Auto-merging nvmp/package/mbedtls/patches/201-config.patch CONFLICT (content): Merge conflict in nvmp/package/mbedtls/patches/201-config.patch Auto-merging nvmp/package/mbedtls/Makefile CONFLICT (content): Merge conflict in nvmp/package/mbedtls/Makefile Auto-merging nvmp/package/mbedtls/2.28.4_patches/204-support-dtls-srtp.patch CONFLICT (add/add): Merge conflict in nvmp/package/mbedtls/2.28.4_patches/204-support-dtls-srtp.patch Removing nvmp/package/bluez/patches/only_exchange_mtu.patch Auto-merging nvmp/package/babassl/Makefile CONFLICT (content): Merge conflict in nvmp/package/babassl/Makefile Automatic merge failed; fix conflicts and then commit the result.
09-20
你当前的 `git pull` 操作失败,出现了**大量合并冲突(merge conflicts)**,涉及多个模块如 `wlan`, `libtpssl`, `libkvswebrtcClient`, `Makefile` 等。这说明: > ✅ **你的本地分支 `develop_sz0519` 和远程分支 `origin/develop_sz0519` 已严重偏离,且双方都修改了相同文件。** --- ### ✅ 回答问题 #### 🔴 你现在面临的核心问题是:**Git 分支严重分裂 + 大量合并冲突** | 数据 | 含义 | |------|------| | `have diverged` | 本地和远程基于不同提交历史发展 | | `78 and 350 different commits` | 你本地有 78 个提交,远程新增了 350 个更新 | | `Automatic merge failed` | Git 无法自动解决冲突,需手动干预 | --- ### 🧩 冲突类型分析 #### 1. **内容冲突(content conflict)** ```text CONFLICT (content): Merge conflict in nvmp/tp_package/lib/libtpssl/src/mbedtls/api/sslApi.c ``` 👉 文件中某些代码块被双方修改 → Git 标记出 `<<<<<<< HEAD` 和 `>>>>>>> commit`。 #### 2. **添加/添加冲突(add/add conflict)** ```text CONFLICT (add/add): Merge conflict in libkvswebrtcClient/... ``` 👉 你在本地新建了一个文件,远程也新建了同名文件(可能内容不同)→ Git 不知道保留哪个。 #### 3. **重命名/删除/重命名冲突(rename/delete, rename/rename)** ```text CONFLICT (rename/delete): ...[[servicefs.es deleted in HEAD and renamed in ... CONFLICT (rename/rename): ...scripts/[[ubifs.es -> two different paths ``` 👉 双方对文件进行了重命名或删除操作,路径不一致 → Git 无法判断意图。 --- ### ✅ 解决方案:分阶段处理 --- ## ✅ 第一步:评估是否真的需要合并? ### ❓你是以下哪种情况? | 场景 | 建议 | |------|------| | ✅ 你是团队开发者,必须同步最新代码 | 继续合并并解决冲突 | | ⚠️ 你只是临时测试,本地改动不重要 | 放弃本地更改,用远程覆盖 | | 💡 你想保留本地功能但适配新架构 | 使用 `git stash` + `rebase` 或新建特性分支 | --- ## ✅ 方案 A:放弃本地修改,完全采用远程代码(推荐用于“本地无关键提交”) 如果你的 78 个本地提交只是调试日志、临时补丁等非核心内容,建议直接放弃: ```bash # 强制回退到远程状态 git reset --hard origin/develop_sz0519 # 清理未跟踪文件(可选) git clean -fd ``` ✅ 这样你就拥有了干净、最新的代码,不会再有编译接口不匹配的问题--- ## ✅ 方案 B:保留本地修改,手动解决冲突(适用于“本地有重要功能”) ### 步骤 1:查看所有冲突文件 ```bash git status --porcelain | grep "^UU" ``` 输出类似: ``` UU nvmp/tp_package/lib/libtpssl/src/mbedtls/api/sslApi.c UU nvmp/tp_package/lib/libtpssl/Makefile ... ``` --- ### 步骤 2:逐个解决关键冲突(优先级排序) #### 🔹 高优先级:影响编译的关键文件 ##### 1. `sslApi.h` / `sslApi.c` —— 导致你之前 `tpssl_svr_init()` 报错的根本原因 打开: ```bash nvmp/tp_package/lib/libtpssl/src/include/sslApi.h nvmp/tp_package/lib/libtpssl/src/mbedtls/api/sslApi.c ``` 查找标记: ```c <<<<<<< HEAD // 你的本地版本 ======= // 远程新版本(很可能包含函数签名变更) >>>>>>> a594a0fdc3a2a859fb8069da44896ba013432059 ``` 📌 **决策建议:** - 如果远程版本增加了参数(如 `tpssl_svr_init(port, cert, key, ctx)`),说明 SDK 升级了; - 你应该选择远程版本,并相应地修改调用它的源码(如 `tmpd.c`); ✅ 最终保留远程定义,删除冲突标记。 --- ##### 2. `Makefile` 类文件(影响构建流程) 例如: ```text nvmp/tp_package/lib/libtpssl/Makefile nvmp/tp_package/main/Makefile ``` 这些文件控制 `.o` 编译、依赖关系、头文件路径等。 📌 **建议:** - 查看远程是否引入了新的 `.c` 文件或宏定义; - 手动将你本地的重要配置合并进去(比如自定义宏 `-DMY_DEBUG=1`); - 使用 `diff` 对比两边差异: ```bash git diff --cached nvmp/tp_package/lib/libtpssl/Makefile ``` --- ##### 3. `libkvswebrtcClient` 中大量 add/add 冲突 这类通常是第三方库升级导致的。 📌 **建议做法:** - 删除本地新增的文件; - 完全使用远程提供的完整 KVS WebRTC SDK; - 因为它是闭源或复杂组件,自行维护极易出错; ```bash # 示例:放弃本地修改,采用远程版本 git checkout --theirs nvmp/tp_package/lib/libkvswebrtcClient/ git add nvmp/tp_package/lib/libkvswebrtcClient/ ``` --- ### 步骤 3:使用 Git 命令辅助解决冲突 #### 使用 `checkout --ours/--theirs` 快速选择版本 ```bash # 保留我的版本(本地) git checkout --ours path/to/file.c # 保留他们的版本(远程) git checkout --theirs path/to/file.c # 添加已解决的文件 git add path/to/file.c ``` #### 批量处理某一类文件(比如所有 Makefile 用远程的) ```bash for file in $(git status --porcelain | grep "^UU" | grep "Makefile" | awk '{print $2}'); do git checkout --theirs "$file" git add "$file" done ``` --- ### 步骤 4:完成合并 当所有冲突解决后: ```bash # 提交合并结果 git commit -m "Merge remote branch 'origin/develop_sz0519' after resolving conflicts" # 推送(如果允许) git push origin develop_sz0519 ``` --- ## ✅ 方案 C:更安全的做法 —— 创建新分支来集成变更 避免污染原分支: ```bash # 基于远程创建新分支 git fetch origin git checkout -b feature/integrate-remote origin/develop_sz0519 # 将你本地的重要修改以 patch 形式应用 git cherry-pick <commit-hash-from-local> # 或导出补丁再导入 cd .. git format-patch -78 HEAD~78 --stdout > my-local-changes.patch cd nvmp git am ../my-local-changes.patch ``` 这样可以在新环境中逐步适配新接口。 --- ### ✅ 清理与验证 #### 1. 清理 staging_dir(防止旧头文件残留) ```bash rm -rf /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/usr/include/sslApi.h make package/tp_package/lib/libtpssl/clean ``` #### 2. 重新编译测试 ```bash make package/tp_package/nsd/compile V=99 ``` 确保不再出现: - `too few arguments to function 'tpssl_svr_init'` - `conflicting types for 'xxx'` --- ### ✅ 总结 | 问题 | 原因 | 解法 | |------|------|--------| | `merge conflict` 太多 | 分支长期未同步 | 评估是否需要合并 | | `tpssl_svr_init` 参数错误 | 头文件升级 | 采用远程新签名 | | 构建失败 | Makefile 冲突或路径变化 | 手动修复或取远程版 | | 第三方库冲突 | 如 KVS WebRTC 更新 | 放弃本地,用远程完整版 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值