- Git介绍
-曾老湿, 江湖人称曾老大。
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
Git介绍
不管是做为程序猿
还是运维攻城狮
,很多人一定都听说过GitHub
。
一个全球最大的同性交友平台

但是如果想要一起同性交友。。那必须先学会git
思考:场景一 CEO:给我写一个官网 程序猿:一天一夜,写出来了,请CEO过目 CEO:不够醒目,再改改 程序猿:好嘞,花了一周时间,请CEO过目 CEO:还是之前的好看,改回去吧。 程序猿:emmmmmm... 老子不干了。妈的,我该怎么撤回一周内容?
如果你有了GIT就不用再担心上面的场景了,操作如下:
代码语言:javascript复制git config --global user.name zls
git config --global user.email 253097001@qq.com
git config --global push.default simple
git config --global core.quotepath false
git config --global core.editor "code --wait"
git config --global core.autocrlf input
#查看信息
MacBook-Pro:~ driverzeng$ git config --global --list
user.name=zls
user.email=123@qq.com
push.default=simple
core.quotepath=false
core.editor=code --wait
core.autocrlf=input
#MAC直接呼出 VScode,设置环境变量
MacBook-Pro:bin driverzeng$ sudo vim /etc/profile
export PATH="$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
#加载环境变量
MacBook-Pro:bin driverzeng$ source /etc/profile
#查看环境变量
MacBook-Pro:bin driverzeng$ echo $PATH
#呼出VScode
MacBook-Pro:bin driverzeng$ code
#进入桌面
MacBook-Pro:bin driverzeng$ cd /Users/driverzeng/Desktop/
#创建项目目录
MacBook-Pro:Desktop driverzeng$ mkdir demo-1
#创建文件
MacBook-Pro:Desktop driverzeng$ touch demo-1/index.html
#启动项目
MacBook-Pro:Desktop driverzeng$ code demo-1/

git初始化项目 |
---|
<!--进入demo-1目录-->
MacBook-Pro:Desktop driverzeng$ cd demo-1/
vim index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>前端教学</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
曾老湿*把*教学
</body>
</html>
vim style.css
body{
background: blue;
font-size: 50px;
}
vim 备忘录
老板好讨厌,只给我一天时间写页面
<!--初始化目录-->
MacBook-Pro:demo-1 driverzeng$ git init
Initialized empty Git repository in /Users/driverzeng/Desktop/demo-1/.git/
git添加项目 |
---|
<!--添加可提交项目-->
MacBook-Pro:demo-1 driverzeng$ git add index.html
MacBook-Pro:demo-1 driverzeng$ git add style.css

如何让git不提交某个项目?

代码语言:javascript复制MacBook-Pro:demo-1 driverzeng$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: index.html
new file: style.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
MacBook-Pro:demo-1 driverzeng$ git add .gitignore
MacBook-Pro:demo-1 driverzeng$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitignore
new file: index.html
new file: style.css
git不能提交的项目 |
---|
- node_modules
- .DS_Store
- .idea
- .vscode
git提交 |
---|
MacBook-Pro:demo-1 driverzeng$ git commit -m "版本1"
[master (root-commit) 59b46c0] 版本1
3 files changed, 21 insertions( )
create mode 100644 .gitignore
create mode 100644 index.html
create mode 100644 style.css
```
----
<table><tr><td bgcolor=#000000><font color="white">git提交(verbose方式)</font></td></tr></table>
使用这种方式,可以帮我们回顾一下,刚才修改了什么代码
```bash
MacBook-Pro:demo-1 driverzeng$ git add .
MacBook-Pro:demo-1 driverzeng$ git commit -v
[master e7445d2] 添加了两个标签
1 file changed, 2 insertions( ), 1 deletion(-)
```
![-c](media/15766683065997/15766728671528.jpg)
![-c](media/15766683065997/15766729335968.jpg)
----
<table><tr><td bgcolor=#000000><font color="white">git log查看提交记录</font></td></tr></table>
```bash
MacBook-Pro:demo-1 driverzeng$ git log
commit e7445d2c3d3cc45d7025dfa24327a9033f9289fb (HEAD -> master)
Author: zls <123@qq.com>
Date: Wed Dec 18 20:40:40 2019 0800
添加了两个标签
commit 59b46c0fcd6432debbc567bbf28e94ddfcee0396
Author: zls <123@qq.com>
Date: Wed Dec 18 20:34:12 2019 0800
版本1
多次提交 |
---|
修改代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>前端教学</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>曾老湿*把*教学</h1>
<h2>教你如何快速上手前端语言</h2>
<img src="假装有图片.png" alt="假装有图片">
<p>就这么地吧</p>
</body>
</html>

git版自如切换 |
---|
MacBook-Pro:demo-1 driverzeng$ git log
commit 31e170a1fd7e95b564c50f327ee3f339aba703ac (HEAD -> master)
Author: zls <123@qq.com>
Date: Wed Dec 18 20:51:19 2019 0800
加了宣传图和宣传语
commit e7445d2c3d3cc45d7025dfa24327a9033f9289fb
Author: zls <123@qq.com>
Date: Wed Dec 18 20:40:40 2019 0800
添加了两个标签
commit 59b46c0fcd6432debbc567bbf28e94ddfcee0396
Author: zls <123@qq.com>
Date: Wed Dec 18 20:34:12 2019 0800
版本1
#穿越回旧版本
MacBook-Pro:demo-1 driverzeng$ git reset --hard 59b46c
HEAD is now at 59b46c0 版本1

注意:git reset --hard 十分危险,会将没有commit
但是已经add
的代码,删除
git高端查看历史版本 |
---|
#切换一次版本后,会发现,如下命令只能看见一个提交了
MacBook-Pro:demo-1 driverzeng$ git log
commit 59b46c0fcd6432debbc567bbf28e94ddfcee0396 (HEAD -> master)
Author: zls <123@qq.com>
Date: Wed Dec 18 20:34:12 2019 0800
版本1
#使用git reflog可以看到所有版本,包括回滚的版本
MacBook-Pro:demo-1 driverzeng$ git reflog
59b46c0 (HEAD -> master) HEAD@{0}: reset: moving to 59b46c
31e170a HEAD@{1}: commit: 加了宣传图和宣传语
e7445d2 HEAD@{2}: commit: 添加了两个标签
59b46c0 (HEAD -> master) HEAD@{3}: commit (initial): 版本1
思考:场景二 CEO:给我写一个官网 程序猿:花了一天一夜,做出来了,请CEO过目 CEO:有点丑,再改改 CTO:我觉得不错,要是能做彩色的背景就好了 程序猿:MMP,你们的意见就不能统一一下么?
git branch分支 |
---|

代码语言:javascript复制<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>前端教学</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
曾老湿*把*教学
CEO需求:如何快速学好前端
</body>
</html>
#添加代码
MacBook-Pro:demo-1 driverzeng$ git add .
#提交代码
MacBook-Pro:demo-1 driverzeng$ git commit -m 'v1'
#创建分支
MacBook-Pro:demo-1 driverzeng$ git branch fenzhi1
#按照老板的需求改代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>前端教学</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
曾老湿*把*教学
CEO需求:如何快速学好前端
修改一下老板的需求...
</body>
</html>
#添加项目
MacBook-Pro:demo-1 driverzeng$ git add .
#提交项目
MacBook-Pro:demo-1 driverzeng$ git commit -m 'ceo_branch1'

代码语言:javascript复制#切回CTO的项目需求
MacBook-Pro:demo-1 driverzeng$ git checkout fenzhi1
#添加项目
MacBook-Pro:demo-1 driverzeng$ git add .
#提交项目
MacBook-Pro:demo-1 driverzeng$ git commit -m 'cto_branch1'
#查看当前所在分支(*号在哪,就在哪个分支)
MacBook-Pro:demo-1 driverzeng$ git branch
* fenzhi1
master

git branch 1.基于当前的commit,创建一个新的分支 2.在哪个分支提交,代码就出现在哪个分支
git checkout 1.用于切换另一个分支 2.当前目录又未提交的代码,只要跟另一个分支不冲突,就不需要理会 3.如果冲突了,可以使用通灵术 git stash 也可以合并冲突
思考:场景三 CEO:昨天夜里我和CTO达成一致了,两个版本都要,我在上面,CTO在下面 程序猿:OK,那我合并一下
git merge分支合并 |
---|
首先要到达需要保留的那个分支,毋庸置疑,一定是 master分支
代码语言:javascript复制#切换分支
MacBook-Pro:demo-1 driverzeng$ git checkout master
Switched to branch 'master'
#合并分支
MacBook-Pro:demo-1 driverzeng$ git merge fenzhi1
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
如上结果,合并失败,因为两个分支有冲突的代码,同样都改了第n行代码...
#1.检查状态
MacBook-Pro:demo-1 driverzeng$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: index.html //两边都改了 index.html
no changes added to commit (use "git add" and/or "git commit -a")
MacBook-Pro:demo-1 driverzeng$ git status -sb
## master
UU index.html

手动删除标记,可用vim
代码语言:javascript复制#添加项目
MacBook-Pro:demo-1 driverzeng$ git add .
#提交代码,本次提交,不需要加任何参数
MacBook-Pro:demo-1 driverzeng$ git commit
[master 2332d68] Merge branch 'fenzhi1'

删除分支 |
---|
#查看分支
MacBook-Pro:demo-1 driverzeng$ git branch
fenzhi1
* master
#删除分支
MacBook-Pro:demo-1 driverzeng$ git branch -d fenzhi1
Deleted branch fenzhi1 (was 7bc7d93).
#再次检查
MacBook-Pro:demo-1 driverzeng$ git branch
* master