DevOps

GitLab

2019-02-22  本文已影响268人  索伦x

什么是 Git

概述

Git

安装 Git

下载

下载地址:https://git-scm.com/downloads

Git官网

安装

双击安装文件,然后出现安装向导界面,点击下一步(Next)即可

Git安装

接着出现授权信息界面, Next即可

image

选择安装路径

image

选择文件关联,如果你不清楚,直接默认,下一步即可

image

接着出现开始菜单文件夹,默认,下一步即可

image

然后是是否配置Path的配置,选择中间一个,可以通过 Windows命令行(CMD)调用 git 命令。 然后点击下一步

image

选择回车换行的格式。默认即可.(检出时转换为Windows风格,提交时转换为Linux风格.)

image

然后是安装进度界面

image

安装完成. 去掉那个查看版本说明的复选框,点击完成(Finish)按钮即可

image

可以在cmd里面测试是否设置了Path,是否安装成功. 在CMD中输入 git 或者 git --version 试试

image

Git 的一般工作流程

image

Git 的基本操作

获取与创建项目命令

git init

用 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。

git init

git clone

使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

git clone [url]

基本快照

git add

git add 命令可将该文件添加到缓存

git add <filename>

git status

git status 以查看在你上次提交之后是否有修改。

git status
git status -s

git diff

执行 git diff 来查看执行 git status 的结果的详细信息。

git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。

git commit

使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中。

Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。

git config --global user.name 'yourname'
git config --global user.email youremail

将文件写入缓存区并提供提交注释

git commit -m 'update message'

git reset HEAD

git reset HEAD 命令用于取消已缓存的内容。

git reset HEAD -- <filename>

拉取与推送

git pull

git pull命令用于从另一个存储库或本地分支获取并集成(整合)。git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并,它的完整格式稍稍有点复杂。

git pull <远程主机名> <远程分支名>:<本地分支名>

将远程存储库中的更改合并到当前分支中。在默认模式下,git pullgit fetch后跟git merge FETCH_HEAD的缩写。更准确地说,git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。

git push

git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相似。

git push <远程主机名> <本地分支名>:<远程分支名>

标签

git tag

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。

比如说,我们想为我们的 商城 项目发布一个"1.0.0"版本。 我们可以用 git tag -a v1.0.0 命令给最新一次提交打上(HEAD) "v1.0.0" 的标签。

-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 我推荐一直创建带注解的标签。

git tag -a v1.0.0

如果我们要查看所有标签可以使用以下命令:

git tag

TortoiseGit 简化 Git 操作

TortoiseGit, 中文名海龟 Git. 海龟 Git 只支持 Windows 系统, 有一个前辈海龟 SVN, TortoiseSVN 和 TortoiseGit 都是非常优秀的开源的版本库客户端. 分为 32 位版与 64 位版.并且支持各种语言,包括简体中文

下载

下载地址:https://tortoisegit.org/download/

image

安装

我们需要先安装程序包,然后安装语言包(LanguagePack). 因为TortoiseGit 只是一个程序壳,必须依赖一个 Git Core,也就是上一节我们安装的 Git. 所以安装前请确定已完成上一节的操作. 下面以64位版本为演示(64,32位除文件名不一样,其他的操作都一致)

image image image image image image

安装语言包

双击打开语言包安装程序

image

点击下一步(Alt+N), 语言包会自动安装完成

image

配置

在空白处点击鼠标右键, 选择 --> TortoiseGit --> Settings, 然后就可以看到配置界面

image

选中General,在右边的 Language中选择中文. 不勾选自动升级的复选框,可能还需要指定 Git.exe 文件的路径

再次点击鼠标右键,可以看到弹出菜单中已经变成中文. 原来的 Settings 变成 设置; Clone 变为 克隆

image

基于 Docker 安装 GitLab

我们使用 Docker 来安装和运行 GitLab 中文版,由于新版本问题较多,这里我们使用目前相对稳定的 10.5 版本,docker-compose.yml 配置如下:

version: '3'
services:
    web:
      image: 'twang2218/gitlab-ce-zh:10.5'
      restart: always
      hostname: '192.168.75.145'
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://192.168.75.145:8080'
          gitlab_rails['gitlab_shell_ssh_port'] = 2222
          unicorn['port'] = 8888
          nginx['listen_port'] = 8080
      ports:
        - '8080:8080'
        - '8443:443'
        - '2222:22'
      volumes:
        - /usr/local/docker/gitlab/config:/etc/gitlab
        - /usr/local/docker/gitlab/data:/var/opt/gitlab
        - /usr/local/docker/gitlab/logs:/var/log/gitlab

安装完成后的工作

image image

注意: 如果服务器配置较低,启动运行可能需要较长时间,请耐心等待

GitLab 的基本设置

GitLab 的基本设置


第一次使用时需要做一些初始化设置,点击“管理区域”-->“设置”

image

账户与限制设置

关闭头像功能,由于 Gravatar 头像为网络头像,在网络情况不理想时可能导致访问时卡顿

image

注册限制

由于是内部代码托管服务器,可以直接关闭注册功能,由管理员统一创建用户即可

image

GitLab 的账户管理

使用时请不要直接通过 root 用户操作,需要先创建用户,然后通过创建的用户操作,如果你是管理员还需要为其他开发人员分配账户

创建用户

点击“管理区域”-->“新建用户”

image

设置账户信息

同时你可以将自己设置为管理员

image

修改用户密码

由于我们创建时并没有配置邮箱,所以还需要重新编辑用户信息并手动设置密码

image image

退出并使用新账户登录

image

注意:创建完账户,第一次登录时还会提示你修改登录密码

GitLab 创建第一个项目

点击 + 号 --> 新建项目

image

输入项目名称及描述信息,设置可见等级为私有,这样别人就看不见你的项目

image

初始化项目

我们选择通过增加一个 README 的方式来初始化项目

image

直接提交修改即可

image

使用 SSH 的方式拉取和推送项目

生成 SSH KEY


使用 ssh-keygen 工具生成,位置在 Git 安装目录下,我的是 C:\Program Files\Git\usr\bin

输入命令:

ssh-keygen -t rsa -C "your_email@example.com"

执行成功后的效果:

Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation。保留所有权利。

C:\Program Files\Git\usr\bin>ssh-keygen -t rsa -C "topsale@vip.qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Lusifer/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Lusifer/.ssh/id_rsa.
Your public key has been saved in /c/Users/Lusifer/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cVesJKa5VnQNihQOTotXUAIyphsqjb7Z9lqOji2704E topsale@vip.qq.com
The key's randomart image is:
+---[RSA 2048]----+
|  + ..=o=.  .+.  |
| o o + B .+.o.o  |
|o   . + +=o+..   |
|.=   .  oo...    |
|= o     So       |
|oE .    o        |
| .. .. .         |
| o*o+            |
| *B*oo           |
+----[SHA256]-----+

C:\Program Files\Git\usr\bin>

复制 SSH-KEY 信息到 GitLab

秘钥位置在:C:\Users\你的用户名\.ssh 目录下,找到 id_rsa.pub 并使用编辑器打开,如:

image

登录 GitLab,点击“用户头像”-->“设置”-->“SSH 密钥”

image

成功增加密钥后的效果

image

使用 TortoiseGit 克隆项目

image image image image

使用 TortoiseGit 推送项目(提交代码)

.gradle
*.sw?
.#*
*#
*~
/build
/code
.classpath
.project
.settings
.metadata
.factorypath
.recommenders
bin
build
target
.factorypath
.springBeans
interpolated*.xml
dependency-reduced-pom.xml
build.log
_site/
.*.md.html
manifest.yml
MANIFEST.MF
settings.xml
activemq-data
overridedb.*
*.iml
*.ipr
*.iws
.idea
.DS_Store
.factorypath
dump.rdb
transaction-logs
**/overlays/
**/logs/
**/temp/
**/classes/
image image image image

查看 GitLab 确认提交成功

image

实战

分支合并&冲突解决


场景:两个团队同时拉分支修改一个项目,合并代码时出现冲突

  1. 创建两个分支,team1、team2,并推送到服务器
  2. 两个分支修改同一个源码文件并推送到服务器
  3. 主干先合并分支team1,推送到服务器,然后再合并team2
  4. 解决冲突、编辑冲突并且再次提交 (右键编辑冲突, 右键使用此文本块,然后保存)


    编辑冲突
  5. 再次提交完成合并,并推送到服务器

GitLab 使用 SSH 免密登录

本节视频


常见错误

Error: disconnected no supported authentication methods available

上一篇下一篇

猜你喜欢

热点阅读