我们平时开发的时候都是从主仓库 fork 到自己仓库,然后将 fork 的仓库 clone 到本地进行开发,本地创建对应的开发分支A,开发完成以后再将A分支提交到 fork 的仓库,之后提交 pr 到主仓库。 但是一般而言,我们都是整个团队在开发,等开发完了,需要合并到远程分支的时候,远程分支已经有很多次提交(commit)了,自己的分支已经落后主分支很多版本,切换回主分支的时候就不在最新commit上了。
解决思路
远程仓库主分支为 qbox/develop , fork 仓库主分支orgin/develop
假设当前开发的分支名为 KODO-11324 ,
- 在 fork 仓库主分支拉取最新的代码
- 根据主分支(develop)代码在本地创建新的临时分支,命名为tmp
- 将临时分支(tmp)合并到开发分支 KODO-11324
- 解决合并后的冲突
- 提交开发分支(KODO-11324)并push到fork仓库
- 开发分支(KODO-11324)提交 pr 到主仓库
实现
在 fork 仓库主分支拉取最新的代码
切换到本地主分支
1git checkout orgin/develop
拉取最新代码
1git pull qbox develop
根据主分支在本地创建新的临时分支
1git checkout -b tmp
将临时分支合并到开发分支
切换到开发分支 KODO-11324
1git checkout KODO-11324
临时分支合并到开发分支
1git merge tmp
解决冲突
手动解决冲突
开发分支 push 到 fork 仓库
1git push orgin HEAD
2枚举对象中: 186, 完成.
3对象计数中: 100% (172/172), 完成.
4使用 4 个线程进行压缩
5压缩对象中: 100% (108/108), 完成.
6写入对象中: 100% (134/134), 12.87 KiB | 1.07 MiB/s, 完成.
7总共 134(差异 91),复用 0(差异 0),包复用 0
8remote: Resolving deltas: 100% (91/91), completed with 25 local objects.
9remote:
10remote: Create a pull request for 'KODO-11324' on GitHub by visiting:
11remote: <https://github.com/jimyag/project-name/pull/new/KODO-11324>
12remote:
13To github.com:jimyag/kodo.git
14 * [new branch] HEAD -> KODO-11324
提交 pr
点击 https://github.com/jimyag/project-name/pull/new/KODO-11324 即可提交 pr