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 到本地,后面的所有操作都是基于本地代码库来进行操作的
shell
1 | git clone git@your-rep-addr |
设置 upstream
然后查看远程仓库信息
shell
1 | git remote -v |
应该只有如下两条
origin https://github.com/your-rep (fetch)
origin https://github.com/your-rep (push)
说明我们没有添加 upstream (即源仓库 rep1, 为我们 fork 的仓库 rep2 的上游仓库)
我们需要手动添加,如下
shell
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 已经变化,我们需要经常同步源码
shell
1 | git fetch upstream |
此时若 rep1 有修改,会新建一个分支 upstream/master(假设远程仓库是 master)
可以通过 git branch -a 查看
shell
1 | git branch -a |
我们再手动 merge 即可
shell
1 | git merge upstream/master |
push 到自己的仓库并提交 PR
注意,提交之前也请先检查源仓库 rep1 是否更改,并执行 fetch 和 merge
然后一键三连
shell
1 | git add . |
接着再回到 github 上的自己的仓库 rep2, 提交 PR 到源仓库 rep1


不出意外的话,如下显示 Able to merge, 点击 Create pull request 即可

等待源仓库的拥有者确认,就协作成功了
本博客采用 CC BY-NC-SA 4.0 许可。转载请声明来自 Juice's Blog!






