如何pull request合作开发
第一种(简单)
第一种方法指令少简单易懂
- 首先Fork你想要提pr的仓库,这个时候你的账户就会多一个被Fork仓库的副本
- 克隆你的副本仓库
git clone git@github.com:Found-404/delet.git
-
在你Fork的本地仓库创建分支,分支名称按照开源项目的规定
git checkout -b 分支名称
快捷创建分支并进入分支
附:
git checkout 分支名
切换分支 -
修改代码,修改bug,添加功能…
-
提交仓库
git add .
git commit -m "提交描述性文本"
git push -u origin 分支名称
将本地仓库提交到远程仓库的 ”分支名称“ 分支(会自动创建)
-
此时你的仓库会提示有新的推送,并且多了一个新的分支,点击 pull request
- 选择提交的目标和合并者
- 被合并的仓库地址以及分支(开源项目都有分支命名规范)
- 要求合并的仓库地址和分支(肯定要选择你创建的新分支咯)
- 注意:目标分支要明确
- 填写标题和描述性文本,注意规范!
- 提交pr,等待作者审核同意合并,同意之后会返回邮件
- 如果作者合并了你提交的代码,那么说明你的代码是最新的。但是如果在你提交之前,又有一个人也提交了pr,导致原仓库和你Fork的仓库不同步,你就需要将原先仓库和本地仓库手动同步一下
- 此时你Fork的仓库就是最新的了
- 当然,你本地电脑上的还是老的仓库,这时你就可以
git pull
将远程同名分支的最新代码拉取下来,注意如果有冲突文件,它会自动标识
第二种
第二种方法主要解决原开源仓库和本地不同的问题,建立了主repo的远程源
有点小饶,但是能够理解
紧接着第一种方法的第2步,克隆之后:
-
git remote -v
可以看到有两个源,并且指向的是你Fork的仓库 -
其实第二种的操作就是将源项目的源地址也绑定到本地仓库上
-
执行
git remote add upstream URL
- upstream 自定义名字,类似于origin
- URL 源项目的地址 也就是被你Fork的仓库的地址(可不是你仓库里的地址)
- 此时
git remote -v
可以看到有两个绑定源
-
如果你想要同步原主仓库的更新,可以做如下操作将原仓库代码拉取下来并与本地代码进行合并:
git fetch upstream
可以看到原仓库有新的提交操作git merge upstream/main
同步代码到本地, main代表源仓库main分支 (有问题见错误汇总)- 其实也可以直接执行
git pull demo main:你当前的分支
或者git pull demo main
简写 - 注意:同步的代码是同步到本地仓库你执行代码分支上,也就是说,你在demo2分支执行命令,那么拉下来的代码是在demo2分支上,如果你切换回main分支,那么文件又会回到初始状态
-
此时你的demo2分支已经是最新的代码(如果你没有创建分支,直接在mian中拉取最新代码,我希望你后续的操作能在一个新分支中进行,也就是接着第一种方法的第3步创建进入分支)
-
编写代码,修改bug…
-
提交仓库
git add .
git commit -m "提交描述性文本"
git push -u origin 分支名称
将本地仓库提交到远程仓库的 ”分支名称“ 分支(会自动创建)
-
此时你的仓库会提示有新的推送,并且多了一个新的分支,点击 pull request
- 选择提交的目标和合并者
- 被合并的仓库地址以及分支(开源项目都有分支命名规范)
- 要求合并的仓库地址和分支(肯定要选择你创建的新分支咯)
- 注意:目标分支要明确
- 填写标题和描述性文本,注意规范!
- 提交pr,等待作者审核同意合并,同意之后会返回邮件
错误汇总
本地仓库与远程不同步
执行git pull
拉取远程同名分支最新代码到本地
合并分支描述信息
可以不管(直接下面 3 , 4 步),如果要输入解释的话就需要:
- 按键盘字母 i 进入insert模式;
- 修改最上面那行黄色合并信息,可以不修改 // 黄色内容为默认的合并信息;
- 按键盘左上角"Esc";
- 输入":wq",进行修改后保存退出,然后按回车键即可