zoukankan      html  css  js  c++  java
  • 如何使用git 提交作业 收作业

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

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

    image_1bbsdp3e91lcs14hb1ipts6qkcmp.png-23.4kB

    1. 在你C盘C:Userslenovo/.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
  • 相关阅读:
    大牛总结的Linux提权Exp合集
    CTF中图片隐藏文件分离方法总结
    解压报错gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now的解决方法
    CTF中常见Web源码泄露总结
    解决“当前扩展缓存策略没有进行注册”的错误
    【红色警报】XXE 高危漏洞将大面积影响微信支付安全,可能导致系统沦陷,请升级你的系统!
    Senparc.Weixin SDK v5.0 升级公告
    使用 VSTS 进行 CI 的过程中,无法识别 .NET Core 2.x 的情况处理
    .net core DI 注册 Lazy<> 类型
    【备忘】ASP.NET MVC 5 升级到 ASP.NET Core MVC 的部分变化
  • 原文地址:https://www.cnblogs.com/tsingke/p/9573948.html
Copyright © 2011-2022 走看看