如何使用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的邮箱。
git config --global user.name "your_name"
git config --global user.email "your_email@example.com"
第二步:生成公钥key
打开git bash
,执行:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
邮箱改成自己coding注册的邮箱,一直回车下去。
生成好了大概长这样,如图:
在你C盘
C:\Users\lenovo/.ssh/id_ras.pub
这个目录下找到id_ras.pub
这个文件注意:
(1) C盘下Users
叫做用户,好好学学英文!
(2) 不是每个人的文件夹都是lenovo
,也许你的是Administrator
或者别的,总之就是你电脑当前用户的文件夹。- 把这个文件用记事本打开,全选复制发给我,或者直接把这个文件发给我,或者发给亚成、班长月影,等待给你加权限,加好了通知你之后继续下一步。
第三步:clone项目
如果已经clone过我的项目到你的本地请跳过这一步。
敲黑板.jpg, 仓库地址是:git@git.coding.net:Lxyour/WEB-Task-Store.git
,使用git clone
命令克隆,具体操作如下:
选择自己的一个盘符,比如E盘或者F盘,我这里选择F盘:
cd /f
然后克隆:
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
是不是显示如下:
lenovo@YJSIT-xxx MINGW64 /f/WEB-Task-Store
$
重点看:
/f/WEB-Task-Store
,不一定是f
盘,前面是你自己电脑的信息,不一定一样。
第五步:git pull更新代码
为什么要git pull
?首先要知道git pull
的作用是更新项目代码,因为别人也提交过了作业,项目的代码被更新了,所以你要先执行git pull
,免得你git push
的时候会报错!
第六步:增加你的代码到仓库
这一步是增加你的代码到本地仓库,目的是让git仓库记录你要刚刚 改动过的代码。
git add --all
第七步:添加本次提交的信息
这一步是增加你本次提交的信息,描述你本次增加什么功能之类的。
git commit -m "写上你本次提交的描述"
// 例如:
git commit -m "Qmeng提交作业"
第八步:推送代码
这一步是把你刚刚执行git commit -m
提交的代码上传到线上仓库。
git pull
git push
预览自己的页面
成功推送完你的代码后可以通过下面这个地址访问:
https://lxyour.coding.me/WEB-Task-Store/Task-201712/web-blog/改成你的目录/
例如肖大涵的叫做xhan-miui-phone
,那就改成这样:
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 提交作业 收作业的更多相关文章
- git 提交作业流程
git 提交作业流程,主要分为4个步骤 # 拉取远程git最新版本到本地,每次都可以先执行这条命令,因为会有其他同学更新仓库 git pull # add需要上传的文件,那个文件修改或者新增的,就ad ...
- git提交时支持文件名大小写的修改
在windows环境下,git提交文件时,默认对文件名大小写不敏感,若修改了文件名字的大小写,可能会导致提交时没有记录,文件名修改不成功.网上搜集了几种解决方法,现总结下: 1. 修改git conf ...
- 怎么修改git提交过的内容
git修改历史提交 Git使用amend选项提供了最后一次commit的反悔.但是对于历史提交呢,就必须使用rebase了. git rebase -i HEAD~3 表示要修改当前版本的倒数第三 ...
- 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 ...
- 设置Git提交时不用输入用户名和密码
在用git提交时代码至github上时每次都要输入用户名和密码,当提交操作较为频繁时非常不方便,可以按下文中的介绍,设置成提交时不用输入用户名和密码: 1.在当前库下,已经运行过 git remote ...
- 解决git提交问题error: The requested URL returned error: 403 Forbidden while accessing
git提交代码时,出现这个错误"error: The requested URL returned error: 403 Forbidden while accessing https&qu ...
- 写得好 git 提交信息
编写好 git 提交信息 提交信息 我们作出答复,更改将提交相关信息,这些信息通常被认为是重要的信息会小心留下应该离开,你为什么需要这个提交实例,提交解决任何问题. 我们需要良好的信息组织,虽然后来, ...
- 老鸟都应该注意的git 提交规范
不知道大家有没有看过自己项目的git 提交信息-----我看过好多次 ,不忍直视 然后提醒一起的小伙伴 :大家规范点 信息要详细, 过段时间再看下 ,还是一样. 相信很多猿都有这样的感受,对于垃圾的 ...
- git学习四:eclipse使用git提交项目
支持原创:http://blog.csdn.net/u014079773/article/details/51595127 准备工作: 目的:eclipse使用git提交本地项目,提交至远程githu ...
随机推荐
- 1051: 手机(MOBILE)
#include <iostream> #include <iomanip> #include <cstdlib> #include <string> ...
- bash shell 获取当前正在执行脚本的绝对路径
https://my.oschina.net/leejun2005/blog/150662 http://blog.csdn.net/10km/article/details/51906821 如题, ...
- java 转义符
java 转义符 CreationTime--2018年7月12日15点33分 Author:Marydon 1.常见转义符 转义符在java中有特殊含义 转义字符 特殊含义 \b 退格( ...
- 【shell】shell基础脚本合集
1.向脚本传递参数 #!/bin/bash #功能:打印文件名与输入参数 #作者:OLIVER echo $0 #打印文件名 echo $1 #打印输入参数 执行结果: 2.在脚本中使用参数 #!/b ...
- Echarts折线图点击事件
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- DATEDIF函数
DATEDIF(start_date,end_date,unit) DATEDIF函数是Excel隐藏函数,在帮助和插入公式里面没有. 返回两个日期之间的年\月\日间隔数.常使用DATEDIF函数计算 ...
- Ajax学习(二):模仿jQuery的Ajax封装工具
通过上一节的学习,基本了解Ajax的使用, 但是这样使用很麻烦,这里封装ajax为一个方法,作为一个ajax工具,传入相应参数就可以实现ajax的使用. 模仿jQuery的Ajax. 如下是jQuer ...
- 如何在eclipse中创建.properties文件
打开file--new--other 选择general--file--next 选择要建在哪个文件名下,然后在底部的file name后输入properities文件名,finish即可
- 转:Ogre源代码浅析——脚本及其解析(一)
Ogre的许多外部资源数据都有着相应的脚本格式,现例举如下: Material(材质):Ogre使用的是“大材质”的概念.狭义的“材质”概念往往是与“贴图”等概念区分开的,比如在Lambert光照模型 ...
- 转:Irrlicht 0.1引擎源码分析与研究(一)
目录(?)[-] 主要技术特性 引擎概览 Irrlicht的窗口管理 Irrlicht引擎主要是由一个名叫Nikolaus Gebhardt奥地利人所设计,是sourceforge上的一个开源项目 ...