Git从入门到速成
什么是Git
Git是Linux发明者Linus开发的一款新时代的版本控制系统,那什么是版本控制系统呢?怎么理解?网上一大堆详细的介绍,但是大多枯燥乏味,对于新手也很难理解,这里我只举几个例子。
熟悉编程的都知道,我们在软件开发中源代码其实是最重要的,那么对源代码的管理变得异常重要:
- 为了防止代码的丢失,肯定本地机器与远程服务器都要存放一份,而且还需要有一套机制让本地可以跟远程同步;
- 我们开发的时候免不了有bug,有时候刚发布的功能就出现了严重的bug,这个时候需要对代码进行还原;
- 随着我们版本迭代的功能越来越多,但是我们需要清除的知道历史每一个版本的代码更改记录,甚至知道每个人历史提交代码的情况
等等类似以上的情况,这些都是版本控制系统能解决的问题。所以说,版本控制是一种记录一个或者若干个文件内容变换,以便将来查阅特定版本修改情况的系统,对于软件开发领域来说版本控制是最重要的一个环节,而Git是当下比较流行、好用的版本控制系统。
Git安装
上面说了,Git是一个版本控制系统,你也可以理解成一个工具,跟Java类似,使用之前必须得先安装,所以第一步必须要安装,由于我用的是Mac,Mac上系统自带Git。所以安装这一步骤就省略,相信大家可以搞的定。
如何学习Git
安装好Git之后,怎么学习是个问题,其实关于Git有很多图形化的软件,但是我强烈建议大家从命令行开始学习理解,我知道没有接触过命令行的同学内心可能是拒绝的,但是我的亲身实践证明,只有一开始学习命令行,之后你对Git的每一步操作才能理解其意义,而等你熟练之后 ,你想用任何的图形化的软件去操作完全没有问题。
Git命令列表
怎么判断你Git有没有安装成功呢?请在命令行里输入git,如果出现以下提示证明你已经安装成功了。
Git所有的操作命令都是以git开头,上面列举了最常用的一些Git命令,紧接着会有一句引文解释这个命令的意思,都不是很难理解的单词,不妨试着看一下,不过没有实际操作你仍然不好理解,下面我们来以一个实际的操作来介绍下一些常用的命令的含义。
Git具体命令
第一步:我们先新建一个文件夹,在文件夹里新建一个文件(ps:我是用命令行去新建的)
新建文件夹:
mkdir test
跳转到文件夹目录:
cd test
新建test.md文件:
touch test.md
提醒:在进行任何Git操作之前,都要先切换到Git仓库目录,也就是要先切换到项目的文件夹目录下
这个时候我们先随便操作一个命令,比如git status,可以看到如下提示:
意思就是当前目录还不是一个Git仓库。
git init
这个时候用到了第一个命令,代表初始化git仓库,输入git init之后会提示:
可以看到初始化成功了,至此test目录已经是一个git仓库了。
git status
紧接着我们输入git status命令,会有如下提示:
默认就直接在master分支,关于分支的概念后面会提,这时最主要的是提示test.md这个文件
Untracked files
就是说test.md这个文件还没有被跟踪,还没有提交在git仓库里呢,而且提示你可以用git add去操作你想要提交的文件。
git status
这个命令就是查看状态,这个命令可以算是使用最频繁的了,建议大家没事就输入这个命令来查看你当前git仓库的一些状态。
git add
上面提示test.md文件还没有提交到git仓库里,这个时候我们可以随便编辑下test.md文件,然后输入git add test.md
,然后再输入git status
:
此时提示以下文件 Changes to be committed
,意思就是test.md文件等待被提交,当然你也可以使用 git rm -cached
这个命令去移除这个缓存。
git commit
接着,我们输入 git commit -m "first commit"
,这个命令是什么意思呢?commit是提交的意思,-m 代表提交信息,执行了以上命令代表我们已经正式进行了第一次提交。这个时候再输入 git status
,会提示 nothing to commit
。
git log
这个时候,我们输入 git log
命令,就会看到如下:
git log
这个命令可以查看所有commit产生的记录,所以可以看到已经产生了一条commit记录,而提交时候的附带信息叫 “first commit”
。
git add & git commit
看到这里估计很多人都会有疑问,我想要提交直接进行commit不就行了么为什么需要先add一次呢?首先 git add
是把改动添加到一个暂存区,你可以理解成一个缓存区域,临时保存你的改动,而 git commit
才是最后真正的提交,当然也有办法把这两步合并成一步,不过后面再介绍,建议新手先按部就班的一步步来。
git branch
branch即分支的意思,分支的概念很重要,尤其是团队协作的时候,假设两个人都做同一个项目,这个时候分支就是保证两人能协同合作的最大力气了。
举个
Git从入门到速成的更多相关文章
- GIT 从入门到放弃大整理
跟着廖雪峰学 GIT http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GUI f ...
- 第三章 Git的入门 - 读书笔记
Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...
- git简单入门
git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...
- Android系统移植与驱动开发--第三章 Git使用入门及在学习中有感
第三章 Git使用入门 使用Git的目的是减少各种版本的Linux的压缩大小,提供源代码在Linux上进行编译. 在这一个章节中,其实就是关键步骤的操作,虽然Git与我们学习的android没有很大的 ...
- 让 Python 带你进入开源的世界——Git 从入门到与他人协作开发
让 Python 带你进入开源的世界--Git 从入门到与他人协作开发 我认为开源社区中有很多优秀的资源,并且可以帮助进阶中的程序员提高编程能力和水平.所以,我发起了<HelloGitHub&g ...
- Git快速入门进阶篇
本文接着Git快速入门篇,继续探讨Git在管理项目中的一些应用. 远程仓库的使用 查看远程仓库 查看你已经配置的远程仓库服务器,可以运行 git remote 命令.指定选项 -v,会显示需要读写远程 ...
- git快速入门 push/clone/reset/merge/切换分支全都有
本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...
- Git 快速入门--Git 基础
Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...
- Git原理入门简析
为了获得更好的阅读体验,建议访问原地址:传送门 前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的 ...
随机推荐
- Nginx下配置codeigniter框架
原来在winserver+Apache环境下工作良好的一个微信公众号后台迁移到阿里云(环境:Ubuntu 64位 | PHP5.4 | Nginx1.6)下却频出 404,403,只能访问CI rou ...
- JavaScript里面的条件、循环语句以及异常处理
1.JavaScript里面条件语句主要有两种形式 if(条件){ ... }else if(条件){ ... }else{ ...} switch(变量名): case 值1://如果变量名为值1, ...
- BI商业智能培训系列——(二)SSIS入门
简介: SSIS,Microsoft SQL Server Integration Services.Integration意为"整合"."一体化".上篇博客中 ...
- TypeScript 3.0下react默认属性DefaultProps解决方案
ts和react的默认属性的四种解决方案 Non-null assertion operator(非空断言语句) Component type casting(组件类型重置) High order f ...
- 【bzoj1345】[Baltic2007]序列问题Sequence 单调栈
题目描述 对于一个给定的序列a1, …, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列.这一 ...
- Android开发中Parcelable接口的使用方法
在网上看到很多Android初入门的童鞋都在问Parcelable接口的使用方法,小编参考了相关Android教程,看到里面介绍的序列化方法主要有两种分别是实现Serializable接口和实现Par ...
- 【Luogu】P2465山贼集团(树形状压DP)
题目链接 写了个70分暴力还挂了,第一遍提交只拿了十分……海星 首先建虚拟节点多叉树转成二叉,然后子集枚举DP 设g[x][i]是以x为根的子树内山贼集合i,x啥都不选也没贡献的时候的最大价值 f[x ...
- [SDOI2017][bzoj4817] 树点涂色 [LCT+线段树]
题面 传送门 思路 $LCT$ 我们发现,这个1操作,好像非常像$LCT$里面的$Access$啊~ 那么我们尝试把$Access$操作魔改成本题中的涂色 我们令$LCT$中的每一个$splay$链代 ...
- 关于flink的时间处理不正确的现象复现&原因分析
跟朋友聊天,说输出的时间不对,之前测试没关注到这个,然后就在processing模式下看了下,发现时间确实不正确 然后就debug,看问题在哪,最终分析出了原因,记录如下: 最下面给出了复现方案 ...
- ubuntu启动报错 Errors were found while checking the disk-drive for /
开机报这个错误,主要原因是硬盘检测不通过导致的,下面介绍两种方法规避该问题: 修改grub 这个方法网上比较多,直接贴过来: 进入Ubuntu启动菜单时,光标选中 *Ubuntu 后,按键盘上的 e ...