@azmddy
2019-08-06T13:03:29.000000Z
字数 2810
阅读 153
暂存
git作为世界上最先进的分布式版本控制系统,有着十分强大的功能,你可以利用Git穿越时空,去找回很久之前的文件,你也可以获得分身术,开展多分支工作,当然它的功能不止这些。在这里,我会介绍一下常用的用法。
在官网下载最新的Git版本。
双击安装包。
一路默认操作(安装路径可以自定义)。
在这里解释一个比较常用的名词,帮助理解和运用git。
工作区就是一个目录,这个目录里存放着你的各种各样的文件(不包括.git
目录),而且你是想使用Git来管理这个目录的,这才称这个目录是一个工作区(git工作的区域,不然就直接叫目录了)。
版本库(Repository)是工作区中一个隐藏的名叫.git
的目录。
版本库中比较重要的两个组成是暂存区
和分支
。当我们创建版本库的时候,git自动为我们创建一个master
分支。
我们通过git add filename
命令将工作区的文件添加到暂存区中,再通过git commit
命令将暂存区里的文件提交到分支(master)中。
为什么会有这两个东西呢?我的理解是暂存区存的是一个个的小目标比如说:挣他一个亿
,当你完成了小目标就添加到暂存区去,当你不小心脑子一发热,目标歪了,你可以以很轻微的代价把小目标纠正过来。分支呢?它存的就像一个个阶段性的成果,当某个阶段性的成果不够理想的时候,就需要比较大的代价去重新实现。分支当然不仅仅只有一个,多分支就像企业在各个产业的投资,某个产业做的很好,就可以把它作为公司的支柱产业来做(把其它分支合并到主分支(master)),这也可以用于团队协作的场合。
在前面所说的版本库是建立在本地的,又可以称之为本地仓库,与远程仓库相对应,远程仓库是建立在github网站(GitHub是一个很优秀的代码托管平台)上的版本库。我们可以将本地仓库同步到远程仓库中,同时也可以把远程仓库中的内容克隆和拉取到本地,利用这个特点,我们可以实现多人多地同时对一个项目实施操作,正如在开头所说,git是世界上最优秀的分布式版本控制系统。
这里的修改所针对的对象是工作区,也就是说,在工作区中发生的增删改操作都称为“修改”,不再局限于某个文件内容的更改。Git管理的其实是修改。
git是一个分布式的版本控制系统,这意味着会可能有很多人对同一个项目提交自己的内容,如何区别呢?这就需要创建用户标识以示区别。
用户标识包括用户名和邮箱。
git命令
# global参数表示本台设备上所有的仓库都使用这个标识
$ git config --global user.name "username"
$ git config --global user.email "xxx@163.com"
本地的版本库和github上的版本库之间的传输tonggSSH加密,如果不想每次向远程仓库推送都输入github账号和密码的话,创建SSH Key就很有必要了。
git命令
$ ssh-keygen -t rsa -C "youremail@163.com"
# 然后就可以一路回车,执行默认操作,当然你也可以去设置秘钥和公钥保存的位置,以及密码。
在工作区(文件夹)中创建版本库。
git命令
$ git init
在工作区间中会生成一个隐藏目录.git
git命令
# 添加一个文件
$ git add test.txt
# 添加所用文件
$ git add -A
# 添加所有文件,不包括已被删除的文件
$ git add .
# 添加所有文件,不包括新添加的文件
$ git add -u
git命令
# git commit -m 注释
$ git commit -m "将test.txt提交到主分支(master)"
Git让我们拥有了吃后悔药的机会,之前犯的错误都可以避免,从头再来就不是个事。
假如我们正在编辑test.txt
文本,输入Git is very great tool for us.
,当我们不小心把某个单词拼写错的时候,并不要紧,毕竟我们没有将修改过的文件添加到版本库中的暂存区,这是可以马上改过来。
这只是一个小的改动,如果你发现你现在做的工作方向错了(并不严重,因为没有添加到暂存区中),需要回到工作开始的那个起点(上一次提交(commit)或者添加(add)),但是需要删除的内容太多了,手动实在是太麻烦了,也容易出错,Git提供了一个简单的命令帮你完成这个操作。
git命令
$ git checkout -- test.txt
test.txt文件原来是没有任何内容的,使用vim编辑test.txt文本内容,cat
命令查看文本内容,发现少输入一个字母。git status
命令查看工作区状态,发现test.txt文件已经被更改,使用git checkoout -- test.txt
命令将文本回退到上一次提交或添加,使用cat
命令就会发现test.txt文件已经回到之前的一无所有的状态,你又可以对它为所欲为了。
如果我们不小心把一个含有错误的文件添加到了暂存区中,但是很幸运,在提交之前,你发现了这个问题,我们可以使用Git提供的止血包
来撤回自己的错误操作。
git命令
$ git reset HEAD <file>
我们新建一个error.txt文件(假定这是一个错误的文件),我们不小心把它添加到了暂存区中,通过git reset HEAD error.txt
把暂存区里的修改撤销。暂存区中就没有了之前的添加记录了。
如何我们由于一时疏忽把一个错误的文件提交到了版本库中,但是你还没有对你的BOSS说你已经完成工作了,那么你还有机会去挽救。这就是所谓的版本回退
。
git命令
# 回退到上一个版本
$ git reset --hard HEAD^
不小心提交了错误文件。
使用git reset --hard HEAD^
回退到上一个版本。
在命令行中,可以发现HEAD始终是代表当前的版本。
既然很够回到过去,那么应该能从过去回到现在。git能让你在过去吃个后悔药,回到现在。
# git reset --head 版本号
$ git reset --hard 6abf7d
版本号是就是用于区别每个版本的,在使用git log
命令时,你会看到每个版本的版本号、作者信息、提交日期以及版本注释。
如果你没有使用过git log
命令就之前回退了,那么怎么获得之前的版本号呢?
通过git reflog
命令你就能看到命令历史,决定飞往哪个时空了。