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不仅帮助程序员提供了合作效率,也是一种使我们能够快速学习,促进学习的一个平台方式。因此了解这种软件的使用是非常利用我们的开发之路的。

Git使用教程学习的更多相关文章

  1. 我的git与github学习历程

    因为想要知道如何把代码放到github上,所以就百度了一下,然后找到一个<如何从github上面拷贝源码>的文章,就先进行练习了下   1.首先到git官网下载git版本控制工具的安装包, ...

  2. git详细教程

    Table of Contents 1 Git详细教程 1.1 Git简介 1.1.1 Git是何方神圣? 1.1.2 重要的术语 1.1.3 索引 1.2 Git安装 1.3 Git配置 1.3.1 ...

  3. Git基础教程(二)

    继续上篇Git基础教程(一),在开篇之前,先回顾一下上篇中的基本命令. 配置命令:git config --global * 版本库初始化:git init 向版本库添加文件:git add * 提交 ...

  4. 痞子衡嵌入式:第一本Git命令教程(0)- 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家讲的是Git命令汇编,共12篇文章,循序渐进地介绍Git操作的完整过程. 在开始Git课程之前,需要先跟大家普及2个重要概念(四度空间.四种状 ...

  5. Git使用教程(一)---本地git管理

    之前写过不少小demo,因为没有很好的整理,很多demo都找不到了,必要的时候又要重新写这些demo:这是一个很头疼的问题,很烦躁.网上看到git的版本控制以及托管,很nice.开始学习使用git,关 ...

  6. Git简明教程一、基本概念

    文本是写给新手的Git入门教程.本文的目的是让新手能够快速了解并开始使用Git,因此只会介绍最基本.同时也是最核心的知识.其中包括使用Git的基本步骤和Git中最常用的命令,以及如何使用GitHub托 ...

  7. Git全面教程

    Git全面教程 简介 Git分布式版本管理系统. Linus在1991年创建了开源的Linux,但是一直没有一个合适的版本管理工具,在2002年以前,世界各地的志愿者都是通过把源代码文件通过diff的 ...

  8. [译]Atlassian Git系列教程

    国庆期间把Atlassian的Git系列教程看完了.边看边翻译了相关文章. 原教程: https://www.atlassian.com/git/tutorials/ 我翻译的: git init g ...

  9. Git使用教程【转】

    Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是 ...

随机推荐

  1. SpringCloud学习(八)消息总线(Spring Cloud Bus)(Finchley版本)

    Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现通知微服务 ...

  2. Go基础:函数多返回值特性

    之前在写Python程序的时候,惊叹于它支持多返回值的特性带来的便利性.在学习Go的时候,发现Go也拥有多返回值的特性. 1.基本用法 创建一个多返回值的方法: func getACar() (bra ...

  3. Linux多线程编程 - sleep 和 pthread_cond_timedwait

    #include <stdio.h> #include <stdlib.h> int flag = 1; void * thr_fn(void * arg) {   while ...

  4. [转帖] ./demoCA/newcerts: No such file or directory openssl 生成证书时问题的解决.

    接上面一篇blog 发现openssl 生成server.crt 时有问题. 找了一个网站处理了一下: http://blog.sina.com.cn/s/blog_49f8dc400100tznt. ...

  5. Spring5的总体架构图

    Spring5的主体架构图 主要是四大部分:Web.Data Access/Integration.Core Container.中间层,具体见下图:

  6. Jmeter安装及配置(含JDK安装)

    (一)java环境配置1.官网下载64位的jdkhttp://www.oracle.com/technetwork/java/javase/downloads/index.html 2.环境变量设置变 ...

  7. 怎样理解 MVVM ( Model-View-ViewModel ) ?

    MVVM 的 产生 / 实现 / 发展 可以写一篇很长的博客了, 这里仅写一下个人对 MVVM的一些肤浅的认识. 1. 在 没有 MVVM 之前, 前端可以说是 jQuery一把梭 , jQuery ...

  8. hashMap,hashTable,TreeMap,concurrentHashMap区别

    hashMap: 基于哈希表实现 treeMap: 基于二叉树实现,适用于排序 hashTable: 底层还是HashMap,在方法上加了同步 concurrentHashMap: java7底层通过 ...

  9. oracle按用户导出导入表

    查看备份目录:select * from dba_directories where directory_name='DATA_PUMP_DIR'; 导入导出的文件名默认都是以备份目录为相对路径. 按 ...

  10. Spark 源码和应用开发环境的构建

    引言 Spark 现在无疑是大数据领域最热门的技术之一,读者很容易搜索到介绍如何应用 Spark 技术的文章,但是作为开发人员,在了解了应用的概念之后,更习惯的是打开开发环境,开发一些应用来更深入的学 ...