自动化部署之Git基础

简介:
  1. GIT基础    

GIT是一个分布式版本管理系统,速度快,适合大规模,跨地区多人协同开。SVN是一个集中式版本管理系统。


(1)GIT生态

GIT分布式版本管理系统

Gitlab git私库解决方案

Github git公有库解决方案


(2)Git安装

Centos:

yum install -y git

Ubuntu:

apt-get install git

Windows安装git bash

Linux编译安装

注意不要使用git 1.8以下版本,推荐使用2.7版本

①编译安装git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
[root@linux-node1 ~] # yum install -y epel-release
安装依赖包:
[root@linux-node1 ~] # yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
[root@linux-node1 ~] # wget https://github.com/git/git/archive/v2.7.4.zip
[root@linux-node1 ~] # yum install -y unzip
[root@linux-node1 ~] # unzip git-v2.7.4.zip
[root@linux-node1 ~] # cd git-2.7.4
[root@linux-node1 git-2.7.4] # make prefix=/usr/local/git all
[root@linux-node1 git-2.7.4] # make prefix=/usr/local/git install
[root@linux-node1 git-2.7.4] # rm -rf /usr/bin/git
[root@linux-node1 git-2.7.4] # ln -s /usr/local/git/bin/git /usr/bin/git
[root@linux-node1 git-2.7.4] # git --version
git version 2.7.4
 
②初始化仓库
[root@linux-node1 ~] # mkdir test
[root@linux-node1 ~] # cd test
[root@linux-node1  test ] # git init    #将test目录初始化仓库
[root@linux-node1  test ] # git config --global user.name"*****"
[root@linux-node1  test ] # git config --global user.email *******@qq.com
 
四个区域:
远程仓库<-->本地仓库<-->暂存区域<-->工作目录
 
四种状态
Untracked、Unmodified、Modified、Staged
Untracked(工作目录)-->git add -->Staged(暂存区)-->git commit版本-->Unmodified(本地仓库)-->Edit  file -->Modified-->Stage the  file -->Staged
 
③常用命令:
git add 加入暂存
git status 查看状态
git status -s 状态概览
git  diff  尚未暂存的文件
git  diff  --staged 暂存区文件
git commit 提交更新
git reset 回滚
git  rm  从版本库中移除
git  rm  --cached README 从暂存区中移除
git  mv  相当于 mv  git  rm  git add 三个命令
 
使用演示:
[root@linux-node1  test ] # touch index.html    ==>创建文件
[root@linux-node1  test ] # vim index.html 
[root@linux-node1  test ] # git status  ==>此时文件处于工作目录中
位于分支 master
 
初始提交
 
未跟踪的文件:
   (使用  "git add <文件>..."  以包含要提交的内容)
 
     index.html
 
提交为空,但是存在尚未跟踪的文件(使用  "git add"  建立跟踪)
[root@linux-node1  test ] # git add index.html ==>加入代码库
[root@linux-node1  test ] # git status      ==>此时文件处于暂存区
位于分支 master
 
初始提交
 
要提交的变更:
   (使用  "git rm --cached <文件>..."  以取消暂存)
 
     新文件:   index.html
 
[root@linux-node1  test ] # git commit -m "first commit" ==>提交到本地仓库
[master(根提交) c6bc04f] first commit
  file  changed, 3 insertions(+)
  create mode 100644 index.html
[root@linux-node1  test ] # git status
位于分支 master
无文件要提交,干净的工作区
[root@linux-node1  test ] # git log
commit c6bc04f90d4ef442e2c4d5bc788b21de239332da    ==>回滚需要的 id
Author: ****** <******@qq.com>
Date:   Fri Dec 8 22:37:40 2017 +0800
 
     first commit
 
[root@linux-node1  test ] # touch pay.html
[root@linux-node1  test ] # vim pay.html 
[root@linux-node1  test ] # git add pay.html 
[root@linux-node1  test ] # git status
On branch master
Changes to be committed:
   (use  "git reset HEAD <file>..."  to unstage)
 
     new  file :   pay.html
 
[root@linux-node1  test ] # touch news.html
[root@linux-node1  test ] # echo "123" > news.html 
[root@linux-node1  test ] # git status
On branch master
Changes to be committed:
   (use  "git reset HEAD <file>..."  to unstage)
 
     new  file :   pay.html
 
Untracked files:
   (use  "git add <file>..."  to include  in  what will be committed)
 
     news.html
 
[root@linux-node1  test ] # git add news.html 
[root@linux-node1  test ] # git status
On branch master
Changes to be committed:
   (use  "git reset HEAD <file>..."  to unstage)
 
     new  file :   news.html
     new  file :   pay.html
 
[root@linux-node1  test ] # git rm --cached pay.html    #将pay.html从暂存区移除
rm  'pay.html'
[root@linux-node1  test ] # git status
On branch master
Changes to be committed:
   (use  "git reset HEAD <file>..."  to unstage)
 
     new  file :   news.html
 
Untracked files:
   (use  "git add <file>..."  to include  in  what will be committed)
 
     pay.html
 
[root@linux-node1  test ] # git commit -m "news"
[master d83603a] news
  file  changed, 1 insertion(+)
  create mode 100644 news.html
[root@linux-node1  test ] # git status
On branch master
Untracked files:
   (use  "git add <file>..."  to include  in  what will be committed)
 
     pay.html
 
nothing added to commit but untracked files present (use  "git add"  to track)
[root@linux-node1  test ] # git log
commit d83603a56b8926630d31b46898e4b6d69293d946
Author:********
Date:   Fri Dec 8 22:48:37 2017 +0800
 
     news
 
commit c6bc04f90d4ef442e2c4d5bc788b21de239332da
Author: *****************
Date:   Fri Dec 8 22:37:40 2017 +0800
 
     first commit
[root@linux-node1  test ] # echo "66666" >> pay.html 
[root@linux-node1  test ] # git status
On branch master
Untracked files:
   (use  "git add <file>..."  to include  in  what will be committed)
 
     pay.html
 
nothing added to commit but untracked files present (use  "git add"  to track)
[root@linux-node1  test ] # git add pay.html 
[root@linux-node1  test ] # git status
On branch master
Changes to be committed:
   (use  "git reset HEAD <file>..."  to unstage)
 
     new  file :   pay.html
 
[root@linux-node1  test ] # git commit -m "pay modelue"
[master e55a302] pay modelue
  file  changed, 2 insertions(+)
  create mode 100644 pay.html
[root@linux-node1  test ] # git status
On branch master
nothing to commit, working directory clean
[root@linux-node1  test ] # git log
commit e55a302e11d967fd25eac1cce8b6c7bed732019b
Author:******************
Date:   Fri Dec 8 22:49:57 2017 +0800
 
     pay modelue
 
commit d83603a56b8926630d31b46898e4b6d69293d946
Author: ******************
Date:   Fri Dec 8 22:48:37 2017 +0800
 
     news
 
commit c6bc04f90d4ef442e2c4d5bc788b21de239332da
Author: ******************
Date:   Fri Dec 8 22:37:40 2017 +0800
 
     first commit

2.分支管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
[root@linux-node1  test ] # git status
On branch master
nothing to commit, working directory clean
 
建分支,开发新功能是不能在master分支上开发
[root@linux-node1  test ] # git branch about    #创建分支
[root@linux-node1  test ] # git status
On branch master
nothing to commit, working directory clean
[root@linux-node1  test ] # git checkout about     #切换分支
Switched to branch  'about'
[root@linux-node1  test ] # git status
On branch about
nothing to commit, working directory clean
[root@linux-node1  test ] # git log    #创建的分支是在master分支当前的状态进行创建的。所以在about分支上也会有master的记录
commit e55a302e11d967fd25eac1cce8b6c7bed732019b
Author: ************
Date:   Fri Dec 8 22:49:57 2017 +0800
 
     pay modelue
 
commit d83603a56b8926630d31b46898e4b6d69293d946
Author: ************
Date:   Fri Dec 8 22:48:37 2017 +0800
 
     news
 
commit c6bc04f90d4ef442e2c4d5bc788b21de239332da
Author: ************
Date:   Fri Dec 8 22:37:40 2017 +0800
 
     first commit
     
[root@linux-node1  test ] # git branch
* about
   master
[root@linux-node1  test ] # touch about.html
[root@linux-node1  test ] # echo "about us" >> about.html
[root@linux-node1  test ] # git add .
[root@linux-node1  test ] # git commit -m "about"
[about 08b200a] about
  file  changed, 1 insertion(+)
  create mode 100644 about.html
[root@linux-node1  test ] # git log
[root@linux-node1  test ] # git checkout master    #切换到master分支
Switched to branch  'master'
[root@linux-node1  test ] # git log
[root@linux-node1  test ] # git checkout about    #切换到about分支
[root@linux-node1  test ] # echo "about2" > about2.html
[root@linux-node1  test ] # git add .
[root@linux-node1  test ] # git commit -m "about2"
[root@linux-node1  test ] # git log
[root@linux-node1  test ] # git checkout master
[root@linux-node1  test ] # git log
[root@linux-node1  test ] # git merged about    #在master分支上合并about分支
[root@linux-node1  test ] # git log
[root@linux-node1  test ] # git branch test    #创建test分支
[root@linux-node1  test ] # git checkout test
[root@linux-node1  test ] # touch "test" > test.html
[root@linux-node1  test ] # git add .
[root@linux-node1  test ] # git commit -m "test"
[root@linux-node1  test ] # git checkout master
[root@linux-node1  test ] # git branch --merged    #查看已经合并的分支
[root@linux-node1  test ] # git branch --no-merged    #查看未合并的分支
  
分支命令
git branch例出分支
git branch - v
git branch --merged查看哪些分支被合并
git branch --no-merged查看哪些分支未被合并
git branch -d testling删除分支
git checkout切换分支
git merged融合分支






本文转自 IT_外卖小哥  51CTO博客,原文链接:http://blog.51cto.com/jinlong/2052146








相关文章
|
8月前
|
jenkins 应用服务中间件 持续交付
Git + Jenkins 自动化 NGINX 发布简易实现
Git + Jenkins 自动化 NGINX 发布简易实现
|
5月前
|
jenkins 持续交付 开发工具
自动化开发之旅:Docker携手Jenkins,与Git和Tomcat共舞持续集成
【8月更文挑战第13天】在软件开发中,持续集成(CI)通过自动化构建、测试与部署提升效率与稳定性。Docker、Jenkins、Git和Tomcat构成CI的黄金组合:`git push`触发Jenkins作业,利用Docker确保环境一致性,最终将应用部署至Tomcat。首先配置Git Webhooks以触发Jenkins;接着在Jenkins中创建作业并使用Docker插件模拟真实环境;通过Maven构建项目;最后部署至Tomcat。这套流程减少人为错误,提高开发效率,展示了技术的力量与流程的革新。
103 0
|
8月前
|
jenkins Java 持续交付
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)(上)
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)
|
8月前
|
数据可视化 小程序 Linux
【Linux】自动化构建工具make/Makefile和git介绍
【Linux】自动化构建工具make/Makefile和git介绍
76 0
|
8月前
|
弹性计算 Shell 开发工具
自动化Git仓库清理与维护
【4月更文挑战第30天】
59 0
|
8月前
|
jenkins 持续交付 开发工具
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)(下)
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)
|
8月前
|
开发工具 git
自动化脚本之Git相关
自动化脚本之Git相关
52 0
|
8月前
|
JavaScript 持续交付 开发工具
Git自动化利器:使用Node.js脚本定制化提交消息处理
Git自动化利器:使用Node.js脚本定制化提交消息处理
170 0
|
Java jenkins 持续交付
pytest自动化框架集成jenkins+gitee+allure,使用git下拉代码和本地代码实现,基于windows
pytest自动化框架集成jenkins+gitee+allure,使用git下拉代码和本地代码实现,基于windows
|
存储 开发工具 git
GIT详细基础笔记(1)
GIT详细基础笔记
190 0
GIT详细基础笔记(1)

热门文章

最新文章