一、總體思路:基于 Git 分支管理改動
origin/main
是官方 WebRTC 主干(來自webrtc.googlesource.com
)。my/webrtc
是你自己開發和修改的分支。每次 Google 更新 WebRTC,你從
origin/main
拉新代碼,再把my/webrtc
分支 rebase 到新版本上,解決沖突,繼續維護。
🛠? 二、初始化步驟
1. 安裝 depot_tools 并拉取源碼
git clone https://webrtc.googlesource.com/src webrtc
cd webrtc
gclient sync
這一步生成了 src/
目錄,WebRTC 官方源碼全在這里。
2. 初始化 Git 分支結構
在 src/
目錄中執行:
cd src
git remote rename origin upstream #重命名遠程倉庫
驗證:
git remote -v
# 應該輸出:
# upstream https://webrtc.googlesource.com/src (fetch)
# upstream https://webrtc.googlesource.com/src (push)
git checkout -b my/webrtc? ? #創建自己的分支
upstream
指代 WebRTC 官方主倉庫
my/webrtc
是你自己的開發分支,所有改動都在這個分支做
驗證:
git branch
輸出中帶星號的是當前所在分支,例如:
main
* my/webrtc
?? 三、修改源碼 & 提交
比如你要修改 modules/audio_processing
中某個類:
vim modules/audio_processing/some_class.cc
# 查看修改(還沒 add)
git status
完成后使用正常的 Git 操作提交:
git add modules/audio_processing/some_class.cc
# 再次查看狀態(顯示為 staged)
git status
git commit -m "Fix AEC for low-latency stream"
你可以持續提交多個功能點,每個提交只做一件事。
🔁 四、同步 WebRTC 官方更新的完整流程
每隔一段時間 Google 會發布新版本,你需要更新:
1. 拉取 upstream 的新代碼
git checkout main
git fetch upstream
git merge upstream/main
或者:
git pull upstream main
更新成功后,main
就是最新的 WebRTC。
2. 回到你自己的分支,執行 rebase
git checkout my/webrtc
git rebase main
這步將你所有的改動重新套用在最新版的 WebRTC 上。
🔧 如果出現沖突:
Git 會提示沖突位置,你需要:
# 修改沖突的文件
git add <沖突文件>
git rebase --continue
多次沖突就多次解決,每次 --continue
。
? 五、變更管理技巧
📍查看變更歷史
git log --oneline --graph --all
#只查看自己的修改提交
git log --oneline my/webrtc ^main
📍查看分支差異
git diff main..my/webrtc
可以明確看到你對官方版本做了哪些修改。
🎁 六、備份你的分支(可選)
你可以將 my/webrtc
推送到你自己的 Git 倉庫備份:
git remote add origin_my git@github.com:yourname/webrtc-custom.git
git push -u origin_my my/webrtc
🧩 七、優點總結
項目 | 本地分支法優勢 |
---|---|
🎯 改動隔離 | 改動集中在 my/webrtc ,不污染官方主干 |
🆕 易于升級 | 官方版本更新后可直接 rebase |
?? 適合 patch | 可生成 .patch 分享或自動合并 |
🤝 團隊協作 | 多人合作時更容易管理每人改動 |
🧪 舉個例子:
你要替換官方的 AudioDevice 模塊(模擬設備):
修改文件:
modules/audio_device/fake_audio_device.cc
新建分支并提交修改:
git checkout -b my/webrtc_audio_patch
git commit -am "Replace fake audio device with custom simulator"
后續 WebRTC 更新時:
git checkout main
git pull upstream main
git checkout my/webrtc_audio_patch
git rebase main
如有沖突就解決沖突,繼續。
VS Code 完全可以幫你圖形化完成 git add
和 git commit
的工作,而且比命令行方便很多。
? 一次性設置好后,你只需在 VS Code 中點幾下就能完成修改、提交。
🔧 前提條件:
確保你已經在 VS Code 中打開了 WebRTC 的源碼目錄(例如 ~/webRTC/webRTC_Android/src
)。
🚀 使用 VS Code 提交修改的操作流程:
修改文件(正常在編輯器中編輯代碼即可)
打開 Source Control 面板(快捷鍵
Ctrl+Shift+G
或點擊左側第 3 個圖標)你會看到修改文件列表(和 git status 一樣)
鼠標懸停每個文件,點 ?(stage,也就是
git add
)或者點右上角的 “+” 一鍵全部
add
下方輸入提交信息(commit message)
點擊 ?(commit)按鈕
就等價于
git commit -m "你的提交說明"
? 進階:讓 VS Code 自動幫你完成 git add
(選填)
你可以設置:
json
復制編輯
"git.enableSmartCommit": true
然后 按 Ctrl+Enter
可以直接提交當前所有修改(自動 add)。
設置方法:
打開
File > Preferences > Settings
搜索
git enableSmartCommit
勾選它 ?
? 再進階:添加“自動提交擴展插件”(可選)
如果你想一保存文件就自動提交,可以安裝插件:
🔌 Auto Commit
但一般我們不建議“自動提交”,還是建議手動 review 后再提交,避免提交垃圾或 debug 測試代碼。
總結
操作 | 命令行 | VS Code 圖形界面等價操作 |
---|---|---|
修改代碼 | 編輯器修改文件 | 編輯器修改文件 |
git add | git add xxx | Source Control 面板點 + |
git commit | git commit -m | 填寫信息,點 ? |
git diff | git diff | 點擊文件查看差異(帶顏色) |