前言
针对于中大型企业,内部一般都会制定一份关于Git代码管理的使用规范和流程。这样做的目的也是为了更好地维护代码和开发人员之间的相互协作,但同时在代码提交、审查、合并方面就需要更多的时间成本。而在小企业的话,就是更追求效率至上,因此我接下来所总结的Fork公共仓库对于小公司而言可选择性参考。
工作流
首次开发工作流
可参考以下步骤
- 登录github到对应的公共仓库项目fork个人仓库
- 下载 git clone xx.git
- 添加公共仓库代码地址,用于获取最新代码 git remote add main git@xx.git
- 设置不能直接推送代码到公共仓库 git remote set-url --push main no-push
- 创建分支 git checkout -b 1105-device-add
- 在分支开发
- 提交到本地仓库 git add git commit
- 推送到个人仓库 git push origin HEAD
- 在github上提交合并请求Merge Request
方便理解,我大致绘画出以下流程图
- 在之前的分支(如上面的 1105-device-add )基础上创建分支(如 1105-device-delete )后开发
- 开发完毕后,推送到个人远程仓库
- 等待之前的分支合并后,再提合并请求
不相关功能的后续开发(另建分支)
- 切到master分支 git checkout master
- 提取最新代码 git pull main master
- 创建新分支 git checkout -b 1105-order-add
- 新分支上开发
补充说明Fork
Fork 指的就是把在别人盘子 (仓库) 里的菜 (代码) 叉 (Fork) 到自己盘子里。
在实际开发中,我们经常会用到这种方式来进行协同开发。首先一个项目会有一个主仓库,由专人进行维护,每个开发者将主仓库的代码 fork 到自己的远程仓库,然后再将代码 clone 到本地进行开发。开发者在本地新建一个功能分支,在该分支上进行开发,开发完毕后将该分支上的改动 push 到自己的远程仓库中,然后发起一个 pull request (简称 PR) 到主仓库。维护者看到后,会审查 (review) 你的代码,当他觉得没有问题后就会将其合并 (merge) 到主仓库的主分支上
实际案例
fork工作的流程
下面以AVBlog为例来说明:
1. 点击smartyuge/ AVBlog项目的fork
2. 自己的github中就会出现该项目LuckeX / AVBlog
3. 使用git clone把自己仓库中的项目clone到本地
4. 在本地添加upstream的地址(主仓库的远程地址)
使用 git remote add upstream [url]
,其中,upstream是项目url的简称,方便记忆,你可以随便自己起
5. 代码贡献
一般开发新功能或者修复bug都会另新建branch来写代码,然后merge进master分支。
git fetch upstream # 取回upstream远程仓库的所有分支
git rebase master # 将取回的分支中的master分支变基到当前分支(我的当前分支是master)
git checkout -b add_features # 使用当前分支来创建新的分支add_features,并切换到该分支
vim Test.md # 这是我修改的,添加了Test.md文件
git add Test.md #添加到暂存区
git commit -m "add Test.md" #commit 一下
git push origin add_features # 把当前commit推送到origin的add_features分支(如果没有该分支,则会创建)
当完成以上时,打开github会出现:
切换到add_features,点击New pull request:
注意:我们是从master分支创建的基础分支,然后修改代码,所以我们的add_features分支对用的是upstream/master。再点击Create pull request就可以提交pr了(通常上图的右边会有reviewer,需要reviewer approve才能merger你的pr)。
6. 最后就是删除刚刚创建的本地和远程分支了
git branch -D add_features # 删除本地add_features分支
git push origin add_features # 删除远程origin仓库add_features分支,因为这相当于把空的分支push到origin/add_features,就是删除啦
如果有更好的建议欢迎留言,也帮我完善下这篇文章