跳到主要内容
🔍

代码示例: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(正文 ③/⑦ 有说明,不要在本清单试验)