Git使用教程学习
在第十二周的个人作业上,王文娟老师希望我们去自己课后了解一下git的使用方式以及一些基础知识,在本学期其他的课程上,我们已经稍微了解过一些git的基础知识,因此在本次作业里,我补充了解了许多并未仔细研究过的git知识点,经过和同学的经验讨论以及网上资料的检索,得到了以下的学习知识点:
1、Git Hub简介:
Git是一个分布式的版本控制系统,最初由LinusTorvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。包括Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和VladtheDeployer这样的部署工具所使用。GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。
而Github就像这么一个软件,不但能自动帮助用户记录每次文件的改动,还可以让同事协作编辑,这样就不用用户自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,是一种很便捷的操作?
GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。
GitHub 可以托管各种 Git 库,并提供一个 web 界面,但与其它像 SourceForge 或 Google Code 这样的服务不同,GitHub 的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的Fork的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的pull request机制向项目负责人申请代码合并。
2、Github自学部分
2.1、网页注册部分以及网页版git的一些基础设置
首先,进入github官网(进入到sign up页面,完成注册)
-------->
注册验证完账户之后,点击验证账户后,即进入Github
之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息
在注册登陆完毕之后,在settings中进行信息完整填写
点击Your Profile即可看到自己的主页
2.2 如何查找学习别人的代码:
这里我们尝试了网络上著名搜索代码“lucene”
2.3新建一个属于自己的仓库
在+号下方点击new repository即可创建,并为此取名(选择public)
三、Git 安装
并在cmd中可以检查到是否安装成功:
安装成功后,在开始界面里选择到git bash打开 是命令行模式的界面就是安装成功了
由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在此之前,必须要生成SSH key。
那么,如何生成SSH key呢?
在主目录下找到ssh文件
打开第二个文件,注意不要用MP打开,选择打开方式为记事本打开
并将其复制黏贴
回到Github 进入Account settings,到此页面,Title可以自定义,Key直接复制黏贴。
添加成功,本地Git便与远程Github建立了连接。
接下来,为了方便我们的版本控制,我们需要设置相应的用户明以及邮箱,因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。(注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。)命令如下:
接下来 ,我们开始创建版本库(版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。)
创建一个版本库首先,选择一个合适的地方,创建一个空目录:
pwd命令用于显示当前目录(如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。)
而这里的cd要定位到github所在文件夹(利用cd快捷键定位,最好不要存放在c盘出,如果出错可能会影响到其他文件夹)
通过git init命令把这个目录变成Git可以管理的仓库:
Git就把仓库建好了,而且是一个空的仓库(empty Git repository),当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
Git添加文件
现在我们编写一个test2.txt文件,内容如下:
Git is a nice control system.
This is my blob.
一定要放到learngit目录下(子目录也行),因为这是一个Git仓库
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,用命令git commit告诉Git,把文件提交到仓库:(git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。)
git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的test2.txt文件);2 insertions:插入了两行内容(test2.txt有两行内容)。
如何同步git下文件修改内容
修改test2.txt文件
git status命令可以让我们时刻掌握仓库当前的状态,下面的命令输出告诉我们,test2.txt被修改过了,但还没有准备提交的修改。
Git告诉我们test2.txt被修改了,当我们想要查看修改内容时,需要用git diff这个命令看看,git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式:
提交修改和提交新文件是一样的两步,第一步是git add
同样没有任何输出。在执行第二步git commit之前,我们再运行git status看看当前仓库的状态:
git status告诉我们,将要被提交的修改包括test2.txt,下一步,就可以放心地提交了
版本控制系统有某个命令可以告诉我们的修改增添删除历史记录,在Git中,我们用git log命令查看:
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:
如果使用到一半我后悔修改某个文件,怎么回退呢?
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交bb07525...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
使用这两句语句,便可以成功还原。
如果想删除文件中文档应该怎么做呢?
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:
可以看到下图已经删除:
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
现在,文件就从版本库中被删除了。
关键远程项目地址
需要利用git上传代码到码云,首先应该在码云上创建一个新项目
Git的一些其他小功能
在安装Git中,我们已经配置了user.name和user.email,实际上,Git还有很多可配置项。
比如,让Git显示颜色,会让命令输出看起来更醒目:
这样,Git会适当地显示不同的颜色,比如git status命令(文件名就会标上颜色。):
当用户经常敲错命令,例如git status如果敲git st就表示git status那就简单多了,那么如何做到这一点呢
我们只需要敲一行命令,告诉Git,以后st就表示status:
现在看一下效果(和输入git status同样的效果 因为这里没有进入git指定文件,因此没有库文件):
注册gitee
进入网址https://gitee.com/
注册完毕之后的网址https://gitee.com/cocoyoyoa/events
以及页面
心得体会:
之前在谢霞冰老师的课程上,老师就让我们了解过一定的github知识,但是主要是制作远程传输代码的操作学习,因此对于github一些基础的操作还不太了解,但这次的课程上,我完整的学习了一下整个git(包括一些细枝末节)的知识点,例如如何上传文档,修改文档内容,撤销修改文档内容等等,在第一次基础github的时候,阻碍比较大的是ssh key的设置,因为不太懂到底怎么查找到ssh key的位置,错误主要有不知道应该从git bash里进入,而从cmd内进入等等,因此研究了很久,在第二次也就是这次的学习上,其实轻松了很多,请教了一些同学,也花了一定的时间在github的研究上,也了解了一些周边产品的使用,例如码云等等。以下是我对github的一些感受:
当你修改一份文档修改了很多版本并保存在某个文件夹下,但是有一天你想要的去查看中间某个期间你修改的内容或是删除的内容,包括第一次的改动,要一份份的查找,会增加麻烦性和时间消耗。而看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,也会加大文件保存的困难性。又或者是用户需要和他人协作完成一个项目时,在同一时间内,两个人不同的修改内容不能同时合并修改,需要在双方都修改完毕后,进行沟通,告知具体修改了某处,汇总修改会显得很麻烦。
而Github就像这么一个软件,不但能自动帮助用户记录每次文件的改动,还可以让同事协作编辑,这样就不用用户自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,是一种很便捷的操作。
并且一些代码大神可以将他们的开源代码分享在git主页上,而在校内的我们可以通过github上传自己小组作业部分的代码部分,不用经常为某个人修改了哪部分而无法同步而苦恼,或者是花时间在路上讨论等等,特别是在作业分享环节,我们可以查看到他人的代码,并进行自己意见的改正修正以及对于对方知识点的学习和吸收,git不仅帮助程序员提供了合作效率,也是一种使我们能够快速学习,促进学习的一个平台方式。因此了解这种软件的使用是非常利用我们的开发之路的。