一、 前期准备

  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

Git, Gitlab使用文档相关推荐

  1. GitLab安装文档

    GitLab安装文档 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. GitLab与GitHub的功能相似,通常企业使用GitLab在局 ...

  2. git 查看某些文档的历史版本_10分钟了解git

    这是一个针对初学者的教程,我会基于Github来讲解git,尽可能在短时间内让大家了解git的核心理念和功能. 什么是版本控制 版本控制系统记录了一段时间内对一个文件或一组文件的更改,以便我们以后可以 ...

  3. git 查看某些文档的历史版本_Git 教程(二)log 命令的使用

    使用 Git 进行版本控制时,要习惯他的工作流程,Git 的工作流程是,先在工作区创建项目并编写代码,然后将写好的文件添加到暂存区,最后将暂存区里的文件提交到历史版本库.如下图所示: 每向版本历史库做 ...

  4. 使用docsify+markdown+vditor构建gitlab pages文档库

    前几天策划写了一个word文档来整理补充一些内容,当时就比较感慨,如果是Web文档就好了,可以超链接过去,也不必东一个文档,西一个文档的查找. 确实如此,工作这么久,各个公司的策划案都是使用的Word ...

  5. Git \Github使用文档(一)

    1.1. 重点 了解git的仓库概念 熟悉何为版本控制,了解分布式版本控制(git)和集中式版本控制(svn) 能够熟练使用git的基本指令完成仓库的初始化/添加/提交/日志/回退/分支等操作 git ...

  6. 在本地安装git的HTML帮助文档

    当我们想查询git某条指令如何使用时,git官网有详尽的文档供我们查看.在命令行下我们也可以随时通过 git –help的方法查看某条命令的详细帮助. 相对于在Terminal中内置的帮助文档,HTM ...

  7. 手把手教最新最全最详细Git使用教程(图文并茂,附Git命令大全学习文档)

    导读 因为教程详细,所以行文有些长,新手边看边操作效果出乎你的预料.GitHub虽然有些许改版,但并无大碍. 最全Git命令学习文档下载(集合整理,非常适合新手) 一.Git是什么? Git是目前世界 ...

  8. linux访问文档根目录之外的网页_开发文档加载不再卡顿,亿点点提升

    作为一个头(ku)秃(bi)的开发者,查阅各种文档是家常便饭,但由于中国特色在查阅一些文档时总是加载中.而且有时外场调试还不一定有网,因而将文档本地化是相当有必要的.本文介绍了一种将文档编译为静态网页 ...

  9. 基于GitBook框架搭建技术文档平台

    源宝导读:为了向用户更好的传递ERP开放平台的价值与技术知识,我们基于GitBook框架搭建了一个文档中心站点,本文将介绍此站点的设计与实现过程. 一.项目架构图 因为文档会涉及到很多的产品线,所以目 ...

  10. 【学习笔记】git 使用文档

    安装 git # mac 环境 brew install git 检查是否安装成功 ➜ ~ git --version git version 2.20.1 (Apple Git-117) 卸载 gi ...

最新文章

  1. (C++)变长数组vector的常见用法
  2. Java--日期的使用
  3. 活动报名 | 智源重大研究方向:自然语言处理暨“北京智源-京东跨媒体对话智能联合实验室”发布会...
  4. java中文转拼音 多音字_java使用jpinyin汉语转拼音(支持多音字)
  5. 深入理解SQL Server 2005 中的 COLUMNS_UPDATED函数
  6. jQuery Mobile 图标无法显示
  7. antd 上传进度_antd vue upload组件使用customRequest上传文件显示文件上传进度
  8. kafka分区(partition)和和分组(group)
  9. boost::ratio_not_equal相关的测试程序
  10. JSP门户--JetSpeed
  11. 桌面快速启动软件AltRun----赶快使得你的桌面变整洁吧
  12. git同时推送项目到GitHub和Gitee
  13. ORACLE备份策略(ORACLE BACKUP STRATEGY)
  14. Ubuntu 14.04 安装 JDK 8,ubuntu14.04
  15. 【转】Js中的window.parent ,window.top,window.self 详解
  16. idea插件开发入门
  17. PHP之tp3点击刷新验证码登录
  18. mysql 获取百分比函数,并对结果保留2位小数。
  19. OISPT 内网安全项目组A1-渗透测试基础项目训练文档
  20. THINKPHP5(TP5)新手入门必看教程

热门文章

  1. Windows官方经典壁纸
  2. 苹果蓝牙耳机使用说明_苹果蓝牙耳机怎么用,其功能及使用方法介绍
  3. 《人类最美的54个公式》
  4. win10家庭版升级教育版,专业版和企业版最新密钥和方法分享
  5. PS快捷键总结,(操作、设置)小技巧
  6. 深入浅出Mybatis系列(五)Mybatis事务篇
  7. MySQL5.7 Group Replication (MGR)
  8. 前端JS时间验证,结束时间不早于开始时间
  9. 聊一聊,android程序员前景如何
  10. android7.0 投屏,流水断崖安卓投屏