GIT(分布式版本控制系统)

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git的读音为/gɪt/。
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。
废话不多少直接撸起来0.0~~~

1.安装git

在linux下安装git工具很简单一条命令就可以;
首先检查是否有安装:
[root@controller ~]# rpm -aq git
git-1.8.3.1-12.el7_4.x86_64 //可以看到该系统上已经安装了git

如果未安装则运行以下命令即可:

yum install -y git

2.版本库创建

创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:

[root@controller ~]# mkdir git_db
[root@controller ~]# cd git_db/
[root@controller git_db]# git init
Initialized empty Git repository in /root/git_db/.git/
[root@controller git_db]# ls -a
. .. .git

git init命令生成一个版本库,我们可以看到提示”Initialized empty Git repository“ 是说这是一个空的仓库,可以通过ls -a命令查看隐藏的目录。

接下来我们在当前目录(/root/git_db/)下编写一个文档,记住一定要到git init 生成版本库的目录下创建,不然git无法识别。

[root@controller git_db]# cat first_file.txt
hello git
这是第一个版本

下面将一个文件放到Git仓库只需要两步。

第一步:用命令git add告诉Git,把文件添加到仓库:

[root@controller git_db]# git add first_file.txt
You have new mail in /var/spool/mail/root
[root@controller git_db]#

没有输入其他内容说明添加成功。

第二步:用命令git commit告诉Git提交说明,把文件提交到仓库:(这一步是必须的)

[root@controller git_db]# git commit -m "this is my fisrt git file"

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
git config --global user.name "Your Name" to set your account's default identity.
Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'root@controller.(none)')
You have new mail in /var/spool/mail/root

我们可以看到提示出错无法提交,原因是没有设置名字和邮件地址Git仓库无法发送,我们需要做的是按照Run下提示的代码运行即可。

[root@controller git_db]# git config --global user.email "xxxx@qq.com"
[root@controller git_db]# git config --global user.name "alai" [root@controller git_db]# git commit -m "this is my fisrt git file"
[master (root-commit) a86e828] this is my fisrt git file
1 file changed, 2 insertions(+)
create mode 100644 first_file.txt

再次运行commit 命令可以看到已经成功上传Git仓库。

3.代码回滚设置

修改文档

[root@controller git_db]# cat first_file.txt
hello git
这是第二个版本

现在,运行git status命令看看结果:

[root@controller git_db]# git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: first_file.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

虽然Git告诉我们first_file.txt被修改了,但是不清楚修改了什么内容。需要用git diff这个命令看看:

[root@controller git_db]# git diff first_file.txt
diff --git a/first_file.txt b/first_file.txt
index 680655c..407ee40 100644
--- a/first_file.txt
+++ b/first_file.txt
@@ -1,2 +1,2 @@
hello git
-这是第一个版本
+这是第二个版本

输出中+号显示的就是修改或新增的内容,-号显示的就是去掉或被修改的内容

我们再次提交到Git仓库上:

[root@controller git_db]# git add .     //.表示当前目录下所有改变的文档
You have new mail in /var/spool/mail/root
[root@controller git_db]# git commit -m "changes"
[master 25d561b] changes
1 file changed, 1 insertion(+), 1 deletion(-) [root@controller git_db]# git status
# On branch master
nothing to commit, working directory clean

在Git中,我们用git log命令查看历史记录:

[root@controller git_db]# git log
commit 25d561b0a53a764acf15b06a53ffab34598d455e
Author: alai <1259525@qq.com>
Date: Sun Feb 11 16:41:56 2018 +0800 changes commit a86e82810819202830f618440fbf4acaf3114498
Author: alai <1259525@qq.com>
Date: Sun Feb 11 16:28:56 2018 +0800 this is my fisrt git file

加上--pretty=oneline参数简化输出:

[root@controller git_db]# git log --pretty=oneline
25d561b0a53a764acf15b06a53ffab34598d455e changes
a86e82810819202830f618440fbf4acaf3114498 this is my fisrt git file

第一列是commit id(版本号),第二列是commit。

开始回滚

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。使用git reset --hard命令:

#查看当前版本为25d。。
[root@controller git_db]# git reset --hard HEAD
HEAD is now at 25d561b changes
You have new mail in /var/spool/mail/root
[root@controller git_db]# cat first_file.txt
hello git
这是第二个版本 #退回上一个版本
[root@controller git_db]# git reset --hard HEAD^
HEAD is now at a86e828 this is my fisrt git file
[root@controller git_db]# cat first_file.txt
hello git
这是第一个版本

这是我们又想回到最新的那个版本,你通过命令git log --pretty=oneline查看已经没有了,这时候该怎么办呢,翻日志找到该版本的commit id 命令如下:

[root@controller git_db]# git reset --hard 25d561   //commit id不必写全 git会自动查询
HEAD is now at 25d561b changes
[root@controller git_db]# cat first_file.txt
hello git
这是第二个版本

Git工具使用的更多相关文章

  1. 【转】第 02 天:在 Windows 平台必裝的三套 Git 工具

    原文网址:https://github.com/doggy8088/Learn-Git-in-30-days/blob/master/docs/02%20%E5%9C%A8%20Windows%20% ...

  2. windows中使用Git工具连接GitHub(配置篇)

    Git在源码管理领域目前占很大的比重了,而且开源的项目很多都转到GitHub上面了.例如:jQuery, reddit, Sparkle, curl, Ruby on Rails, node.js,  ...

  3. Git详解之六 Git工具(转)

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力. 接下来你 ...

  4. Git详解之六:Git工具

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线 ...

  5. 使用git工具将项目上传到github

    注册github账号 https://github.com/ 安装git工具: https://git-for-windows.github.io/ 上面的准备工作完成后,现在开始操作. 一.进入gi ...

  6. Git工具的使用教程

    Git 是一种版本控制工具,也叫作版本管理软件(分布式管理软件).这里介绍Git的基本使用步骤,关于 Git 更详细的介绍,读者可以参考其官方网站提供的文档. 1  安装Git 在Ubuntu系统中安 ...

  7. 使用git工具快速push项目到github(精简)

    Dear Weber ,相信有很多刚开始接触前端的程序猿,在刚接触到git工具传项目到github上时会遇到一些问题,那么下面的话呢,我就整理一下一个大致的思路提供给大家参考: 工具:git (自行下 ...

  8. 代码管理工具:使用github和git工具管理自己的代码

    一.git工具和账户创建 1.1 安装 Git 是 Linus Torvalds 最近实现的源代码管理软件."Git 是一个快速.可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系 ...

  9. 使用git工具上传自己的程序到github上

    一:前期准备 可以运行的项目 github账号 git工具 二:开始操作 1.创建个人github仓库 写自己项目的名字,描述,权限,README 2.新建结束后会进入如下界面 3.复制仓库地址 4. ...

随机推荐

  1. 20175126《Java程序设计》第二周学习总结

    # 20175126 2016-2017-2 <Java程序设计>第二周学习总结 ## LINUX系统安装好输入法后如何使用? - 相信很多同学在刚接触虚拟机LINUX系统时,会因无法输入 ...

  2. Easyui datagrid 绑定本地Json数据

    var jsonstr = '{"total":1,"rows":[{"id":"M000005","name ...

  3. python深入理解类和对象

    1,鸭子类型和多态 当看到一只鸟走起来像鸭子,游泳起来像鸭子,叫起来也像鸭子,那这只鸟就是鸭子 是不是比较混乱,看个例子: # -*- coding:UTF-8 -*- __autor__ = 'zh ...

  4. cnetos 下 rar 解压

    第一步:http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz 下载 文件 或 wget http://www.rarlab.com/rar/rarli ...

  5. 百度地图sdk sha1秘钥获取有种想吐的赶脚

    撸代码坐的腰算背疼还只是弄一个不是项目里边需要的升级版本的so 日 需要sha1 指纹秘钥,还有项目包, 才能用百度地图sdk 这个找sha1  获取废了20分钟, 显示全盘找keytool.exe ...

  6. HTML中关于class内容空格多类名的问题详解

    之所以想谈谈这个,不明所以.所以转载下来方便自己看看. 问:像 class="info fl" 这种class定义是何意思? 答:这里的空格隔开后,它们所代表的是两个类名,分别为i ...

  7. BeanUtils.copyProperties的简单示例

    一.新建测试实体 1.UserA package com.dechy.hebswj.test; public class UserA { private String a; private Strin ...

  8. 粒子动画——Pygame

    你是否也想做出下图这么漂亮的动态效果?想的话就跟着我一起做吧=.= 工具: Python--Pygame 仔细观察上图,你能发现哪些机制呢?再在下面对比一下是否跟你想的一样. 运行机制: 1.随机方向 ...

  9. java【基础】日期操作

    主要是date类,SimpleDateFormat类以及Calendar类的使用. date表示日期,simpleDateFormat 表示日期格式化,Calendar一般用来做时间的操作,比如加减天 ...

  10. C++学习札记(2)

    重载构造函数 #include <iostream> using namespace std; class rectangle { public: rectangle(){cout< ...