使用git向开源社区贡献自己的代码
一 创建git仓库
创建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
在.ssh目录下有id_rsa和id_rsa.pub两个文件。
在github上将id_rsa.pub公钥添加到SSH Keys中
在本地上创建一个git仓库
$ git init
关联远程库
$ git remote add origin git@github.com:zhongshanhao/learngit.git
origin是远程仓库的名字,关联远程库后就可以在本地管理git仓库了,这里的仓库是learngit。
二 向开源社区贡献自己的代码
在github上fork项目源代码到自己的远程仓库
在本地clone仓库
git clone git@github.com:zhongshanhao/tidb.git
添加远程仓库分支upstream,该分支是项目源代码所在的地方,不是自己克隆的远程仓库
git remote add upstream https://github.com/pingcap/tidb
拓展
git remote -v # 查看远程仓库配置 git fetch upstream # 将远程仓库的所有更新取回本地 git log upstream/master # 查看远程仓库master分支对应的commit记录 git merge upstream/master # 将远程仓库master与本地分支合并 git log --pretty=oneline --graph
在开发之前先同步远程仓库
git fetch upstream git merge upstream/master # 或者 git pull upstream master
然后在本地仓库创建分支进行开发
git checkout -b my_branch
完成代码开发后,将分支推送到远程仓库
git push origin my_branch:my_branch
在github上选择my_branch分支,点击new pull request创建新的PR
等待pr完成,可以删除该分支
git branch -d my_branch
命令拓展
暂存工作现场
git log upstream/master # 查看upstream/master分支最新的commit # 当当前工作没有提交到本地仓库时,可以将工作现场存储起来 git stash git stash list # 查看暂存区列表 git stash pop # 恢复工作现场,删除暂存区内容 git stash apply stash@{0} # 恢复指定暂存区,且不删除该暂存区内容 git stash drop # 删除暂存区内容
merge出现冲突
git status #定位冲突文件 #修改文件解决冲突 git add . git commit -m "solve conflict"
rebase
变基操作,将my_branch分支变基,即将该分支的分叉出改为最新的master头结点处
git checkout my_branch git rebase master git push origin my_branch:my_branch
变基出现冲突时
git rebase master #出现冲突 #解决冲突 git add . git rebase --continue #继续变基
git push出现冲突时
git fetch origin #拉取远程分支 git merge origin/my_branch #合并对应分支,合并冲突在另外解决 #若有冲突,定位文件,修改文件,提交修改 git status git add . git commit -m "fix conflict" #最后push git push origin my_branch:my_branch
图解


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 572108581@qq.com
文章标题:使用git向开源社区贡献自己的代码
文章字数:638
本文作者:ZSH
发布时间:2019-11-25, 19:23:03
最后更新:2019-12-19, 19:28:46
原始链接:https://zhongshanhao.github.io/2019/11/25/git-practice/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。