Git的使用教程(1)

  1. 云栖社区>
  2. 博客>
  3. 正文

Git的使用教程(1)

叶应是叶 2016-08-25 13:27:00 浏览307
展开阅读全文

一、Git是什么

Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。Git最为出色的是它的合并追踪(merge tracing)能力

二、Git的配置

Git官网下载地址:https://git-scm.com/download/
Git完成默认配置安装后,在桌面点击鼠标右键,会有两个选项

Git GUI Here代表图形界面模式
Git Bash Here代表命令行模式

img_1ddbebedc7c53c3a80128e9f355767ff.png
这里写图片描述

这里选择命令行模式

img_079d77c198516e497b4933773dea001b.png
这里写图片描述

之后需要先设置你的用户名和email地址作为个人标示,这是非常重要的,因为每次Git提交都需要使用该信息

config --global user.name "用户名"
config --global user.email "邮箱地址"

--global 选项代表Git将使用该信息来处理你在系统中所做的一切操作,如果希望在一个特定的项目下使用不同的用户名或email地址,可以在该项目中运行该命令而不用--global选项

img_5de3ec9ebde2be482be8c3c6d5b62b19.png
这里写图片描述

配置完成后可以用以下命令查看个人信息

cat ~/.gitconfig
img_8a2927b9b63da08448a4bd5e2959de77.png
这里写图片描述

三、仓库

(1)创建仓库

GitHub是以仓库(Repositories)的概念来管理一个项目的,仓库可以理解为一个目录,该目录下发生的所有文件变化,例如文件创建、文件修改、文件删除等都可以被Git所跟踪记录
Git可以对每一个版本的修改进行记录,并保存各个版本号,在需要的时候可以对版本进行更迭回退

创建仓库的步骤也比较简单
这里选择在D盘的git文件夹下创建


img_a07f53b251e1579e5984eeb020313eaf.png
这里写图片描述
cd 命令用来打开文件夹
mkdir 命令用来创建文件夹
pwd 命令用来确定当前路径

这样,就可以看到D盘下生成了一个git文件夹了
之后,使用以下命令将git文件夹初始化为一个仓库

git init
img_f8d6119265219500362bd3ca80cf1d8b.png
这里写图片描述

然后,在git文件夹下就可以看到多出一个名为 .git 的文件夹了,需要设置系统显示隐藏的项目才可以看到

img_04fb2684f214c1179d6e21fedacd050b.png
这里写图片描述

该文件夹用来记录版本变化的,不可以手动修改

(2)向仓库提交文件

首先在git文件夹下新建一个test.txt文本文件,随便输入一些内容,我这里输入:11111111111
使用以下命令将之添加到暂存区中

git add test.txt
img_56f8155ec3b6c9be135590d171722791.png
这里写图片描述

再将文件提交到Git仓库

git commit -m '版本说明'
img_6b0970e82eddd8226fcdb5cc6e4ead4c.png
这里写图片描述

然后再来查看当前状态,检查是否还有文件未提交

git status
img_3f3f68d4bb199a3aa7949fe9d75289c2.png
这里写图片描述

可以看到,提示说没有文件需要提交,工作目录是干净的

之后再来修改test.txt文件,多添加一行内容:22222222222
再来查看当前状态

img_246048137393aa95c46882097b2e9621.png
这里写图片描述

提示说有文件被修改但还没被提交

查看有哪些内容被修改了,由此可以查看文本内容的前后变化

git diff test.txt
img_7edbc343fa57d2e5a4696b1ec31d5236.png
这里写图片描述

此时test.txt就相当于一个新版本了,确认文件修改完成后,可以再次向仓库提交文件,保存当前版本

img_d36e3e990169d2caac5d798ae45c2f03.png
这里写图片描述

查看当前所有版本

git log
img_ea383f8f015473fdbe75e171584a54bc.png
这里写图片描述

可以看到一共有两个版本号,提交者与提交时间都有记录

如果觉得以上信息太繁杂,可以用以下命令查看简短的版本信息

$ git log --pretty=oneline

img_b8b88372a33378e003cb64b4b8046804.png
这里写图片描述

四、版本回退

之前已经知道了如何提交文件并查看版本信息,这里再来学习如何回退到前一个版本
当前test.txt是第二个版本,文本内容应该是

11111111111
22222222222

这时想要让它回退到第一个版本

git reset  --hard HEAD^  回退到上一个版本
git reset  --hard HEAD^^ 回退到上上个版本
···
git reset  --hard HEAD~10 回退十个版本
img_ab7b62b3ef6ba6ec75b5c998d87c12d9.png
这里写图片描述

可以看到已经回退到了第一个版本
当中,“27d08d6”该字段代表简短型的版本号,由之前查看所有版本的图片可知,是完整版本号的前缀字段

打开test.txt文件,可以看到文本内容已经变成了

11111111111

或者用以下命令查看文本内容

cat test.txt
img_4fe1867f5b4a2402909cce36cd1f813b.png
这里写图片描述

查看版本信息

img_a4c64d56599ac181c63e94f984205db6.png
这里写图片描述

可以看到只剩下一个版本信息了

如果回退版本后后悔了,想要恢复到第二个版本,可以通过以下命令恢复到指定版本号

git reset  --hard 指定版本号

不过此时我们不知道第二个版本的版本号,可以先来查询

git reflog
img_0dcf1f1e81057327a6d7fc7be72854dc.png
这里写图片描述

可以看到一共记录了三次版本信息,两次修改内容,一次回退版本

则6789d5c就是我们需要的版本号,恢复之,并查看文本内容,可以看到内容又恢复到第二个版本了

img_231e87711b8a9e5c30e082fac8b38be9.png
这里写图片描述

五、撤销操作

(1)撤销修改操作

在test.txt文件中再添加一行数据,现在的内容应该是:

11111111111
22222222222
33333333333

查看当前状态

img_8a7f7a05bd7025a97674e7fe26a57871.png
这里写图片描述

提示说有修改的内容未提交
此时,如果想要撤销该修改,除了可以直接指定版本号进行回退外,也可以使用以下命令撤销在工作区的修改操作

git checkout -- test.txt
img_3ed1d9bd3c0afecadc7b5b0b42f7f421.png
这里写图片描述

可以看到文本内容又恢复了

该命令可以分为两种情况
(1)在完成一次提交操作后,又对文件进行了修改操作,且此时文件还未添加到暂存区
此时执行该命令是恢复到上一次提交操作后的状态,即撤销在工作区进行的修改
(2)文件添加到了暂存区,此时进行了修改操作,且还未提交到仓库
此时执行该命令是撤销在添加到暂存区后进行的修改操作

(2)撤销删除操作

在git文件夹下再新建一个one.txt文件,然后将之提交到仓库中

img_c705d00c2cbb95e2db319eedb92e8291.png
这里写图片描述

此时,one.txt文件就已经存在于版本库中了

然后再通过手动删除或者使用以下命令删除one.txt文件

rm one.txt
img_00e47dda4507ba0354323acdb8ac64b1.png
这里写图片描述

可以看到删除操作也被记录下来了,此时可以选择直接commit,提交本次修改,或者使用以下命令从版本库中恢复被删除的文件

git checkout -- one.txt
img_90e44497a4b86e8e7cd0084c31918435.png
这里写图片描述

查看目录,可以看到文件已经恢复了

六、远程仓库

这里来尝试将本地仓库提交到GitHub上,需要用户先有一个GitHub账号
我的GitHub账号是:https://github.com/leavesC
现在也是啥都没有,之后会逐渐把自己之前做的东西上传上去的
或者是可以看我的CSDN博客:http://blog.csdn.net/new_one_object

在这之前需要先创建自己的创建SSH Key
如果之前已经创建过了,以下目录中就会含有两个密匙文件
id_rsa是私钥,id_rsa.pub是公钥

img_9f6247c8c4133930b0a6d9bec8898fb6.png
这里写图片描述

如果没有,还需要先使用以下命令来创建

ssh-keygen -t rsa -C "initobject@gmail.com"(自己的邮箱地址)

输入后可能需要连续敲几次回车,之后就生成key了

登录GitHub,进入Settings界面,点击SSH and GPG keys,新建一个SSH key

img_ddfb684a4431020dd24c22bfb7fa327b.png
这里写图片描述

添加成功后界面应该是这样的

img_42bd7e995197652d0035731cf1b2b086.png
这里写图片描述

此时,我们要做的是把在本地电脑的工程提交到GitHub,所以需要先在GitHub上建立一个仓库,工程名和描述可以随意写

img_f716c664e841c60ca526325a1928cf88.png
这里写图片描述

点击“Create repository”按钮,就创建了一个Git仓库了

img_6943a5ecd480ad6fe39ab41b738ba412.png
这里写图片描述

现在这个test仓库还是空的,GitHub提示我们可以通过命令行将该仓库与本地工程进行关联,然后推送本地工程文件

…or push an existing repository from the command line
git remote add origin https://github.com/initobject/test.git
git push -u origin master

以上命令根据不同的用户名与仓库名而会有所不同
根据该提示我们可以先输入如下命令

git remote add origin https://github.com/initobject/test.git

再输入

git push -u origin master

会提示用户输入GitHub用户名与密码

img_3752901478c7326f65d4cab5a2c59898.png
这里写图片描述
img_431edcdcf2b1c2010357668ee4c002b6.png
这里写图片描述

有时候因为网络原因上传文件到GitHub会失败~~

此时,刷新GitHub网页,可以看到文件都已经上传成功了,可以下载下来与本地文件进行对比

img_ac9301439477b3c36572942b9a252b1d.png
这里写图片描述

之后,本地每次进行了修改操作后,可以直接用以下命令将工程推送到远程仓库中

git push origin master

以上是将本地仓库推送到远程仓库中,那么自然也可以将远程仓库克隆到本地仓库中
在GitHub上再新建一个仓库,命名为test2

img_1723828ef70d45407db69dae5045f1b2.png
这里写图片描述
img_8f8ed20ad6ab9b063f9c6d544e8990e3.png
这里写图片描述

在本地输入如下命令就可以将test2工程克隆或者说下载到git文件夹下了

https://github.com/initobject/tets2
img_6beb99e4ae942e2d4e926197c91022ab.png
这里写图片描述

七、创建与合并分支

到目前为止,本地工程中只包含有一条主分支,即master分支
可以用以下命令查看所有分支,当前分支名的前边会有一个星号

git branch
img_8dd3e80a1afe091e88b39bd38a454507.png
这里写图片描述

创建一个新分支并命名为dev,并切换到dev分支

git checkout -b dev
img_c282ea58048c5c536d860f429eb7d4ae.png
这里写图片描述

该命令表示创建并切换分支,相当于如下两条命令

git branch dev 创建dev分支

git checkout dev 切换到dev分支

查看当前test.txt文件内容,并添加新的一行内容,再查看

img_139987afe543c54ae28379fc4468e250.png
这里写图片描述

在dev分支上向仓库提交文件

img_fa1b391045117c298b222e42e0da40bd.png
这里写图片描述

切换到master分支,查看test.txt的内容,可以看到在master分支下文本内容并没有被改动,因为改动操作是在dev分支下进行的

git checkout master
img_6f53ff7be6c05eed15244782468b8c9f.png
这里写图片描述

在master分支下,将dev分支的内容合并到master上,可以看到test.txt文件被改动了

git merge dev
img_f2a43bf4f5dca6e58cd611b99010dcb1.png
这里写图片描述

之后,删除dev分支

git branch -d dev
img_8172ed8bab2c77092cdf4175e86e68c4.png
这里写图片描述

网友评论

登录后评论
0/500
评论
叶应是叶
+ 关注