[关闭]
@azmddy 2019-08-06T13:03:29.000000Z 字数 2810 阅读 153

Git Tutorial - Try Git

暂存


引言

git作为世界上最先进的分布式版本控制系统,有着十分强大的功能,你可以利用Git穿越时空,去找回很久之前的文件,你也可以获得分身术,开展多分支工作,当然它的功能不止这些。在这里,我会介绍一下常用的用法。


目录


下载与安装

官网网址: https://git-scm.com/

在官网下载最新的Git版本。

image_1cdi0k1171ano1atjbj118najts9.png-343kB

image_1cdi10m0r1g9gk01559a79so416.png-4.4kB

双击安装包。
一路默认操作(安装路径可以自定义)。

几个名词

在这里解释一个比较常用的名词,帮助理解和运用git。

工作区

工作区就是一个目录,这个目录里存放着你的各种各样的文件(不包括.git目录),而且你是想使用Git来管理这个目录的,这才称这个目录是一个工作区(git工作的区域,不然就直接叫目录了)。

版本库(Repository)

版本库(Repository)是工作区中一个隐藏的名叫.git的目录。
版本库中比较重要的两个组成是暂存区分支。当我们创建版本库的时候,git自动为我们创建一个master分支。

我们通过git add filename命令将工作区的文件添加到暂存区中,再通过git commit命令将暂存区里的文件提交到分支(master)中。

为什么会有这两个东西呢?我的理解是暂存区存的是一个个的小目标比如说:挣他一个亿,当你完成了小目标就添加到暂存区去,当你不小心脑子一发热,目标歪了,你可以以很轻微的代价把小目标纠正过来。分支呢?它存的就像一个个阶段性的成果,当某个阶段性的成果不够理想的时候,就需要比较大的代价去重新实现。分支当然不仅仅只有一个,多分支就像企业在各个产业的投资,某个产业做的很好,就可以把它作为公司的支柱产业来做(把其它分支合并到主分支(master)),这也可以用于团队协作的场合。
image_1cdi3k39utc01hnp1utu176fg1k9.png-9kB

远程仓库

在前面所说的版本库是建立在本地的,又可以称之为本地仓库,与远程仓库相对应,远程仓库是建立在github网站(GitHub是一个很优秀的代码托管平台)上的版本库。我们可以将本地仓库同步到远程仓库中,同时也可以把远程仓库中的内容克隆和拉取到本地,利用这个特点,我们可以实现多人多地同时对一个项目实施操作,正如在开头所说,git是世界上最优秀的分布式版本控制系统。

修改

这里的修改所针对的对象是工作区,也就是说,在工作区中发生的增删改操作都称为“修改”,不再局限于某个文件内容的更改。Git管理的其实是修改。

创建用户标识

git是一个分布式的版本控制系统,这意味着会可能有很多人对同一个项目提交自己的内容,如何区别呢?这就需要创建用户标识以示区别。
用户标识包括用户名和邮箱。

git命令

  1. # global参数表示本台设备上所有的仓库都使用这个标识
  2. $ git config --global user.name "username"
  3. $ git config --global user.email "xxx@163.com"

创建SSH Key

本地的版本库和github上的版本库之间的传输tonggSSH加密,如果不想每次向远程仓库推送都输入github账号和密码的话,创建SSH Key就很有必要了。

git命令

  1. $ ssh-keygen -t rsa -C "youremail@163.com"
  2. # 然后就可以一路回车,执行默认操作,当然你也可以去设置秘钥和公钥保存的位置,以及密码。

创建版本库

在工作区(文件夹)中创建版本库。

git命令

  1. $ git init

image_1cdjd6ddt1e707eq1q7m1b2nnf69.png-34.6kB
在工作区间中会生成一个隐藏目录.git
image_1cdjd8hlg3qgvrs1ufb3jq1m9dm.png-1.4kB

将工作区中的文件添加到版本库中

将文件添加到暂存区中

git命令

  1. # 添加一个文件
  2. $ git add test.txt
  3. # 添加所用文件
  4. $ git add -A
  5. # 添加所有文件,不包括已被删除的文件
  6. $ git add .
  7. # 添加所有文件,不包括新添加的文件
  8. $ git add -u

image_1cdjdsbjmcu5klg1det1s121soh13.png-71.9kB

将文件提交到主分支(master)中

git命令

  1. # git commit -m 注释
  2. $ git commit -m "将test.txt提交到主分支(master)"

image_1cdjehhsd1b4t12gu1f3017ddgh920.png-108.1kB

后悔药

Git让我们拥有了吃后悔药的机会,之前犯的错误都可以避免,从头再来就不是个事。

绑带

假如我们正在编辑test.txt文本,输入Git is very great tool for us.,当我们不小心把某个单词拼写错的时候,并不要紧,毕竟我们没有将修改过的文件添加到版本库中的暂存区,这是可以马上改过来。

这只是一个小的改动,如果你发现你现在做的工作方向错了(并不严重,因为没有添加到暂存区中),需要回到工作开始的那个起点(上一次提交(commit)或者添加(add)),但是需要删除的内容太多了,手动实在是太麻烦了,也容易出错,Git提供了一个简单的命令帮你完成这个操作。

git命令

  1. $ git checkout -- test.txt

test.txt文件原来是没有任何内容的,使用vim编辑test.txt文本内容,cat命令查看文本内容,发现少输入一个字母。git status命令查看工作区状态,发现test.txt文件已经被更改,使用git checkoout -- test.txt命令将文本回退到上一次提交或添加,使用cat命令就会发现test.txt文件已经回到之前的一无所有的状态,你又可以对它为所欲为了。
image_1cdjr4m5k1h3gme26els1n13pam.png-83.7kB

止血包

如果我们不小心把一个含有错误的文件添加到了暂存区中,但是很幸运,在提交之前,你发现了这个问题,我们可以使用Git提供的止血包来撤回自己的错误操作。

git命令

  1. $ git reset HEAD <file>

我们新建一个error.txt文件(假定这是一个错误的文件),我们不小心把它添加到了暂存区中,通过git reset HEAD error.txt把暂存区里的修改撤销。暂存区中就没有了之前的添加记录了。
image_1cdrqakuo12peth6158cst94cv19.png-44.2kB

急救包

如何我们由于一时疏忽把一个错误的文件提交到了版本库中,但是你还没有对你的BOSS说你已经完成工作了,那么你还有机会去挽救。这就是所谓的版本回退

git命令

  1. # 回退到上一个版本
  2. $ git reset --hard HEAD^

不小心提交了错误文件。
image_1cdrrj5c85t31rmefbi1l5ejgp1m.png-45.1kB

使用git reset --hard HEAD^回退到上一个版本。
在命令行中,可以发现HEAD始终是代表当前的版本。
image_1cdrrlqskqpt1vop1llb130ls4223.png-66.3kB

既然很够回到过去,那么应该能从过去回到现在。git能让你在过去吃个后悔药,回到现在。

  1. # git reset --head 版本号
  2. $ git reset --hard 6abf7d

image_1cdrs014k17ubiib1o4u1j2jf32g.png-39.6kB

版本号是就是用于区别每个版本的,在使用git log命令时,你会看到每个版本的版本号、作者信息、提交日期以及版本注释。
如果你没有使用过git log命令就之前回退了,那么怎么获得之前的版本号呢?
通过git reflog命令你就能看到命令历史,决定飞往哪个时空了。

image_1cdrsklgj1qlt1otdona1epfor72t.png-38.9kB

分支的运用

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注