如何使用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注册的邮箱,一直回车下去。

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

  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

如何使用git 提交作业 收作业的更多相关文章

  1. git 提交作业流程

    git 提交作业流程,主要分为4个步骤 # 拉取远程git最新版本到本地,每次都可以先执行这条命令,因为会有其他同学更新仓库 git pull # add需要上传的文件,那个文件修改或者新增的,就ad ...

  2. git提交时支持文件名大小写的修改

    在windows环境下,git提交文件时,默认对文件名大小写不敏感,若修改了文件名字的大小写,可能会导致提交时没有记录,文件名修改不成功.网上搜集了几种解决方法,现总结下: 1. 修改git conf ...

  3. 怎么修改git提交过的内容

    git修改历史提交   Git使用amend选项提供了最后一次commit的反悔.但是对于历史提交呢,就必须使用rebase了. git rebase -i HEAD~3 表示要修改当前版本的倒数第三 ...

  4. Git提交引用和引用日志

    转载自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.5-Git%E6%8F%90%E4%BA%A4%E5%BC%95%E7%94%A8%E5%9 ...

  5. 设置Git提交时不用输入用户名和密码

    在用git提交时代码至github上时每次都要输入用户名和密码,当提交操作较为频繁时非常不方便,可以按下文中的介绍,设置成提交时不用输入用户名和密码: 1.在当前库下,已经运行过 git remote ...

  6. 解决git提交问题error: The requested URL returned error: 403 Forbidden while accessing

    git提交代码时,出现这个错误"error: The requested URL returned error: 403 Forbidden while accessing https&qu ...

  7. 写得好 git 提交信息

    编写好 git 提交信息 提交信息 我们作出答复,更改将提交相关信息,这些信息通常被认为是重要的信息会小心留下应该离开,你为什么需要这个提交实例,提交解决任何问题. 我们需要良好的信息组织,虽然后来, ...

  8. 老鸟都应该注意的git 提交规范

    不知道大家有没有看过自己项目的git 提交信息-----我看过好多次 ,不忍直视  然后提醒一起的小伙伴 :大家规范点 信息要详细, 过段时间再看下 ,还是一样. 相信很多猿都有这样的感受,对于垃圾的 ...

  9. git学习四:eclipse使用git提交项目

    支持原创:http://blog.csdn.net/u014079773/article/details/51595127 准备工作: 目的:eclipse使用git提交本地项目,提交至远程githu ...

随机推荐

  1. PYTHON如何降级?

    到/usr/bin里面ls -l python*看看里面有多个版本的,把python2.6链接到python就可以了1.先把原来的删掉 rm python2.ln -s /usr/bin/python ...

  2. Five Steps to Avoiding Java Heap Space Errors

    来自:https://www.mapr.com/blog/how-to-avoid-java-heap-space-errors-understanding-and-managing-task-att ...

  3. http协议版本历史

    1.http 0.9 2.http 1.0 3. http 1.1 4.http 2.0 推送:主动发送js.css推送到浏览器. 二进制流:可以并行发送数据. 2019.3.18补充: (1)htt ...

  4. MVC+WCF框架下广告位管理——文件上传

    广告位是站点中不可缺少的内容之中的一个.也是能直接给我们站点带来经济收益的内容之中的一个. 好的广告位不仅不会强宾压主,而会为我们的站点锦上添花.起到画龙点睛的作用.因此设计好广告位也是开发过程中一大 ...

  5. ORA-01940: 无法删除当前连接的用户

    删除用户报错 SQL> drop user ODI_SRC CASCADE; drop user ODI_SRC CASCADE * 第 1 行出现错误: ORA: 无法删除当前连接的用户 查看 ...

  6. 使用fuel6.0自己主动安装openstack-juno版本号(2)

    上篇中fuel_master已经安装完毕.接下来我们介绍怎样新建一个openstack环境. 1,在web界面中新建openstack环境: 点击主界面的加入button,新建openstack环境. ...

  7. lvalue & rvalue

    https://www.youtube.com/watch?v=UTUdhjzws5g 作者:知乎用户链接:https://www.zhihu.com/question/50652989/answer ...

  8. ArrayDeque源代码分析

    1. 体系结构 了解特性,先看下体系结构: 如上所看到的,知道其支持 序列化,克隆,迭代器操作,队列特性.详细实现 除了实现以上接口外,扩展AbstractCollection 抽象类. 2. 应用场 ...

  9. ADAMS绳索仿真

    在实际生活中有大量的绳索类传动运动形式.绳索类部件看似简单,但是用计算机软件对其模拟时却存在较大障碍.以钢丝绳为例,通常都是通过细长的钢丝螺旋缠绕在一起形成,在工作时当施加拉力载荷于其上,除了材料自身 ...

  10. 转 CentOS下php安装mcrypt扩展

    (以下步骤均为本人实际操作,可能与你的安装方法有所区别,但我会尽量排除疑惑) 大致步骤(1)安装mcrypt,(2)安装php对mcrypt的扩展,(3)重启apache (1).确认你的linux没 ...