1.注册github账户
2.签署CLA贡献者许可协议
参考
https://github.com/kubernetes/community/blob/master/CLA.md。
此处选择个人登录。
进入后使用自己的github账号进行登录。
之后按步骤提示进行操作。
有一步让选择作为个人或作为employee登录,选择个人即可
。
之后按步骤提示会让输入姓名,email等信息(email和github绑定的email保持一致),按提示进行操作即可。
最终签署完成后,会收到HelloSign的邮件。
表示签署过程完成。
3.创建issue:
在原项目中进行new issue,描述想进行修改的问题。
4.提交pr
pr操作demo:
此处小明要与小红进行合作,小明需要对小红在GitHub上的的Repository进行fork等一系列的操作。
2.1 将小红在GitHub上的Repository clone到小明的本地电脑
这一步看起来很简单事实上涉及到一个细节,我之前一直都忽略了。
上图:
2.1.1 fork小红在GitHub上的Repository到小明的GitHub
此操作的作用是将k小红在GitHub上的Repository到小明的GitHub,这时小明的GitHub上多了一个fork的Repository;
如下图:
2.2.2
2.1.2 clone小明的GitHub Repository到小明的本地电脑
打开刚才fork的Repository,复制该Repository的SSH使用命令
git clone git@github.com:GaoZiqiang/firstGit.git
clone到小明的本地电脑;
2.2 与小红在GitHub上的的Repository建立新的链接
2.2.1查看当前链接情况
使用
git remote -v
命令查看一下小明的本地Repository与哪些远程仓库建立了链接,你会发现:只与小明在GitHub的Repository建立了链接,很显然没有与小红在GitHub上的Repository建立链接,如下图:
2.2.2 与小红的GitHub上的Repository建立链接
现在使用命令
git remote add upstream https://github.com/timo1160139211/firstGit.git
与小红在GitHub上的Repository建立链接,注意此处的SSH为小红的GitHub上的Repository的SSH;
查看:
2.3 修改Commit
2.3.1 新建工作分支
使用命令:
git checkout -b xiaoming-branch
新建并切换到新建的分支 xiaoming-branch;
使用命令:
git branch
查看当前所在分支。
2.3.2 修改
比如新建文件PRTest;
2.3.3 提交
使用 git add PRTest ,git commit ,git push等系列命令提交到小明的GitHub上的Repository(一定注意,是小明的)
2.4 发起PR(Pull Request)
2.4.1 Comparing changes
a.到小明的GitHub的Repository上点击Pull Requests,再点击New pull requests按钮;
如下图:
b.进入Comparing changes界面。
2.4.2 Create pull request
a.点击Create pull request按钮;
b.填写相关信息,在点击Create pull request按钮即可。
git fork代码后如何同步
1. 克隆代码库
git clone http://Tom@200.200.202.150/Tom/Realtek.git
2. 查看已关联的远程库,此时只有默认关联仓库origin
git remote -v
origin http://Tom@200.200.202.150/Tom/Realtek.git (fetch)
origin http://Tom@200.200.202.150/Tom/Realtek.git (push)
3. 关联到upstream远程仓库
git remote add test-isp http://Tom@200.200.202.150/test-isp/Realtek.git
git remote -v
origin http://Tom@200.200.202.150/Tom/Realtek.git (fetch)
origin http://Tom@200.200.202.150/Tom/Realtek.git (push)
test-isp http://Tom@200.200.202.150/test-isp/Realtek.git (fetch)
test-isp http://Tom@200.200.202.150/test-isp/Realtek.git (push)
4. 抓取upstream
git fetch test-isp
5. 查看抓取到的upstream远程仓库的修改历史,了解需要合并的内容。
master…origin/master 语法是一个日志过滤器,要求 Git 只显示所有在后面分支(在本例中是
origin/master)但不在前面分支(在本例中是 master)的提交的列表。
git log --no-merges master..test-isp/master
6. 合并代码
git merge test-isp/master
7. 推送到自己的远程库中,更新代码
git push origin master
————————————————
遇到的一些问题解决方案
1.我在使用mac的时候遇到,本地git存在原有账户,现在需要使用另一个账户提交代码时,push代码push不上去,可以尝试如下命令
git remote set-url origin https://username@github.com/username/repo-name.git
但是这样的解决方法,每次一个新的项目都需要执行
2.LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
奇怪的错误,好像跟代理有关,但是我没有配置任何代理,。。。。重启解决了,经常偶现,彻底解决方法暂时未找到。
3.有些项目做pr的时候需要签名,这就需要我们在commit时做如下贡献
当你提交时,只需使用:
git commit-s
要么
gitcommit--signoff
或者你可以在提交消息的末尾写一行,它们自己由提交的正文中的空行分隔:
Signed-off-by: Your Name
如果您已经有提交,请使用git commit -s -amend来添加上述注销行。
或者,如果要将其作为补丁或补丁系列发送,您可以使用git format-patch -s或–signoff将补丁添加到修补程序本身,而无需修改提交。
4.有时间你的pr很久之后才会被合并,此时会要求你rebase一下代码,
5.最近遇到的问题,通过账户名密码无法登录。查找的的解决方法为下
1在github 个人的Settings Developer settings 下Developer settings 生成对应的token
2.设置token,这里分成两种情况,代码已经有的,远程仓库地址添加token;没有代码的,在git clone添加token
修改远程仓库添加token
git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git
git clone 添加token
git clone https://<your_token>@github.com/<USERNAME>/<REPO>.git
添加好token就可以推送和下拉代码了