Git, Gitlab使用文档

2023-11-18

一、 前期准备

  1. 配置网络,连接局域网
  2. 下载 windows git
  3. 注册gitlab账号(注册后需要管理员确认通过)

二、配置ssh

本处来源:docker下gitlab安装配置使用

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

$ ssh-keygen -t rsa -C ‘xxx@xxx.com’
然后一路回车(-C 参数是你的邮箱地址)
在这里插入图片描述
生成密匙
2.然后输入命令:

$ cat ~/.ssh/id_rsa.pub # ~表示用户目录,比如我的windows就是C:\Users\Administrator

查询公匙:
在这里插入图片描述

3.打开gitlab,找到Profile Settings–>SSH Keys—>Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框

在这里插入图片描述
在这里插入图片描述
添加公匙到gitlab

三、使用Git管理本地仓库

1. 初始设置

$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"

(该地方的名字和邮箱与在gitlab上注册的邮箱没有任何关系)

$ git init  #在所在的仓库文件夹下初始

2.git工作机制与举例

在这里插入图片描述
例如在本地practice中增添ceshi.txt文件:
在这里插入图片描述
我们输入git status 查看本地状态:
在这里插入图片描述

可以看到ceshi.txt还未被追踪,在工作区;
若我们git add操作,则ceshi.txt会变换到暂存区:
在这里插入图片描述
进行commit操作,则传送到本地库,每一个版本都会在本地库中保存
此时查看status,发现工作树是干净的:

在这里插入图片描述
在以上案例中,master即是本地的默认分支,下面讲到的main是gitlab远程库的默认分支。

四、使用git管理远程仓库(Gitlab)与团队协作

1.未搭建上游分支,即将搭建

1.1 当你有一个本地库,要推往远程仓库时:

关键命令:git push -u origin ceshi
Eg:在你所在的master(ceshi)分支下,将该master(ceshi)分支推送至gitlab仓库,以下为完整代码:

$ cd G:\Projects\AllFileAboutPythonProject\学习尝试\有用的工具\ceshi #此时的默认分支为master
$ git init
$ git remote add origin http://xxxx.git #添加远程仓库名
$ git status
$ git branch -v
$ git add .
$ git commit -m "ceshi分支第一个commit" 
$ git push -u origin master  #此时若远程仓库有master已经有分支,则会提示已有远端origin/master,且里面的文件有可能与本地不同步
$ git branch -m ceshi  #更改分支名master为ceshi
$ git branch -v #查看分支
$ git push -u origin ceshi  #推送ceshi分支到远端

此时gitllab仓库中ceshi分支为本地ceshi分支的上游分支。

1.2 当你本地没有库或分支,需要从远程仓库提取

####方法一(推荐):
$ git fetch origin develop     #将远程仓库中的develop分支fetch到本地的remote文件夹
$ git checkout develop   #在本地创建develop分支
$ git branch -a		 #查看所有分支,包括本地和远程,发现已经生成main分支
####方法二(不推荐):
$ git checkout -b develop origin/develop  #不推荐

此时git自动将远程develop视为本地develop的上游分支。
:第一行代码git fetch <远程仓库> <远程分支>;本地分支(branch -v)不会出现develop分支,而只是在远程分支(branch -a 红色部分)里面有origin/develop;但是如果checkout develop,本地就会自动建立一个模板分支develop

2.已搭建上游分支,拉取和推送代码的操作

在这里插入图片描述

还是以develop分支为例,上图是本地和远程的分支架构图

2.1 拉取代码操作

####方法一(建议使用):
$ git fetch (origin develop)  
$ git merge  (origin/develop)      
####方法二:
$ git pull  (origin develop)

2.2* 建议的操作 —— 在拉下的分支-b新建测试分支

在拉取之后,强烈建议在本地库新建一个test分支,以作测试用。 另外如果在写到某个地方想测试一下,可在当前分支git checkout -b <新分支>,然后在新分支上更改完毕后,如果满意的话就checkout回原来的分支merge新分支;如果不满意可以就checkout回原来的分支然后把新分支删了。

2.3 上传代码操作

还是以develop为例,在本地有develop分支,而远程仓库内也有一个develop的上游分支:
2.3.1 拉取同步
这时候同样进行一个上文写的拉取操作git fetch + git merge (建议使用) 或者 git pull,让remote文件夹更新并跟此时本地分支的代码做合并操作。
2.3.2 git merge test + git push
通过2.3.1操作,可能会产生如下图所示两种情况
①是远程库未更新,与当时刚拉取时一样,此时merge test分支,git push 红色的节点;
②是远程库更新,则merge后会产生一个新的节点,如果可以的话删除test分支,上传(push)红色的节点。
总的来讲,第二步就是git merge test并git push
总体代码:

$ git checkout develop
$ git fetch
$ git merge #等同于 git merge origin/develop
$ git merge test #本地develop分支合并 test分支
$ git branch -d test #可选择,如果是下图②情况,建议执行
$ git push

在这里插入图片描述

关于merge更多可看:为什么git merge有时会创建一个提交,而有时却不会呢
特别强调注意: 在上传代码时,一定要先把gitlab上面的代码fetch下来并merge;OK了之后再push

五、总结:

5.1 其他重要指令

git clone 项目地址(ssh地址)
切换分支:git checkout < branch name>
查看版本信息: git reflog
查看版本详细信息:git log (常用git log –-pretty=oneline;单行显示,短且清晰)
版本穿梭:git reset --hard 版本号
当你一不小心把某文件误add入暂存区,可以回退:git reset < filename>
查看所有分支:git branch -v
查看远程分支:git branch -a
重命名:git branch -m xxx
查看本地分支和远程分支的关联关系: git branch -vv
拉取并更新本地分支代码:git pull origin main (–allow-unrelated-histories)

5.2 总结git最重要的命令

git add
git commit
git pull
git push
git status
git branch
git fetch
git merge
git log
git reflog
git remote
git clone
git reset(常用于分支内切换版本)
git checkout (常用于切换分支)

参考链接:---------------------------------------------------------------------------------------------------
Git官方文档:https://git-scm.com/doc
尚硅谷:https://www.bilibili.com/video/BV1vy4y1s7k6
多人协同开发:https://blog.csdn.net/tomatoarmys/article/details/107556598
Push上传至远程仓库产生冲突:https://www.cnblogs.com/1050619969kong/p/15620842.html
log和reflog区别:https://blog.csdn.net/Seky_fei/article/details/114729213
docker下gitlab安装配置使用:https://www.jianshu.com/p/080a962c35b6

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git, Gitlab使用文档 的相关文章

随机推荐

  • C++11中std::shared_future的使用

    C 11中的std shared future是个模板类 与std future类似 std shared future提供了一种访问异步操作结果的机制 不同于std future std shared future允许多个线程等待同一个共
  • json-server -g报错

    在vscode终端报 在系统上禁止运行脚本 的话 在下面输入set ExecutionPolicy RemoteSigned 前提是你是以管理员模式运行vscode 然后重新输入 json server v即可
  • 低代码?未来会代替如今的代码吗?

    一 前言 如果选择用一个关键词来代表即将过去的2020年 我相信所有人都会认同是 新冠 疫情来得太快就像龙卷风 短短数月就阻断了全世界范围内无数人与人之间的物理连接 但好在 我们已经全面迈入互联网时代 N95口罩再厚 也阻挡不了信息比特流的
  • Translation Lookaside Buffer (TLB)

    CPU每次访问虚拟内存 虚拟地址都必须转换为对应的物理地址 从概念上说 这个转换需要遍历页表 页表是三级页表 就需要3次内存访问 就是说 每次虚拟内存访问都会导致4次物理内存访问 简单点说 如果一次虚拟内存访问对应了4次物理内存访问 肯定比
  • 如何访问WEB-INF文件夹下的jsp文件

    我们都知道不能直接访问WEB INF文件夹下的jsp文件 那应该怎样访问呢 首先 WEB INF目录是Java WEB应用的安全目录 客户端无法访问 只有服务端可以访问 然后 为什么要这么设计 这样做的初衷是在WEB INF文件夹下放一些不
  • VScode使用PlatformIO IDE时PIO Home一直loading的问题

    近来刚接触 Arduino 想做个小项目 网上都都说 Arduino 自带的IDE不人性化 推荐的是用 VScode搭配 PlatformIO 但是这个插件非常不稳定 各种坑 有的时候安装 Library 点击了 Add 以后会一直转 等半
  • 汇编实验(循环程序设计)(排序以及找非负数)

    这里的排序 用的是冒泡排序 首先 先是说一下找非负数的想法 负数 TEST 80H 之后不为0 我们可以用这个性质来做 1 FIND POSITIVE NUMBER LEA SI FIRST LEA DI SECOND MOV CX N L
  • pg数据库日志 linux,PostgreSQL删除pg_xlog日志

    PostgreSQL的pg xlog下有大量日志 空间不足 如何删除 Darren1 postgres usr local pgsql data pg xlog gt ls 000000010000000000000008 00000028
  • Python调试工具pdb使用详解

    Python调试工具pdb使用详解 1 前言 2 参考文档 3 pdb简介 4 pdb使用命令行调试 4 1 举例代码 4 2 调试器命令 4 2 1 进入pdb调试模式 4 2 2 帮助指令 4 2 3 控制程序执行 4 2 4 设置断点
  • python数据驱动库_Python3

    1 DDT简介 Data Driven Tests DDT 即数据驱动测试 它允许您通过不同的测试数据来运行同一个测试用例 使它作为多个测试用例出现 其官方文档给出的定义如下 DDT Data Driven Tests allows you
  • 利用MATLAB&C语言生成&读取.dat文件

    利用MATLAB C语言生成 读取 dat文件 MATLAB生成 dat文件 MATLAB读取 dat文件 方式一 方式二 C语言生成 dat文件 C语言读取 dat文件 注意事项 有时候 需要在matlab或c语言编程环境中写入或读取 d
  • Linux Socket 事件触发模型 epoll 示例 这里会写一个用C语言的TCP服务器的完全实现的简单程序

    背景介绍 通常的网络服务器实现 是对每一个连接使用一个单独的线程或进程 对高性能应用而言 由于需要同时处理非常多的客户请求 所以这种方式并不能工作得很好 因为诸如资源使用和上下文切换所需的时间影响了在一时间内对多个客户端进行处理 另一个可选
  • window怎么下载和使用nginx

    希望下面的东西对你有帮助 我们一起学习 一起加油 1 首先去官网下载 http nginx org en download html 2 下载后解压到指定文件夹 如图 3 启动negix有如下种 1 双击nginx应用程序即可 闪烁两下 即
  • FIddler之Fiddler移动端抓包

    前言 笔者今天的这篇文章呢 想使用通俗易懂的话语 让大家明白以下内容 什么是抓包哪些场景需要用到抓包Fiddler抓包的原理怎样使用Fiddler进行移动端抓包 一 抓包 包 Packet 是TCP IP协议通信传输中的数据单位 一般也称
  • leetcode-动态规划【背包问题】

    背包问题篇 基础背包 416 分割等和子集 1049 最后一块石头的重量ii 494 目标和 474 一和零 完全背包 518 零钱兑换ii 377 组合总和iv 70 爬楼梯 322 零钱兑换 279 完全平方数 139 单词拆分 多重背
  • 树06--二叉树中和为某一值的路径

    树06 二叉树中和为某一值的路径 jz24 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 输入一颗二叉树的根节点和一个整数 按字典序打印出二叉树中结点值的和为输入整数的所有路径 路径定义为从树的根结点开始往下一直到叶结点所经
  • 课程设计步骤模板计算机,计算机络基础校园课程设计模板.doc

    计算机络基础校园课程设计模板 哈尔滨理工大学 计算机网络基础课程设计 学生姓名 姜金辉 学 号 1130370210 学 院 荣成学院 系 别 软件工程系 专业班级 计应11 2 设计 论文 题目 计算机网络课程设计 指导教师 徐辉 201
  • Vue后台 - 利用 mockjs 完成数据的获取、编辑、增加、删除和分页

    一 前言 很多vue后台的模板都用了mockjs来模拟假数据 并且利用mockjs的拦截请求完成了很多功能 比如数据的获取 编辑 增加 删除等 所以就利用了一个后台模板 在这基础上删除了一些页面 根据一个项目原型自己试着学习mockjs的一
  • 潜入地图_潜入

    潜入地图 By Taylor Barkley Program Officer for Tech and Innovation at Stand Together 提供者 Stand Together技术与创新计划官Taylor Barkle
  • Git, Gitlab使用文档

    一 前期准备 配置网络 连接局域网 下载 windows git 注册gitlab账号 注册后需要管理员确认通过 二 配置ssh 本处来源 docker下gitlab安装配置使用 1 打开本地git bash 使用如下命令生成ssh公钥和私