代码示例:0.3.3 分支与合并
全部示例均标注编译命令、适用环境与实测状态;完整验证记录见《03.5-代码编译运行验证记录》。
examples/git-branch-merge-commands.txt · Git 分支与合并命令清单(建分支→快进合并→制造冲突→解决冲突)
# 0.3.3 分支与合并命令清单(本机实测 git 2.53.0 / Windows 11;在 $env:TEMP 临时目录执行,实验后可直接删除) # 0. 建立实验仓库并完成主分支初始提交 git init git config user.name "课程实验" git config user.email "lab@example.com" # Windows PowerShell: Set-Content -Encoding UTF8 notes.txt "第 1 行:主线内容" # Linux / Mac: echo "第 1 行:主线内容" > notes.txt git add notes.txt git commit -m "init: notes.txt" # 1. 建立 dev 分支并切换(两步;一步到位可用 git checkout -b dev 或 git switch -c dev) git branch dev git checkout dev # 2. 在 dev 上改文件并提交 # Windows PowerShell: Add-Content -Encoding UTF8 notes.txt "第 2 行:dev 分支新功能" git add notes.txt git commit -m "feat: add line 2 on dev" # 3. 合并回 main:main 原地未动,git 直接快进(Fast-forward),不产生合并提交 git checkout main git merge dev git log --oneline --graph --all # 4. 制造冲突:main 与 dev 分别把第 2 行改成不同内容并各自提交 # main 上:把第 2 行改成 "第 2 行:主线修改" 后 git add notes.txt git commit -m "fix: main edits line 2" # dev 上:把第 2 行改成 "第 2 行:dev 修改" 后 git checkout dev git add notes.txt git commit -m "feat: dev edits line 2" # 5. 合并出现冲突(同一行两边都改了,git 无法自动合并) git checkout main git merge dev # 此时用编辑器打开 notes.txt,会看到 <<<<<<< HEAD / ======= / >>>>>>> dev 冲突标记 # 6. 手动解决冲突:把文件改成想要的最终内容(删除全部冲突标记),然后 add + commit 完成合并 # Windows PowerShell: Set-Content -Encoding UTF8 notes.txt "第 1 行:主线内容\`n第 2 行:最终合并内容(保留两侧意图)" # Linux / Mac: printf "第 1 行:主线内容\n第 2 行:最终合并内容(保留两侧意图)\n" > notes.txt git add notes.txt git commit -m "merge: resolve conflict between main and dev" # 7. 查看合并后的图形历史(合并提交有两个父提交) git log --oneline --graph --all # 8. (了解)rebase 只对"本地未推送"分支使用;公共分支一律 merge(正文 ③/⑦ 有说明,不要在本清单试验)