操作系统:win10
Git 版本:2.28.0
Git 入门
Git 采用 C 语言编写,是目前世界上最先进的分布式版本控制系统。
windows 安装
直接进入官网 https://git-scm.com/downloads 下载对应的版本按默认选项安装即可,安装完成后在开始菜单打开 git bash,打开弹出命令行窗口一样的东西说明安装成功了~
如果需要在 cmd 命令提示符中直接使用 git 命令,需要将git安装路径添加到环境变量->系统变量->path 中,如 D:Program FilesGitin
安装完成可使用 git --version 查看git版本
配置用户信息
Git 安装完成后需要先配置全局用户信息,表示这台机器上所有的 Git 仓库都会使用这个配置。
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
概念
- 版本库:Git 版本库又称为仓库(repository),可以简单理解为一个目录,这个目录里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,都能够通过 Git 进行跟踪。
- 工作区:电脑里能看到的目录,如 demo 文件夹就是一个工作区
- 暂存区:工作区里的隐藏文件夹 .git 就是 Git 的版本库
Git 的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫 index)的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫 HEAD。
基础操作
1. 创建版本库
进入项目执行 git init 命令将其变成一个 Git 仓库,执行成功后可以看到当前目录下多了一个 .git 目录,是 Git 用来跟踪管理版本库的
注:切勿手动修改 .git目录,创建 Git 版本库时会自动创建一个 master 分支。
2. 把文件添加到版本库
在 demo 中新建 readme.txt,输入信息并保存(注意:一定不要使用 windows 自带的记事本编辑)
(1) 把文件添加到仓库:git add readme.txt,该命令可多次使用来添加多个文件,也可使用 git add . 一次性添加所有文件
(2) 把文件提交到仓库:git commit -m “add readme.txt”,-m 后面跟的是本次的提交说明
使用 git add 命令实际上是把工作区修改的文件修改添加到了暂存区,git commit 提交时会把暂存区的内容提交到当前分支。
3. 查看仓库状态
- git diff <file>:查看文件修改内容,如 readme.txt 之前 commit 之后又进行了一些修改,但是忘记了修改了什么内容,此时就可以使用该命令来查看具体的修改内容。
- git status:查看当前仓库的状态,如上面修改 readme.txt 之后执行 git add 操作,在 commit 之前我们执行 git status 命令查看一下当前仓库的状态,它会提示我们 readme.txt 被修改了,将要被提交。
4. 版本回退
我们不停的对文件进行修改提交、修改提交操作,某一天提交后发现出现了问题,想要回到之前的版本,这个时候该怎么办呢?
先来看一下我们提交的版本:
版本1 readme.txt:
Git is a free software.
版本2 readme.txt:
Git is a free software.
This is my first git project.
- git log 查看提交日志,确认回退版本,--pretty=oneline 参数显示简洁的日志
在 Git 中,HEAD 表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上个版本,要往上100个版本时可以写成 HEAD~100。
- git reset:回退到上一个版本,即 add readme.txt 这个版本,也可以使用参数--hard指定回退到哪个版本
- git reflog:查看执行的历史命令
如果万一回退之后后悔了,又找不到最新提交的版本号可以查看执行的历史命令
5. 撤销修改
- git checkout -- <file> 命令可以丢弃工作区的修改,有两种情况:
一种是 file 还没有使用 add 命令添加到暂存区,撤销修改就回到和版本库一模一样的状态;如修改 readme.txt 后执行 checkout 命令,执行命令前后可以使用 git status 查看仓库状态
一种是 file 已经使用 add 命令添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。如修改 readme.txt 并执行 add 命令后,再次修改 readme.txt,执行 checkout 命令,执行命令前后可以使用 git status 查看仓库状态
6. 删除文件
- git rm 文件名:从版本库删除文件
- 误删文件也可以使用 git checkout -- <file> 命令从版本库恢复文件
远程仓库
Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上。通常情况下都是搭建一台运行了 Git 的服务器,24 小时开机,所有人都从这台服务器的仓库里提交、拉取代码。学习时可以使用 Github (一个提供Git仓库托管服务的网站,注册登录即可使用免费的 Git 远程仓库),由于本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以先需要在 Github 上添加 ssh-key,这样只有添加了 ssh-key 才能推送到 Github 仓库上。
注:Git 支持多种协议,包括 https,但 ssh 协议速度最快。
1. Github 配置 ssh key
创建 ssh-key
mkdir ~/.ssh # 创建.ssh文件 cd ~/.ssh git init git config --global user.name "Administrator" # 添加一个全局的用户名和邮箱 git config --global user.email "admin@example.com" ssh-keygen -t rsa -C "admin@example.com"" # 生成 ssh-key
创建成功后在用户主目录 .ssh 目录里有 id_rsa 和 id_rsa.pub 两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露,id_rsa.pub 是公钥。
查看
# 查看 git ssh-key,打开 git bash cd ~/.ssh # 若没有则需要先创建,已经有了直接进入该目录查看 id_rsa.pub 文件 ls cat id_rsa.pub
在github上配置ssh key
登录 Github 网站,打开“Account settings”->"SSH and GPG Keys”->"New ssh key",将 id_rsa.pub 文件内容粘贴到 Key 文本框内保存即可。
2. Github上添加远程仓库
在 Github 上新建远程仓库
根据页面提示克隆出新的仓库,或与已有仓库进行关联
3. 将 github 上的仓库克隆到本地
git clone github仓库地址
4. 关联已有仓库
git remote add origin 远程仓库地址
5. 远程操作
拉取:git pull 远程主机名 远程分支名:本地分支名:git pull origin master
推送:git push 远程主机名 本地分支名:远程分支名:git push origin master
6. 分支管理
查看分支:git branch ,当前分支前面会有一个 * 号
创建分支:git branch <dev>
创建并切换分支:git checkout -b <dev>、git switch -c <dev>(推荐)
切换分支:git checkout <dev>、git switch <dev>
合并指定分支到当前分支:git merge <dev>
删除分支:git branch -d <dev>
7. 标签管理
创建标签:git tag <tagname>
查看所有标签:git tag
查看标签信息:git show <tagname>
Gitlab 简介
简介
Github 分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需服务器安装。
Gitlab 分布式在线代码仓库托管软件,分为社区免费版本与企业收费版本,都需要服务器安装。
Gitlab 优势:
- 开源免费,适合中小型公司
- 差异化版本管理,离线同步及强大的分支管理功能
- 便捷的 GUI 操作界面以及强大的账户权限管理功能
- 集成度高
- 支持内置 HA,保证在高并发下仍旧可以实现高可用性
Gitlab 主要服务构成:
- Nginx:静态 web 服务器
- gitlab-workhorse:轻量级的反向代理服务器
- gitlab-shell:用于处理 Git 命令和修改 authorized keys 列表
- Logrotate:日志文件管理工具
- Postgresql:数据库
- Redis:缓存服务器
工作流程
- 创建并克隆项目
- 创建项目Feature分支
- 编写代码并提交至分支
- 推送项目分支至远程 gitlab 服务器
- 代码检查并提交 master 主分支合并申请
- 项目领导审查代码并确认合并申请
- 部署
Docker 部署 Gitlab
1. 直接部署
官方文档:https://docs.gitlab.com/omnibus/docker/
docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume $GITLAB_HOME/config:/etc/gitlab:Z --volume $GITLAB_HOME/logs:/var/log/gitlab:Z --volume $GITLAB_HOME/data:/var/opt/gitlab:Z gitlab/gitlab-ee:latest
linux 下直接 pull 官方的 Gitlab 镜像即可使用,但是当我们把 volume 配置成 windows 本地路径时,volume 映射会出现一些问题,导致报错。
Error executing action create on resource 'storage_directory[/var/opt/gitlab/git-data]
我们可以使用 docker volume 数据卷挂载的方式来运行容器
docker volume create gitlab-logs docker volume create gitlab-data docker run --detach ` --name gitlab ` --restart always ` --hostname localhost ` --publish 443:443 --publish 8082:80 --publish 22:22 ` --volume D:dockergitlabconfig:/etc/gitlab ` --volume gitlab-logs:/var/log/gitlab ` --volume gitlab-data:/var/opt/gitlab ` gitlab/gitlab-ce
等待一段时间初始化完成后,浏览 http://localhost:8082/ 即可访问 gitlab,默认管理员账号为 root,重置一下密码即可使用。
2. docker-compose 部署
docker-compose.yml 文件
# Compose file 版本号,和 docker 版本号对应。3 支持 docker 1.13.0+ version: "3" # services 节点下包含多个待创建的 Docker Container services: # web 节点就是待启动的 gitlab 容器 web: image: gitlab/gitlab-ce:latest container_name: "gitlab" restart: always hostname: '10.129.115.254:8082' environment: TZ: "Asia/Shanghai" GITLAB_OMNIBUS_CONFIG: | gitlab_rails["time_zone"] = "Asia/Shanghai" gitlab_rails["gitlab_shell_ssh_port"] = 10022 nginx["listen_port"] = 80 ports: - "8082:80" - "10022:22" volumes: - E:dockergitlabconfig:/etc/gitlab - gitlab-logs:/var/log/gitlab - gitlab-data:/var/opt/gitlab volumes: gitlab-logs: gitlab-data:
打开 cmd,进入 docker-compose.yml 文件所在目录,运行命令 docker-compose up -d 即可创建并启动容器。
Gitlab 使用
前提:本机已安装 git
1. 创建项目
浏览器打开 http://localhost:8082/ 页面,新建一个项目保存
保存成功后进入项目详情页,提示需要添加 ssh-key 才能拉取、推送代码,按照页面上的步骤添加ssh-key后进行操作即可。
点击 “Add SSH Key” 添加你自己的ssh key保存即可
现在就可以使用 git pull、git push 来推送、获取代码了~~~