写在前边
当我们投递阿里的时候,总会看到一个要求就是要填自己的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 xxx@xxx.xx
查看检查配置可以使用 $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 |