Git协作场景

1、日常需求开发

在日常开发中,研发人员通常需要从 develop 分支创建 feature 分支进行功能开发,并在开发完成后将其合并回 develop。常规的操作流程如下:

  1. 创建 feature 分支: 研发人员从 develop 分支创建一个新的 feature 分支:

    git checkout develop
    git checkout -b feature/feature-xxx
  2. 日常提交与定期同步: 开发过程中,研发人员可能会多次提交代码(如每日备份)。为了保持 feature 分支与 develop 分支同步,建议定期执行 git rebase develop,将 develop 分支的最新提交应用到 feature 分支上,解决冲突,避免未来合并时遇到问题:

    git checkout feature-xxx
    git rebase develop
  3. 清理提交历史: 在功能开发完成后,研发人员可以使用交互式 rebase (git rebase -i) 来合并、删除或修改提交信息,保持提交历史简洁。例如,将多次备份提交整合为一个有意义的提交:

    git rebase -i HEAD~10
  4. 合并回 develop: 功能开发完成后,将 feature 分支合并回 develop,并推送远程:

    git checkout develop
    git merge feature-xxx

2、处理紧急Bug

当生产环境出现紧急问题时,需要使用 hotfix 分支进行修复。hotfix 分支从 master 创建,修复完成后合并回 masterdevelop,保证生产环境和开发环境都包含修复。

  1. 创建 hotfix 分支: 从 master 分支创建紧急修复分支:

    git checkout master
    git checkout -b hotfix/hotfix-xxx
  2. 修复 Bug 并提交: 修复紧急问题后,提交代码并推送远程:

    git add .
    git commit -m "Fix urgent bug xxx"
    git push origin hotfix/hotfix-xxx
  3. 合并回 masterdevelop: 修复完成后,将 hotfix 合并回 master 并打上版本标签,发布到生产环境:

    git checkout master
    git merge hotfix/hotfix-xxx
    git tag -a v1.0.1 -m "Release version 1.0.1"

    同时,将修复合并回 develop,保证后续版本中包含该修复:

    git checkout develop
    git merge hotfix/hotfix-xxx

3、选择性合并(git cherry-pick

在某些场景下,可能希望将某个修复提交或功能提前应用到生产环境,而不是等到整个分支合并。这时可以使用 git cherry-pick 挑选特定的提交,将其应用到另一个分支。

  1. develop 中找到要挑选的提交:

    git log --oneline
  2. 切换到目标分支(例如 master),并应用该提交:

    git checkout master
    git cherry-pick <commit-hash>

4、使用 git commit --fixup 修复提交

在开发过程中,可能会在提交代码后发现某些错误或问题需要修复。此时可以使用 git commit --fixup 创建一个修复提交,标记为修复之前的某个特定提交。最后使用 git rebase --autosquash 自动将修复提交合并到原始提交中,保持提交历史整洁。

  1. 找到需要修复的提交

    git log --oneline
  2. 使用 git commit --fixup 创建修复提交

    git commit --fixup <commit-hash>
  3. 使用 git rebase --autosquash 合并修复提交

    git rebase -i --autosquash <base-commit>

5、rebase合并冲突的解决

在进行 git rebase develop 时,可能会遇到与 develop 分支的代码冲突。此时需要手动解决冲突,确保 feature 分支与 develop 分支同步。

  1. 执行 rebase

    git rebase develop
  2. Git 提示冲突: Git 会提示冲突的文件,并插入冲突标记。

  3. 手动解决冲突: 打开冲突文件,选择保留的内容,或者合并两个分支的更改。

    • pick:保留该提交。

    • reword:修改提交信息,但保留提交内容。

    • edit:暂停 rebase,允许你修改提交内容。

    • squash:将当前提交与上一个提交合并,并保留提交信息。

    • fixup:将当前提交与上一个提交合并,但丢弃当前提交的信息。

    • drop:删除该提交。

  4. 标记冲突已解决

    git add <file>
  5. 继续 rebase

    git rebase --continue
  6. 如果需要放弃 rebase

    git rebase --abort
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值