简单介绍之git的原理与使用

写在前边

当我们投递阿里的时候,总会看到一个要求就是要填自己的GitHub,而且还是必须项。当时觉得这个设定很没必要,因为不一定每个人都要使用GitHub吧。后来随着学的变多越来越理解了阿里招聘的用心,对应聘者一个简单的技能索取,一可以看出应聘者有没有很好的项目版本规划的技术git(你当然也可以用svn之类,不过也提倡学习git,详细后文说);二可以通过GitHub更多的了解应聘者,如果你没有GitHub可能在阿里的招聘选拔中就要比别人在这一方面上落后一点。可能不会有面试官单点考git这个考点(华为可能会问),不过不管是平时使用还是工作工程需要,git确实是一个值得拿出时间学习的工具,那么,git到底是什么呢?

第一部分是git的简单介绍,让你对git有一个初步的意义理解,以助于后边的学习

第二部分是初始化使用

第三部分是在能使用的基础上介绍一些常用的指令及含义

会这三部分应该可以应对一般的git应用,git的其他应用可以参考搜索引擎,如果想细致研究git入门的话,可以参考gitpro这本书。

一,git简介

版本控制是一种记录一个或若干文件内容变化,以便将来查阅版本修订情况的系统。想象一下单位中一群人针对一个系统的功能进行修改,每个人负责的部分不同,可能大家左改右改原来的系统早就面目全非,如果没有一个合适的管理工具,工作效率可能极其低下。除了本地版本控制外,常见的版本控制系统可分为CVCS(集中式版本控制系统如svn)和DVCS(分布式版本控制系统如git),关于CVCS和DVCS的优劣可见廖雪峰老师的介绍

git是一种分布式版本控制系统,开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

即大家在GitHub上喜闻乐见的pull,push或者fork的含义。

你可能已经对git能做什么有些了解了,那GitHub是什么?

GitHub是通过Git进行版本控制的软件源代码托管服务,别人问你的话,你就可以说GitHub是通过git给用户提供分布式版本控制服务的网站就行啦。

二,git的入门与使用

首先声明一下,本文不提供git使用的手把手教学,本文旨在帮助你了解git的基础知识并能在面试或工作场景中有所应用。如果想要手把手教学,推荐此博客,另外还有推荐阅读Intellij Idea对git的实战提交应用

git安装->git配置->git仓库初始化->git clone 复制远程仓库 -> git add跟踪->git commit 提交

1. git安装

git安装针对不同系统有不同安装方式,不再赘叙,请自行谷歌百度网址

2.  git配置

git需要几件事定制你的git环境,每台计算机上只需要配置一次,程序升级时会保留配置信息
git自带一个git config的工具来帮助控制git外观和行为的配置变量,当安装完成后第一件事是设置你的用户名称和邮件地址,以后每一次git的提交都会使用并写入这些信息:
$ git config --global user.name xxx

$git config --global user.email  [email protected]

查看检查配置可以使用
$git config --list

3. git仓库初始化

有两种获取git项目仓库的方法:

第一种是在现有目录或目录下导入所有文件到git中;第二种是从一个服务器克隆现有的git仓库进行修改。


在现有的目录中初始化仓库:
如果你打算使用git来对现有的项目进行管理提交,你需要进入该项目目录并输入:
$ git init
该命令将创建一个名为.git的子目录,这个子目录含有初始化git仓库的所有文件,如果你是在一个已经存在文件的文件夹(而不是空文件夹)中初始化git仓库来进行版本控制的话,你应该开始跟踪这些文件并提交(即git add跟踪指定文件,git commit提交):
$ git add
$ git commit -m //提交时必须要有提交描述

这里有一个使用样例:新建文件夹,在里面先初始化一下git,然后创建文件,例如创建a1.cpp
touch a1.cpp    //生成a1.cpp文件
vi   a1.cpp      //编辑进入 :wq保存退出
cat a1.cpp     //可以查看该文件内容

git add a1.cpp  //将文件提交到缓存区
git commit -m   ‘提交描述’       //提交到git仓库

克隆现有的仓库:
如果你想获得一份已经存在的git仓库的拷贝,就要用git clone命令
如 $ git clone https://github.com/lishinho/2019
这会在当前目录下创建一个名为2019的文件夹,并把远程仓库拉取下所有数据放入.git文件夹,然后从中读取最新版本文件的拷贝

三,git的查看与管理

查看文件状态 git status命令
用于比较现在的状态和记录的版本有什么不同,你修改了什么
$ git status
$ git status --short //得到一种紧凑的格式输出

忽略文件.gitignore
我们总有些文件无需纳入git的管理,也不希望它们出现在未跟踪文件列表,比如自动生成的日志文件或临时文件。
在这种情况下,我们可以创建一个名为.gitignore的文件列出忽略的文件模式
$ cat .gitignore
*.[oa]
*~
例子git忽略所有以.o 或.a结尾的文件和以~结尾的文件
文件.gitignore格式规范

查看更新暂存 git diff

如果git status命令输出过于模糊,你想知道具体修改的地方,可以用git diff命令,它可以知道当前做的哪些更新没有暂存?有哪些更新已经暂存并准备好提交
$ git diff  //查看尚未暂存的改动
$ git diff --cached  //查看已暂存的将要添加下次提交的内容

移除文件
Git mv指令

在Git中,重命名和移动文件是同一件事情 ,最基本的想法是,你有一段内容,比如一些代码,你把它从一个地方移动到另外一个地方,所以,假设我们有一些想要移动的文件从一个目录下面:

$ git mv 源路径 目标路径

git已经暂存了move发生的事实,但是,如果你只是简单的使用mv命令来移动文件,然后忘了告诉git,Git注意到,某个地方出现了一个本不应该出现的新文件,它同时注意到原来的文件区域已经被删除掉了,我们可以一次一个步骤来解决它:

$ git rm //删除原来的文件

$ git add production.log //添加新文件

 当我们做这些的时候,状态把这些拼在一起了,告诉我们一个移动已经发生了。

其中,略微解释下git rm

$ git rm <file>  //从版本库中删除文件
 
$ git rm <file> --cached  //从版本库中删除文件,但不删除文件

查看提交历史
$ git log //回顾提交历史
$ git log -p //显示每次提交的内容差异
$ git log --stat //在每次提交的下面列出修改的文件,以及被修改文件的哪些行被移除或添加

参考文献:

1. Chacon, Scott, and Ben Straub. Pro git. Apress, 2014.

2. eclipse怎么提交git?

https://blog.csdn.net/lynn_Kun/article/details/73740400

3. IntelliJ Idea怎么提交git?

https://blog.csdn.net/jeffleo/article/details/56017644

4. github的视频学习?

https://www.nowcoder.com/courses/2/1/1

5. 我的GitHub 欢迎大家

https://github.com/lishinho

猜你喜欢

转载自blog.csdn.net/wannuoge4766/article/details/89385404