流程总结
A 克隆项目,增加代码
- 在 Github 上 fork 想要参与的项目仓库 Qingtong/pinghu_project, fork后会生成自己的项目 marh/pinghu_project
git clone 自己的项目
git add XX
,git commit -m ""
进行更新,提交git push origin master
推送到自己的远程仓库 marh/pinghu_project- 在 github 上新建
Pull Request
请求- 项目管理员会审核你提交的代码,如果合适就会同意合并,这样你的代码就会出现在源项目中。
当我们睡了一觉起来,Qingtong/pinghu_project 仓库可能已经更新,我们要同步最新代码
B 获取最新代码
给远程的上游仓库Qingtong/pinghu_project配置一个 remote 。
git remote -v
查看远程状态
git remote add upstream 远程仓库qingtong/pinghu链接
- 例如:
git remote add upstream https://xxx.com/Qingtong/pinghu.git
git fetch upstream
将远程所有的分支fetch下来git merge upstream/master
合并非master分支的代码git pull upstream master
可以代替流程B的步骤 2+3。git pull = fetch + merge
此时自己本地的代码就是最新的了,修改完代码后,
重复A流程中的步骤 3-5
fork 流程图
A克隆项目,增加代码
一、找到自己喜欢的项目并fork
公司的项目: Qingtong/pinghu_project
我的项目:marh/pinghu_project
fork后我们的仓库中会多出一个一毛一样的项目,但是所属人不同。
二、克隆自己的代码到本地
切换到目录,克隆自己的项目(marh/pinghu_project): git clone https://XXX.com/marh/pinghu_project.git
可以看到我们的桌面多了一个项目文件夹
三、接下来我们就可以在项目中增加自己的代码了
1、创建自己的分支
为什么我们要创建分支?
假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作。而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
git branch
查看现有分支,我们看到会有一个master分支
git checkout -b dev
或者 git switch -c dev
创建并切换到分支dev,我们再次查看分支,看到已经切换到dev分支
2、修改代码并提交
我们添加一个文件 git.txt
git add .
把工作时的所有变化提交到暂存区git commit -m "add git.txt"
将暂存区里的改动给提交到本地的版本库
四、推送到我们的远程仓库
git push origin dev
将修改推送到仓库项目(marh/pinghu_project)中
可以看到我们的仓库项目中已经有了刚才提交的分支
五、发送合并请求 (Pull Request)
合并请求提交完成
六、管理员视角:同意/拒绝合并其他开发人员提交分支(一般开发人员没有权限)
合并成功后我们就可以看到分支中出现了我们提交的文件
B 获取源仓库(Qingtong/pinghu_project)的最新代码
七、与fork的项目保持同步
当我们睡了一觉起来,Qingtong/pinghu_project 源仓库可能已经更新了代码,我们要保证本地的代码也是最新的然后再开发
1. 给远程的上游仓库Qingtong/pinghu_project配置一个 remote 。
git remote -v
查看远程状态git remote add upstream 远程源仓库qingtong/pinghu链接
例如:git remote add upstream https://xxx.com/Qingtong/pinghu.git
2. 拉去远程原仓库的代码
git pull upstream master
我们也可以:git fetch upstream
将远程所有的分支fetch下来git merge upstream/master
合并非master分支的代码git pull = fetch + merge
此时自己本地的代码就是最新的了,修改完代码后,重复A流程中的步骤 3-5
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。