git用法总结之协作操作
本文面向有基础的git经验的读者
在用git进行协作时, 需要有主仓库, 角色分为拥有者和协作者
对于拥有者而言, 操作和个人仓库一致, 只是需要处理别人的PR(pull request)
而协作者的操作会有所不同, 下面我们主要介绍以协作者的身份如何使用git
简要思路:
- fork拥有者的仓库rep1, 成为自己的仓库rep2
- git clone自己的仓库rep2到本地
- git init之后设置自己的远程仓库rep2信息, 并且设置upstream为rep1
- 进行修改操作(由于源仓库rep1可能随时更改, 需要经常fetch源仓库rep1)
- 修改完之后, 本地执行git merge并commit
- git push到自己的仓库rep2
- 在github上手动提交PR到源仓库rep1
- 等待源仓库拥有者确认PR即可成功
此时代码的流程图如下
graph TD; 源仓库rep1 --1.fork--> 你的仓库rep2; 你的仓库rep2 --2.clone/pull--> 本地仓库local; 本地仓库local --3.push--> 你的仓库rep2; 你的仓库rep2 --4.PR--> 源仓库rep1;
fork并clone到本地
首先需要在github上fork别人的仓库到自己账户, 直接点击即可, 不多赘述
然后需要大家将fork的仓库代码clone到本地, 后面的所有操作都是基于本地代码库来进行操作的
1 | git clone git@your-rep-addr |
设置upstream
然后查看远程仓库信息
1 | git remote -v |
应该只有如下两条
origin https://github.com/your-rep (fetch)
origin https://github.com/your-rep (push)
说明我们没有添加upstream(即源仓库rep1, 为我们fork的仓库rep2的上游仓库)
我们需要手动添加, 如下
1 | git remote add upstream https://github.com/src-rep-addr |
此时就会出现类似下面这种
remote.origin.url=git@your-rep
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.upstream.url=git@src-rep
remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
本地修改
设置好仓库之后, 直接修改并提交即可, 不多赘述
需要注意的是, 也许我们修改的时候源仓库rep1已经变化, 我们需要经常同步源码
1 | git fetch upstream |
此时若rep1有修改, 会新建一个分支upstream/master
(假设远程仓库是master)
可以通过git branch -a
查看
1 | git branch -a |
我们再手动merge即可
1 | git merge upstream/master |
push到自己的仓库并提交PR
注意, 提交之前也请先检查源仓库rep1是否更改, 并执行fetch和merge
然后一键三连
1 | git add . |
接着再回到github上的自己的仓库rep2, 提交PR到源仓库rep1
不出意外的话, 如下显示Able to merge
, 点击Create pull request
即可
等待源仓库的拥有者确认, 就协作成功了
本博客采用 CC BY-NC-SA 4.0 许可。转载请声明来自 Juice's Blog!