如何使用git 提交作业 收作业

时间:2022-06-11 13:37:39

如何使用git 提交作业 收作业

方法论:

今天就来用一个通俗易懂的自然模型来解释Git的commit,pull和push。不过,我们首先要理解两个名词,remote,local。

remote,翻译成中文,就是远程。为了更便于理解,我们称之为远程(代码)库。

local,本地的意思。同理,谓之本地(代码)库。

把这两个名字回归到一个我们熟悉的自然模型。

remote,就是学校。local,为你自己家。

你写的代码,就是你写的作业。

commit,提交的意思。

pull,直译为拉取,更通俗的讲,获取。

push,推送。

那么每天放学之前,老师布置了今天的回家作业。从布置回家作业,到第二天交回家作业,经历了哪些过程呢。
首先你要知道老师布置了什么作业,作业有什么要求。也就是你需要明确你需要写哪些代码,用什么语言,完成什么具体的需求等等。

然后,你需要把你的回家作业拿回家。这一步,就是pull(获取)。

回家之后,勤奋的你鞋子都没脱,就打开了书包开始写作业。

一小时之后,你写完了作业。

接下来,就是把你写好的作业放在书包里,准备第二天交给在学校的老师。

把写好的作业放在书包里,这一步,就是git commit。

第二天早上,你高高兴兴的去上学,拿出你的作业,交给老师。这一步就是push(提交)。

一个简单的拿作业到交作业的流程就是这个样子的。

不过,Git这个版本控制软件当然没有这么的简单,下一篇文章我将分享如何理解branch,merge,rebase以及如何使用Git进行多人协作。


那么,今天我们来思考,如何用Git让大家共同完成一份作业,也就是写一个程序。

首先,引入Git的branch概念。

之前的举的一个写作业的例子,我们现在来拓展一下这个模型。

学校里不可能只有你一个学生,你的班级里不可能只有你一个学生。

学校,可以理解成你的公司。班级,你所在的部门。学生,软件工程师(程序员)。

每个人都会push自己写好的作业,那么我们如何把不同人写的作业的过程(也就是代码提交的修改,还记得我们的第一节说的吗)清晰的显示出来呢。很简单,把不同人写的作业分开来放呗。

比如,张三写的一本本作业(一次次代码修改)放在一条线上,称这条线为zhangsan,贴一个zhangsan的标签。

李四写的一本本作业(一次次代码修改)放在zhangsan这条线的在地板这个平面的一条平行线上,称这条线为lisi,在这条线上贴一个lisi的标签。。

这分开的两条线,就是两个branch。

张三可以在zhangsan这条线上放上(push)自己的作业,李四可以在lisi这条线上放上(push)自己的作业,两条线之间可以互相不冲突。

当然,最后,老板(或者你的上司)会将作业写的好人的作业放在红榜上进行表扬。那么我们就需要一条线来放置老板认为质量最好的作业,对吧?我们称这条线为master,也就是我们的主线,这里放着写的质量最高的作业。

有了这条线,接下来我们是不是要把最好的作业放到master上呢?

而在Git中,完成这个操作有两种方式。一个是merge,一个是rebase。

我们先来弄清楚merge。

大家应该都已经懂了,我们每次都commit,都是一次代码的改动,那么多次代码的改动,当然可以变成一次改动,也就是将多次commit合并。多个commit与这多个commit合并所得的commit,是等价的。

张三把多次commit合并,变成了一个commit,然后把这次commit,合并到master这个branch上。这个操作就是merge zhangsan into master,这样会导致master这个branch只多一个commit。这个commit可能是多次commit的一次合成。Merge这个操作,就是将zhangsan这个branch相对于master的修改,在master上也进行了一次等价的修改。

那么这样zhangsan和master其实是一样的了,所以我们其实只需要一条线了,对吧。然后在这条线上贴上两个标签,zhangsan和master。

那么什么是相对于master的修改?

这里需要解释一下。假象一下,master这个branch上的作业(代码)是星期六的作业了。zhangsan这个branch在此时和master这个branch是一模一样的。你(比如你是zhangsan)星期天在你的branch commit并push了。那么相对于master这条branch,zhangsan这个branch有了星期日的作业,也就是相对于master有了修改。

那么什么是rebase?

同样的,有了相对的修改。

rebase,与merge不同,不会将多次commit合成一个commit。

而是将相对的修改直接抄过去。比如rebase master on lisi,就是将lisi这个branch相对于master的修改直接抄上去了,而且是一个commit一个commit的抄,那就会在master上留下多次commit。

其后面的本质其实是这样的,先将lisi这个branch相对于master的修改截取下来,保存在一个地方。此时lisi和master是等价的了。也就是一条线2个标签,然后这时把我们刚刚保存起来的修改,一个一个的放在master这条线上。

这就是rebase。


 
实践篇:
 

Git提交作业指南

Git


 

准备

去 https://coding.net 注册一个账号。 
Coding和GitHub是同类型的产品,都是代码托管服务网站,Coding是国内的,GitHub是国外的,作为一个程序员最好两个网站都注册自己的账号!

 

第一步:设置Git的user name和email

邮箱是你注册Coding的邮箱。

 
  1. git config --global user.name "your_name"
  2. git config --global user.email "your_email@example.com"
 

第二步:生成公钥key

打开git bash,执行:

 
  1. ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

邮箱改成自己coding注册的邮箱,一直回车下去。

生成好了大概长这样,如图:

如何使用git 提交作业 收作业

  1. 在你C盘C:\Users\lenovo/.ssh/id_ras.pub这个目录下找到id_ras.pub这个文件

    注意: 
    (1) C盘下Users叫做用户,好好学学英文! 
    (2) 不是每个人的文件夹都是lenovo,也许你的是Administrator或者别的,总之就是你电脑当前用户的文件夹。

  2. 把这个文件用记事本打开,全选复制发给我,或者直接把这个文件发给我,或者发给亚成、班长月影,等待给你加权限,加好了通知你之后继续下一步。
 

第三步:clone项目

如果已经clone过我的项目到你的本地请跳过这一步。

敲黑板.jpg, 仓库地址是:git@git.coding.net:Lxyour/WEB-Task-Store.git,使用git clone命令克隆,具体操作如下:

选择自己的一个盘符,比如E盘或者F盘,我这里选择F盘:

 
  1. cd /f

然后克隆:

 
  1. git clone git@git.coding.net:Lxyour/WEB-Task-Store.git

如果需要你输入(yes/no),当然是输入yes然后回车啊!

 

第四步:本地拷贝你的项目放到仓库

在你对应的盘符打开WEB-Task-Store这个文件夹,拷贝到对应课程期数的作业目录(例如我们本期作业目录是Task-201703),比如我们本次提交HTML作业,将你的项目拷贝到HTML这个目录,你的项目文件名字 前缀加上自己的名字 (比如:Qmeng-miui),不允许文件夹名字出现中文,否则强烈谴责,嗯哼。

注意: 执行任何git命令时请确认你当前窗口所在的目录是不是在项目仓库里,比如我们的项目是WEB-Task-Store

请确认git bash是不是显示如下:

 
  1. lenovo@YJSIT-xxx MINGW64 /f/WEB-Task-Store
  2. $

重点看:/f/WEB-Task-Store,不一定是f盘,前面是你自己电脑的信息,不一定一样。

 

第五步:git pull更新代码

为什么要git pull?首先要知道git pull的作用是更新项目代码,因为别人也提交过了作业,项目的代码被更新了,所以你要先执行git pull,免得你git push的时候会报错!

 

第六步:增加你的代码到仓库

这一步是增加你的代码到本地仓库,目的是让git仓库记录你要刚刚 改动过的代码。

 
  1. git add --all
 

第七步:添加本次提交的信息

这一步是增加你本次提交的信息,描述你本次增加什么功能之类的。

 
  1. git commit -m "写上你本次提交的描述"
  2. // 例如:
  3. git commit -m "Qmeng提交作业"
 

第八步:推送代码

这一步是把你刚刚执行git commit -m提交的代码上传到线上仓库。

 
  1. git pull
  2. git push
 

预览自己的页面

成功推送完你的代码后可以通过下面这个地址访问:

 
  1. https://lxyour.coding.me/WEB-Task-Store/Task-201712/web-blog/改成你的目录/

例如肖大涵的叫做xhan-miui-phone,那就改成这样:

 
  1. https://lxyour.coding.me/WEB-Task-Store/Task-201712/HTML/xhan-miui-phone/
 

最后

不管在学习过程中遇到什么问题先谷歌、先百度、先Bing!

不要问我搜什么,报什么错,就直接复制错误粘贴到谷歌搜索!学会通过***(番羽土蔷)的方式访问谷歌,不会VPN就暂时用Bing,很多报错百度搜不到!

如有疑问,随时在群里请教其他同学。

平时多去搜索git入门以及git flow相关的文章学习并理解这方面的知识。

欢迎步入挨踢(IT)行业,一入IT深似海,选择哪一行应该是你的兴趣,这样你才能在这个事业路上走的更远!加油吧!

参考:https://www.jianshu.com/p/0623cb42fcfa