gitlab的使用

gitlab

原本在工作中使用的版本控制工具为svn,由于是多人合作开发,产生操作失误,会导致一些严重的后果,比如我的操作就导致项目搬家,重新控制,非常不好。

后来使用了gitlab,因为没有使用过git ,特地去网络上找了git的相关使用资料。

首先安装git
git是有密钥这一个东西的,我们要先生成密钥,然后在自己的git账户里设置密钥。

打开本地git bash,使用如下命令生成ssh公钥和私钥对

ssh-keygen -t rsa -C ‘xxx@xxx.com’ 然后一路回车(-C 参数是你的邮箱地址)

然后打开~/.ssh/id_rsa.pub文件(~表示用户目录,比如我的windows就是C:\Users\Administrator),复制其中的内容

打开gitlab,找到Profile Settings–>SSH Keys—>Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框,在Title对应的文本框中给这个sshkey设置一个名字,点击Add key按钮

到此就完成了gitlab配置ssh key的所有步骤,我们就可以愉快的使用ssh协议进行代码的拉取以及提交等操作了

再试一下拉取代码和提交代码,应该就不需要输入密码了

我是使用的idea插件进行git的操作的:

在配置完成后,对本地创建的项目点击add(添加进版本控制),commit directory(项目提交到本地仓库),push(将本地仓库里的代码推送到远程仓库),pull(将远程仓库的代码更新一份到本地,git pull 命令即可)

这些是git的命令

gitlab tool仓库(使用gitlab下载软件)

常用命令:

git init
初始化git仓库

git clone
克隆

git add .
添加到暂存区

git status
查看文件提交状态

git commit -m
提交

git remote add [repo name] [repo location]
增加远程仓库

git remote -v
查看远程仓库

git remote rm repo name
移除远程仓库

git push optional [repo name] [repo branch]
push到远程仓库

git pull
pull到远程仓库

git工作流程:

首先 git add 将文件添加版本控制,添加到暂存区,暂存区通过git commit 添加到本地仓库,
本地仓库,进行push 将 本地仓库存的每一个commit 推到远程仓库

git ignore:添加要忽略的文件后缀。(要使这个文件生效,那么就不能让要忽略的文件添加到本地仓库和远程仓库,也不能存在与暂存区,idea 有一个插件 ignore 可以尝试去使用以下)

关于分支操作:

在远程仓库会有一个master分支,这个分支是默认创建的分支,可以理解为,远程仓库会有很多分支这只是其中一条分支(主分支,稳定分支,不会经常修改)。

那么要进行功能开发push到远程仓库,进行保管,但是又不想干扰到主分支怎么办呢?
那就创建一个属于自己的分支,源分支为master分支,然后开始开发功能,功能开发完成后,将开发的分支合并进主分支中。这就是分支操作的流程。
这其中有一些细节:有好多人分别开发功能,创建了许多的分支,你开发功能完成之后,你的源分支master已经被别人合并过了,那么你再合并会出问题吗?
这里要讲的是:请把每一次的提交(commit)看成一个个的对象,在你开发时,主分支上有一个commit,你通过源分支创建了一个自己的分支,另一个人也创建了一个分支,在你进行commit时,你的本地仓库有两个commit了,另一个人也在他自己的本地仓库commit了,这时他也有两个commit ,然后你们要合并到主分支上,另一个人先合并。
在他的仓库中有两个commit 比 主分支多一个commit,于是主分支被合并,主分支就有两个不同的commit了,这时你再push,主分支和你自己的分支分别有一个相同的commit 和一个不同的commit,合并操作时,会将你的commit 给 合并到 主分支中去,所以这其实只是一个 commit的转移,全程操作commit。

我把每一个commit 看成一个叠箱子的过程(每一个箱子都是一个commit)。主分支上的箱子越堆越多,自己造的箱子都堆到主分支上去。(有点抽象,但是很好理解)

分支在表达上,类似于河流的分流,但是其实不是这样的

在系统创建分支时,就有一条将commit串起来的一条“流”。
我们每创建一条分支,其实就是创建了一个指针,这个指针指向最新的commit。
我们进行分支的切换,就是在这些指针中间切换。

当我们在另一条分支上工作并且提交了之后,那么这条“流”就会多出一段来,多出的一段就是刚才提交的commit。
这时,新创建的分支指向最新提交的,默认分支则没有变化,可以自由的在分支之间进行切换,当你切换分支的时候 git会重置你的工作目录使你看起来像回到了没提交之前。

分支切换

在远程有多个分支时,将分支checkout到本地,这时本地有两条分支,一条为测试分支,一条为主分支,这时测试分支与主分支完全相同,在测试分支中进行修改操作但是没有添加到暂存区,没有提交的话,进行分支切换,切换到主分支时,在测试分支中的操作在主分支中也会出现,尽管这是两个不同的分支。
在测试分支进行添加暂存区并且提交到本地仓库之后,再切换到主分支,这时在测试分支作的改变在主分支就不会出现了,测试分支的祖先就成了主分支。这时测试分支进行修改但是不提交,要进行分支切换的话,git就会提醒你本地正在进行修改,要切换分支的话

分支合并

在多个分支工作,提交之后,需要把分支中的内容给提交到主分支(master)上,那么就需要合并分支。
合并分支需要发出合并请求,在合并过程中,如果你当前提交的分支是主分支的直接上游,那么指向master分支的指针就会直接指向这个需要合并的超前分支的最新commit上。

如果是两个不同的分支进行合并,两条分支在更早的时间点产生了分叉,并且其中一条分支合并入了master,所以现存的这两条分支是处在一个分叉上要将它们进行合并就有一些不同,这时 git会将两个分支的最新commit和两个分支的直接祖先进行一个三方合并,合并成一个新的commit,并且master指针指向这个commit,需要说的是 git会自己选择哪一个提交作为最优的共同祖先,并以此作为合并的基础。

如果两个分支对同一个文件的同一个地方进行了修改,那么就会出现冲突,需要自己手动解决冲突,此时git做了一个合并,但是并没有自动创建一个commit,git会暂停下来等你解决冲突了之后,使用add命令,将它标记为冲突已解决状态。这时再进行提交,则会产生一个commit了。

在进行分支合并了之后最好删除源分支,重新创建一个分支,可以避免许多不必要的麻烦

git ignore(忽略文件)

最近学习git的使用的时候,可以将某些文件忽略掉,不需要提交。在当时进行git的初始化的时候,没有想到这一层,将我本地的项目全部都进行了 Add(添加到了暂存区),然后进行git ignore 的文件的创建的时候,我发现了这个文件似乎没有作用,进行了百度,看了很多别人的博客发现时由于git ignore对进行跟踪的文件无法进行忽略,需要将暂存区中这部分文件给删除。
使用
git rm -r –cached . 清空暂存区
清空了之后,自己进行 add 添加暂存区 就可以了,注意远程仓库也需要删除想忽略的文件

本地分支操作

将远程分支master分支拉到本地后 在这之上做出修改,提交到远程分支,分支名称可以自己定,如果远程没有这个分支那么会创建一个,如果主分支更新了,可以执行更新,将主分支master更新到本地

### GitLab 使用指南与常见问题解决方案 GitLab 是一款功能强大的 DevOps 平台,支持从项目规划、源码管理、CI/CD 到监控和安全审计的全流程开发协作。以下是关于 GitLab 的基本使用方法以及一些典型问题的排查建议。 #### 基础操作指南 ##### 安装配置 在 Linux 上安装 GitLab 可通过官方推荐的方式进行一键部署: ```bash # 添加 GitLab 包仓库并信任 GPG 密钥 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo apt-get install gitlab-ce ``` 随后编辑 `/etc/gitlab/gitlab.rb` 文件来设定外部访问地址和其他参数: ```ruby external_url 'http://your-domain.example' ``` 保存后执行 `gitlab-ctl reconfigure` 来应用更改[^2]。 ##### 用户权限管理 管理员可以通过 Web UI 创建组、分配成员角色,并控制项目的可见性和分支保护策略。对于更复杂的场景,可以启用 LDAP 或 OAuth 集成实现统一身份认证。 ##### CI/CD 流水线构建 创建 `.gitlab-ci.yml` 文件定义流水线阶段(stages)、作业(jobs)及其依赖关系。例如一个简单的 Node.js 构建脚本可能如下所示: ```yaml image: node:latest cache: paths: - node_modules/ build-job: stage: build script: - npm install - npm run build ``` 提交该文件至根目录即可触发自动化的测试与打包流程。 --- #### 故障排除技巧 ##### 内部 API 不可达错误 当运行 `gitlab-shell check` 出现 **Internal API unavailable** 错误提示时,应确认 GitLab 主体服务是否正常启动;如果未响应,则尝试重启整个套件并通过命令 `gitlab-ctl status` 查看状态反馈。另外还需核对 `/opt/gitlab/embedded/service/gitlab-shell/config.yml` 中指定的端口及路径设置是否匹配当前环境需求[^1]。 ##### 存储路径缺失异常 迁移过程中可能会遭遇类似 `"storage path have to exist"` 的警告信息。此时需手动建立目标存储结构并将所有权授予对应账户——通常为 `git` 用户所属群组下的特定子目录树状布局。完成后调用 `chown -R git:git /path/to/repos && chmod -R ug+rwX,o-rwx /path/to/repos` 赋予合适权限以供后续读写操作顺利开展[^3]。 ##### 访问受限处理方案 某些情况下会出现 HTTP 403 Forbbiden 页面阻断合法请求流的情况。这往往源于 Rack Attack 插件基于速率限制机制临时封禁了疑似恶意行为者的客户端 IP 地址池。为此可调整 `/etc/gitlab/gitlab.rb` 内置白名单列表字段值新增受信网络段落条目而后重载守护进程使其生效于新会话连接过程之中[^4][^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值