记录gitlab使用以及过程中踩过的坑 - Go语言中文社区

记录gitlab使用以及过程中踩过的坑


新入职公司,公司使用git作为代码版本控制工具,然后自己搭建私有的gitlab来管理代码。以下记录以下我学习使用gitlab的过程,以及过程中所踩过的坑。

版本控制系统都能干什么?

自动生成备份
知道改动的地方
随时回滚

常见的版本控制系统

1.git
是一个分布式版本控制系统,在每个使用者的电脑上有一个完整的数据仓库,没有网络依然可以使用git,当然为了习惯及团队协作,会将本地数据同步到git服务器或者github等代码仓库
2. svn
集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法提交或者备份文件

GitLab 简介

  • GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
  • 可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。
  • 可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。

补充 Git、Gitlab与Github区别

  • Git 是一种版本控制系统,是一个命令,是一种工具
  • Github,Gitlab等产品都是第三方基于git这项技术开发的
  • Github 是一个基于git实现的在线代码仓库,包含一个网站界面,向互联网开放
  • Gitlab 是一个基于git实现的在线代码仓库软件,你可以用gitlab自己搭建一个类似于github一样的系统,一般用于在企业、学校等内部网络搭建git私服

Gitlab的实现原理

在这里插入图片描述
上面的就是整个Git的工作流程:
其实上面的都是一些GIt的命令,先不管命令是做什么的,这里面有四个大块的东西,他们分别是

  1. Remote:远程仓库
  2. Repository:本地仓库
  3. index:暂存区
  4. workspace:工作区

Remote远程仓库:
远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是最旧的

Repository本地仓库:
这里面保存了对象被提交过的各个版本,比起工作区和暂存区的内容,它更旧一些
git commit后同步index的目录树到本地仓库,方便下一步通过git push同步本地仓库与远程仓库的同步

index暂存区:
.git目录下的index文件,暂存区会记录git add添加文件的相关信息(文件名、大小),不保存文件实体,通过id指向每个文件的实体,可以使用git status查看暂存区的状态,暂存区标记了你当前工作区中那些内容是被git管理的,当你完成某个需求或者功能后需要提交代码,那么第一步就是通过git add 先提交到暂存区,被git管理

workspace工作区:
程序员进行开发改动的地方,是你当前看到的,内容也是最新的,平常我们开发就是拷贝远程仓库中的分支,基于该分支进行开发,在开发的过程就是在工作区的操作

总结:
任何对象都是在工作区中诞生和修改的
任何修改都是从进入index区才开始被版本控制的 只有把修改的代码提交到本地仓库,该修改才能在仓库中留下痕迹
与协助者分享本地的修改,可以push到远程仓库来共享

下面这张图很明确的表现了他们的关系

在这里插入图片描述

GitLab的使用

一、如何本地git客户端生成ssh key(使用ssh方法拉取代码要配置ssh秘钥,使用http方法这不需要,但是每次都需要输入重新输入账号密码)

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

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

在这里插入图片描述

  1. 然后打开/.ssh/id_rsa.pub文件(表示用户目录,比如我的windows就是C:UsersAdministrator),复制其中的内容或者直接

    cd ~/.ssh
    ls(查看目录是否有id_rsa.pub文件)
    查看公钥:cat id_rsa.pub    或者vim id_rsa.pub
    
  2. 打开gitlab,找到Profile Settings–>SSH Keys—>Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框,在Title对应的文本框中给这个sshkey设置一个名字,点击Add key按钮

二、基本操作

  • 登录
  • 修改密码:

三、项目管理

  • 新建项目
  • 编辑或删除项目

四、gitlab简单配置

	git config --global user.name "李雁"
	git config --global user.email "liyan1907@pconline.com.cn"

五、创建新版本库

	git clone git@192.168.244.80:test-group/feedback.git
	cd feedback
	touch README.md
	git add README.md
	git commit -m "add README"
	git push -u origin master

六、已存在的文件夹

	cd existing_folder
	git init
	git remote add origin git@192.168.244.80:test-group/feedback.git
	git add .
	git commit -m "Initial commit"
	git push -u origin master

七、已存在的 Git 版本库

	cd existing_repo
	git remote rename origin old-origin
	git remote add origin git@192.168.244.80:test-group/feedback.git
	git push -u origin --all
	git push -u origin --tags

使用gitlab过程中踩到的坑

1. 从远程仓库clone代码,出现502错误
在这里插入图片描述
原因:由于我设置了全局代理,代理地址指向了http:proxy=http://192.168.244.80:8888 而这个地址是指向的之前测试的gitlab地址,现在已经打不开了

设置代理
git config --local http.proxy 127.0.0.1:8580

取消代理
git config --local --unset http.proxy

参数
–global 全局
–local 当前项目

2. git 出现 fatal: refusing to merge unrelated histories 错误
git pull 失败 ,提示:fatal: refusing to merge unrelated histories
其实这个问题是因为 两个 根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要去推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并

具体的方法, 一个种方法: 是 从远端库拉下来代码 , 本地要加入的代码放到远端库下载到本地的库, 然后提交上去 , 因为这样的话, 你基于的库就是远端的库, 这是一次update了

第二种方法:
使用这个强制的方法

git pull origin master --allow-unrelated-histories

后面加上 --allow-unrelated-histories , 把两段不相干的 分支进行强行合并
后面再push就可以了 ,gitlab是别名

git push gitlab master:init

如何快速关联/ 修改 Git 远程仓库地址

一、使用 Git 命令

  1. 进入本地 Git 仓库根目录下;
  2. 键入: git remote 查看远程仓库名称:origin ;
  3. 键入:git remote get-url origin 查看远程仓库地址;
  4. 键入:git remote set-url origin git@10.1.22.30:LauncherGroup/Launcher.git ( 如果未设置ssh-key,此处仓库地址为 http://… 开头)

二、使用 Git 命令

  1. 先删除本地仓库当前关联的无效远程地址,再为本地仓库添加新的远程仓库地址
  2. 进入本地 Git 仓库根目录下;
  3. 键入: git remote 查看远程仓库名称:origin ;
  4. 键入:git remote rm origin 删除本地仓库当前关联的远程仓库;

VS Code使用Git管理代码

  1. 把VSCode的终端配置成为 Git -bash 终端
    在这里插入图片描述
  2. 快捷键 Ctrl+~ 打开终端
  3. git add .
    在这里插入图片描述
  4. git commit -m “commit”
    在这里插入图片描述
    5、git push
    在这里插入图片描述
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_38812197/article/details/98059564
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢