分布式开发中的Git使用指南
1. 变更公共历史的影响与处理
在分布式开发中,当你发布一个仓库供他人克隆时,应将其视为静态的,避免重写任何分支的历史。例如,你发布了一个包含A、B、C、D提交的分支仓库,Alice克隆了该仓库并基于此进行开发。此时你若修改了提交C,重新发布仓库后,Alice的开发工作会受到极大影响。她无法向你发送补丁、发起拉取请求或推送更改,因为她的开发基于原提交D,补丁无法应用,拉取合并时也会出现冲突,这是由于非快进推送问题导致的。
不过,这种情况并非无法挽回。Alice可以使用git rebase --onto命令,在将新分支拉取到自己的仓库后,将自己的更改迁移到新分支上。
有时候,拥有动态历史的分支也是合适的。例如,Git仓库中有一个名为pu的提议更新分支,它会经常被回退、变基或重写。作为克隆者,你可以使用该分支进行开发,但要清楚其用途并努力有效使用。发布具有动态提交历史的分支,常见原因是提醒其他开发者某个分支可能的快速变化方向,或者临时提供一个可供其他开发者使用的变更集。
操作步骤:
- Alice解决冲突:
- 拉取新分支到自己的仓库:
git fetch origin - 使用
git rebase --onto命令迁移更改:git rebase --onto <new-branch> <old-base> <your-branch&g
- 拉取新分支到自己的仓库: