Git工具使用

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 
这是第二个版本

 

posted @ 2018-02-11 17:11  西门运维  阅读(576)  评论(0编辑  收藏  举报