目录
1. GitLab与GitHub介绍
- 二者是同类型的版本管理系统,他就是中央仓库,帮我们托管代码
- 中央仓库我们可以自己部署,也可以使用第三方(gitlab、github)
gitLab介绍
- GitLab 是利用 Ruby On Rails 开发的一个开源版本管理系统,实现了一个自托管的 Git 项目仓库。
- 是集代码托管、测试、部署于一体的开源 git 仓库管理软件,可通过 web 界面来进行访问公开的或私人项目
- 与 Github 类似,GitLab 能够浏览代码,管理缺陷和注释。可以管理团队对仓库的访问
- https://gitlab.com/users/sign_in
- 登录之前,需要先注册账号
Github
- Github 只能创建公开项目,若创建私人的项目,是收费的
- GitLab 在企业中使用较多,可以本地部署
gitLab 注册
登录 gitlab
安装 gitLab 服务器
2. 私有GitLab服务器部署
- 需要有一套 Linux 操作系统
- 在 CentOS 系统上,下面的命令将会打开系统防火墙HTTP和SSH访问
- 添加 GitLab 镜像源并安装
- 配置并启动 GitLab
- 修改默认端口号
3. GitLab创建仓库
直接使用远程的 gitlab,而不是本地自己部署的 gitlab 服务器
先登录gitlab ,然后创建工程
创建成功
让我们做一些全局的设置(Git global setup)
- 在本地使用下面的命令进行设置
- 配置全局的用户名和邮箱
git config --global user.name "zgd123121"
git config --global user.email "xiaozheng123121@163.com"
Create a new repository(创建新的存储库)
git clone https://gitlab.com/zgd123121/mygitlabproject.git # 这是远程仓库的地址,让你克隆
cd mygitlabproject # 切换到目录 mygitlabproject
git switch -c main
touch README.md # 创建文件 README.md 文件
git add README.md # 添加
git commit -m "add README" # commit 提交
git push -u origin main # 然后 push,其中origin代表的是远程仓库的地址https://gitlab.com/zgd123121/mygitlabproject.git
Push an existing folder
cd existing_folder
git init --initial-branch=main
git remote add origin https://gitlab.com/zgd123121/mygitlabproject.git
git add .
git commit -m "Initial commit"
git push -u origin main
Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.com/zgd123121/mygitlabproject.git
git push -u origin --all
git push -u origin --tags
操作 全局的设置(Git global setup)之前,我们先进性【免密码登录】设置
4. GitLab免密码登录配置
- 配置 SSH 密钥
- 点击 add an SSH key
- 在本地电脑当中添加生成密钥
- clone 远程的仓库到本地当中
配置密钥的作用:每次提交或者clone代码的时候,就不需要再输入当前用户的密码了。
点击上图中的 Add SSH key
,跳到添加页面中
- 要求在下面的 key 空白处,放入当前电脑的密钥(就是告诉gitlab,哪一台电脑访问这个地址的时候,不需要输入密码),此时需要你把电脑里面的SSH(rsa加密技术),要求你放一个公钥进去,
- 在本地电脑中添加生成密钥
- 命令: ssh-keygen -t rsa 在客户端生成一对密钥, -t 表示加密类型
- 操作:
- 在电脑 C 盘用户当中查看生成的密钥
- 把 id_rsq.pub 的内容复制到 gitlab 当中
跑到 user1 文件夹中(其它地方应该也可以)右击选择 Git Bash Here
输入命令 ssh-keygen -t rsa
,然后回车
然后一路回车下去
5. GitLab上传下拉代码
让我们做一些全局的设置(Git global setup)
- 在本地使用下面的命令进行设置
- 配置全局的用户名和邮箱
git config --global user.name "zgd123121"
git config --global user.email "xiaozheng123121@163.com"
Create a new repository(创建新的存储库)
git clone git@gitlab.com:zgd123121/mygitlabproject.git # 这是远程仓库的地址,让你克隆
cd mygitlabproject # 切换到目录 mygitlabproject
git switch -c main
touch README.md # 创建文件 README.md 文件,我们下面案例中创建 a.txt
git add README.md # 添加
git commit -m "add README" # commit 提交
git push -u origin main # 然后 push,其中origin代表的是远程仓库的地址https://gitlab.com/zgd123121/mygitlabproject.git
然后把 git clone https://gitlab.com/zgd123121/mygitlabproject.git
放到窗口中,回车,成功clone了下来,不过内容是空的
本地创建文件 a.txt
然后添加到本地,
通过git status
命令查看状态,发现a.txt
为红色,需要先添加到本地git add *
,然后再提交git commit -m'user1 a.txt'
现在 a.txt 已经提交到了本地 git,还没有提交到远程gitlab中,通过git push -u origin main
push到远程
显示 100% 的时候,就相当于把我们本地创建的 a.txt 内容推送到了远程 gitlab 中。去 gitlab 检查一下,发现推送成功!!!
现在已经实现了把本地的内容推送到中央仓库中了,总结一下:
- 首先,从中央仓库中将工程clone下来,
- 拿下来之后,再去做推送
接下来,新建文件夹 myUser1
,
然后进入 myUser1
, 点击 git bash here
,重新进行clone,此时文件夹为空
这个地址有两个,一个是 SSH 的,一个是 HTTPS 的,我们要 SSH 的,把它复制一份,
复制一份之后,回到myUser1的git窗口,贴进来,回车
点击回车之后,我们又把远程的一个项目克隆到了本地,此时文件夹myUser1内多了文件夹mygitlabproject。
并且还有了a.txt,
现在搞一个冲突出来,什么意思呢?现在不是两个工程嘛,两个人(mygitlabproject和myUser1),
然后先提交到本地,再提交到远程
下图操作后,已经将修改的 a.txt 提交到了本地
提交到本地之后,再去 push 到远程,写上主分支 main
然后,在另外一个工程中,也修改这个代码,
然后打开git窗口,然后做一个操作
先添加到本地,commit提交,
现在,该提交远程了,先做一个 push, origin表示远程地址,也就是你当时克隆下来内容的地址(你从哪里克隆的)
当你push的时候,它能不能push成功呢?
push 失败,是因为在这个里面,先让你 fetch,
因为远程仓库里面刚才在外面的时候,在下图所示的时候(无需再次操作),你已经把修改的内容提交到了远程仓库里面。
所以,你在下图这个路径里面(无需再次操作),你想要做 push 的时候,必须先 fetch
一下,也就是先pull
一下,
pull 的时候,产生冲突了,因为我们改的是同一个文件,同一个 a.txt,所以产生冲突
打开myUser1/mygitlabproject/a.txt文件
解决冲突的办法:删除红框的内容即可
删掉之后,做一个保存,然后需要重新做一次提交,由于a.txt做了一次修改,颜色变红,需要重新add和commit,
然后,再push,git push -u origin 主分支 回车,这时候就没有问题了,因为已经把冲突解决了,然后就可以push 到远程了
当看到100%的时候,代表 push 成功。
之后,来到工程里面(gitlab远程仓库),查看是否有我们提交的记录,以及文件的内容。
看到,最后一次记录(Last commit)就是 解决冲突,
然后点进去,就可以看到我们合并的内容,就是下图myuser1和user1两个人协作完成的内容。
这个过程和之前是一样的,只不过把远程仓库换成了 gitlab,之前用的本地模拟。
Push an existing folder
cd existing_folder
git init --initial-branch=main
git remote add origin git@gitlab.com:zgd123121/mygitlabproject.git
git add .
git commit -m "Initial commit"
git push -u origin main # origin 就是上面第三行的地址
Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:zgd123121/mygitlabproject.git
git push -u origin --all
git push -u origin --tags
6. GitLab分支操作
使用 gitlab 创建分支,
从哪个节点切出的分支,其内容和该节点的内容是一样的,
现在从 main 里面创建一个分支 newBranch
创建完之后,main分支和newBranch分支内容是一样的,
现在已经完成分支创建。当前所在的分支就是 newBranch,可以进行分支切换
完成分支切换,切换到 main 分支里面
再次切换到 newBranch 分支,去添加一些东西,比如,去添加一个文件,
点击提交之后,就把文件提交到了 newBranch 分支里面
然后,再回到工程 mygitlabproject 里面,newFile.python 文件已经添加到newBranch分支中,而main分支中没有该文件
然后,查看当前工程( mygitlabproject )有多少分支
上图可以看到,显示有2个分支,即 2 Branches,点击进入
如果 newBranch不想要了,可以点击右侧按钮,进行删除
再去在客户端里面克隆一下代码,克隆完之后,查看一下有没有 main 和 newBranch 这两个分支,创建用户 myUser3
进入myUser3,进行克隆工程
文件显示的是主分支(main)的内容
将分支切换到 newBranch 中,文件 newFile.python就出现了
查看分支,当前所在分支为 newBranch
至此,完成分支操作。