企业级自动化代码发布——Git基础与介绍

Git简介

Git是一种分布式版本控制系统

git与SVN对比

项目 GIT SVN
操作 概念复杂,命令多,不易上手 简单易操作
分支价格 分支廉价 分支昂贵
代码管理 分布式管理 集中式管理
保存 保存历史版本的完整文件 保持差异文件

git核心

Git最核心的一个概念就是工作流

  • 工作区(Workspace)是电脑中实际的目录
  • 暂存区(Index)类似于缓存区域,临时保存你的改动
  • 仓库区(Repository),分为本地仓库和远程仓库

通常提交代码分为3步:
git add 从工作区提交到暂存区
git commit 从暂存区提交到本地仓库
git push 从本地仓库提交到远程仓库
企业级自动化代码发布——Git基础与介绍_第1张图片

git的安装与配置

安装git服务端

#安装yum依赖及软件
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y
yum install -y git
# 创建用户组及用户
groupadd git
useradd git -g git
passwd git
# 初始化空的git版本库
[root@git-server ~]# mkdir /home/git/gitrepo
[root@git-server ~]# cd /home/git/gitrepo
[root@git-server gitrepo]# git init --bare runoob.git	#不指定默认为.git
[root@git-server gitrepo]# cd ..
[root@git-server git]# chown -R git:git gitrepo
# 克隆官方的仓库到本地仓库
git clone https://github.com/jenkins-docs/simple-java-maven-app.git

git服务端配置

cd /etc/ssh
vim sshd_config
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

systemctl restart sshd
cd /home/git
mkdir .ssh
chown -R git:git .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
chown -R git:git authorized_keys
systemctl restart sshd

在服务端authorized_keys写上客户端的公钥ip_rsa.pub

[git@git-server ~]$ git config --global user.name "Kelsey1998"
[git@git-server ~]$ git config --global user.email "[email protected]"
[git@git-server ~]$ cat .gitconfig
[user]
        name = Kelsey1998
        email = [email protected]

版本库(仓库)创建

[git@git-server ~]$ mkdir -p workspace/demo
[git@git-server ~]$ cd workspace/demo #工作区
[git@git-server dome]$ git init
Initialized empty Git repository in /home/git/workspace/demo/.git/
# 查看git版本库
[git@git-server demo]$ ls -ld .git
drwxrwxr-x. 7 git git 119 May 30 16:17 .git
表项 目录
版本库 workspace/demo/.git 又叫仓库
工作区 workspace/demo .git版本库所在的目录

git全局文件

用户主目录下的.gitconfig 用户个人
系统文件/etc/gitconfig 全局

git用户名和邮箱地址

[git@git-server ~]$ git config --global user.name "Kelsey1998"
[git@git-server ~]$ git config --global user.email "[email protected]"
[git@git-server ~]$ cat .gitconfig
[user]
        name = Kelsey1998
        email = [email protected]

配置的用户名和邮箱地址将在版本库提交时用到

git别名

[root@git-server ~]# git config --system alias.st status
[root@git-server ~]# git config --system alias.co checkout
[root@git-server ~]# git config --system alias.ci commit
[root@git-server ~]# git config --system alias.br branch
[git@git-server ~]$ cat /etc/gitconfig
[alias]
        st = status
        co = checkout
        ci = commit
        br = branch

git命令高亮显示

[git@git-server ~]$ git config --global color.ui true
[git@git-server ~]$ cat .gitconfig
[user]
        name = Kelsey1998
        email = [email protected]
[color]
        ui = true
级别 有效目录
Local 当前项目有效(工作目录/.git/config)
Global 当前用户有效(用户目录/.gitconfig)
system 所有用户有效(Git目录/etc/gitconfig)

git命令

git status

  • git status
    查看项目的当前状态
  • git status -s
    --short,输出标记为两列,第一列是对staging暂存区而言,第二列是对workspace工作区而言
状态 含义
? 未被添加到缓存
A 本地新增的文件
M 文件的内容或者mode被修改了
AM 文件在被添加到缓存之后又有改动,需要再次被git add
D 本地删除的文件
R 修改文件名

企业级自动化代码发布——Git基础与介绍_第2张图片

git add

git add 将文件添加到缓存

git add .	#添加当前项目的所有文件
git add <filename1,filename2>	#添加指定文件

git reset HEAD

git reset HEAD 取消已缓存的内容

git diff

git diff 显示已写入缓存与已修改但尚未写入缓存的改动的区别

应用场景 命令
尚未缓存的改动 git diff
查看已缓存的改动 git diff --cached
查看已缓存的与未缓存的所有改动 git diff HEAD
显示摘要而非整个diff git diff --stat

git commit

git commit 将缓存区内容添加到仓库中
git commit -m "description"

git rm

git rm <file>	#从Git中移除某个文件
git rm --cached <file>	#把文件从暂存区域移除(保留在当前的作目录中)
git rm -f <file>	#把文件从暂存区域移除(不保留在当前的作目录中)
git rm -r <dir>	   #递归删除

git mv

git mv 移动或重命名一t个文件、目录、软连接

提交到Github

git remote add anliu [email protected]:an1iu520/anliutest.git
git push -u anliu master

git客户端

git clone [email protected]:gitrepo/simple-java-maven-app

你可能感兴趣的:(运维自动化)