推送电子书项目到GitHub:入门Git后的练手

一、本文目标
搞IT的,应该无人不知晓“GitHub”, 因此将项目代码托付给GitHub网站管理再合适不过了。
(备注:GitHub只是个网站,而Git才是管理代码的(Git——“分布式版本控制系统”) )
将电子书项目推送到Github网站,方便后面电子书项目的更新,也方便大家下载学习交流。
为啥不推送“数码相框”那个项目呢?
因为这个推送只是作为我Git初学者的练手项目,后面再推送数码相框到GitHub。
(如果你懂Git基本操作,但没实战过,那这篇文章很适合你。如果你是个GIt高手,请绕道,给小白留条路,哈哈)
二、建立本地仓库和远程仓库
先在GitHub网站建立个远程仓库,如下所示

GitHub建立仓库
GitHub设置仓库信息

备注:我并没有Add.gitignore  和 Add a license. 这两个其实很重要,我并没有选择是因为想留下埋伏,
(注:这些后期都可以完善的) 留到后面讲解Git高级特性时再讲解 : )
此外,新建GitHub仓库,不应该选择那个选项:Initialize this repository with a README, 后面看我掉坑就知道了 : (

远程仓库建立完成

这样,就建立了一个名为“Implement-e-book-on-s3c2440-development-board”远程仓库。
那本地仓库如何建立呢?看下图

本地建立e-book仓库

三、同步后推送本地仓库代码到远程仓库
上面建立了两个仓库——本地仓库+远程仓库,但这两个仓库没有任何瓜葛,因此需将这两个仓库建立联系
即同步,然后把本地的电子书代码推送到远程仓库。
看下图的同步和推送工作:

同步本地仓库到远程仓库,出现error

这里就掉坑了,因为之前选择了生成README,导致本地仓库和远程仓库不匹配。

事情并没有那么顺利,不慌,遇到这错误肯定我不是第一人。网上很快就找到了解决办法
只需先合并远程仓库到本地即可,如下图

合并代码解决一个error

接着,继续执行之前失败的命令:git push -u origin master 推送本地仓库到Github。
还是掉坑,如下图

推送时权限有问题

因此,网上找到一篇文章:https://blog.youkuaiyun.com/qq_36181310/article/details/88760623
写得很好,下面按他的指导解决这个错误,如下所示

生成密钥
GitHub粘贴公钥

上面可概括为两步:1)生成密钥(公钥和私钥)到本地   2)将本地公钥复制到GitHub的ssh密钥

ok,ssh密钥搞定之后,重新执行:git push -u origin master 推送本地仓库到Github。
这次没问题了。但是发现,GitHub远程仓库没有本地仓库的代码,即没推送到GitHub的远程仓库,

再次推送并没有推送代码到GitHub

这时候再push推送会发现:已经是最新了,这是为啥呢?如何推送本地代码呢?还是看下图

代码没推送到的解决办法

一路曲折,终于OK了,以后每次本地仓库修改的代码就可实时推送到GitHub了。
举个例子:修改了main.c , 先git add main.c  放到暂存区,确让没问题就可git commit -m "<注释信息>"提交暂存区的内容
最后 git push 即可推送到远程仓库 以 实时更新项目进展,这也是多人协作开发的好助手,免去了项目版本管理的麻烦。

当然,Git还有很多优越的特性这里没讲,后面遇到问题时再补充。
四、总结
本文主要讲解了如何建立本地仓库和远程仓库,并把本地仓库与远程仓库同步后推送代码到GitHub远程仓库。
整个处理流程:
1. GitHub建立一个仓库 
2. 本地进入项目目录下后执行git init 初始化并建立一个本地仓库(生成的.git目录负责追踪)
3. 执行git remote add origin git@github.com:zmk0214/Implement-e-book-on-s3c2440-development-board
   关联本地仓库与远程仓库
4. 执行:git push -u origin master 推送本地master分支代码
   推送失败,发现本地mster与远程master不相同,便执行git pull --rebase origin master先进行代码合并以保持一致
 5. 再次执行推送命令,发现权限不够导致推送失败,是因为本地主机未认证GitHub合法身份(ssh连接需要密钥认证)
 6. 接着,1 生成密钥(公钥和私钥)到本地用户的.ssh目录   2. 将公钥内容复制到Github以保证ssh连接时,本地主机
     能用生成的私钥匹配GitHub的公钥,以此信任GitHub的合法身份。
 7.之后,再次执行推送命令,没有错误。但是发现本地master分支并没有合并/推送到远程仓库的Master分支
 8. 执行 git add -A  -----> git commit -m "firset version" -----> git push  才把代码推送到了远程仓库,实现同步。

  整个流程下来,可谓“一波三折”。不过掉坑才能成长啊,对吧。
  
  最后,代码是托付给GitHub远程仓库管理了。但实际上,还有很多问题呢。比如上传的代码中有 .o 文件,
  如何过滤呢?再者,多人协作时,想在另一分支干活,最后合并分支到master分支,如何做呢?等等
  这些留到后面再讲, 敬请期待呀 :  )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值