Git版本管理

一、Git的基本结构

在这里插入图片描述

名称说明
Remote远程仓库
Repository本地仓库
Index暂存区
Workspace工作区
Fetch/CloneFetch:本地仓库已有项目主分支,还需从远程仓库下载项目的其他分支;Clone:将远程仓库的项目克隆(clone)到本地。
Pull从远程仓库获取最新版本,然后再与本地分支merge(合并)。
Checkout检出(check)分支,即迁出一个分支的特定版本。默认是迁出分支的HEAD版本。
Add将工作区编辑后的文件可以添加到(add)暂存区。
Commit将暂存区的文件提交(commit)到本地仓库。

二、Git的使用

2.1 Git、Github与GitLab

  1. Git
    Git是一个版本控制系统,版本控制是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。

  2. Github
    GitHub 和 GitLab 都是基于 web 的 Git 仓库,使用起来二者差不多,它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。GitHub 作为开源代码库,拥有超过 900 万的开发者用户,目前仍然是最火的开源项目托管平台,GitHub 同时提供公共仓库和私有仓库,但如果使用私有仓库,是需要付费的。

  3. GitLab
    GitLab 解决了这个问题,你可以在上面创建私人的免费仓库。
    GitLab 让开发团队对他们的代码仓库拥有更多的控制,相比较 GitHub , 它有不少特色:
    (1) 允许免费设置仓库权限;
    (2) 允许用户选择分享一个 project 的部分代码;
    (3) 允许用户设置 project 的获取权限,进一步提升安全性;
    (4) 可以设置获取到团队整体的改进进度;
    (5) 通过 innersourcing 让不在权限范围内的人访问不到该资源;

  4. 总结,从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。

2.2 Github托管Git

2.2.1 IDEA项目上传Github

  1. 首先,需要在IDEA中配置git,File–>Setting–>Vsrsion Control–>Git,并test:
    在这里插入图片描述

  2. 为需要上传的项目创建本地仓库,VCS–>Import into Version Control–>Create Git Respository:
    在这里插入图片描述

  3. 本地仓库建好后,因为项目没有导入本地仓库,所以项目文件都会被标红,将项目add、commit到本地仓库后,变回黑色:
    在这里插入图片描述

  4. 在Github上创建远程仓库:在这里插入图片描述

  5. 复制远程仓库的地址,在IDEA上配置远程仓库:
    在这里插入图片描述
    在这里插入图片描述

  6. 将IDEA上的项目commit并push:
    push时可能会遇到报错:error: failed to push some refs to ‘xxx(远程库)’
    这是因为README.md文件不在本地代码目录中
    解决方案:在需要上传的IDEA项目文件夹右键git bash here,输入命令:

git pull –rebase origin master

在这里插入图片描述

2.2.2 Github项目添加组员

  1. 点击【Settings】——>【Collaborators】,在输入框中输入待邀请加入项目中其他成员的GitHub账号,然后点击【Add collaborator】
    在这里插入图片描述
  2. 添加完成以后,点击【Copy invite link】,然后复制该邀请链接给邀请的人员
    在这里插入图片描述
  3. 接收到邀请链接的人员登录GitHub,然后浏览器打开刚才的那个邀请链接(或是点击GitHub的通知提示信息即可),点击【Accept invitation】接收邀请即可。

2.3 GitLab托管Git

2.3.1 组队管理

  • 查看队伍
    在这里插入图片描述
  • 新增队伍
    填写 name、URL、description 以及 Visibility level
    Visibility level:
    • Private(访问需授权)
    • Internal(登录可访问)
    • Public(匿名可访问)
      一般设置为Private

在这里插入图片描述

  • 组成员管理
    添加组成员、添加权限;修改组成员权限
    权限说明:
    • Guest(匿名用户) - 创建项目、写留言薄

    • Reporter(报告人)- 创建项目、写留言薄、拉项目、
      下载项目、创建代码片段

    • Developer(开发者)- 创建项目、写留言薄、拉项目、
      下载项目、创建代码片段、
      创建合并请求、创建新分支、推送不受保护的分支、
      移除不受保护的分支 、创建标签、编写wiki

    • Master(管理者)- 创建项目、写留言薄、拉项目、
      下载项目、创建代码片段、
      创建合并请求、创建新分支、推送不受保护的分支、
      移除不受保护的分支 、创建标签、编写wiki、
      增加团队成员、推送受保护的分支、移除受保护的分支、
      编辑项目、添加部署密钥、配置项目钩子

    • Owner(所有者)- 创建项目、写留言薄、拉项目、
      下载项目、创建代码片段、
      创建合并请求、创建新分支、推送不受保护的分支、
      移除不受保护的分支 、创建标签、编写wiki、
      增加团队成员、推送受保护的分支、移除受保护的分支、
      编辑项目、添加部署密钥、配置项目钩子、
      开关公有模式、将项目转移到另一个名称空间、删除项目
      在这里插入图片描述

2.3.2 项目管理

  • 新建项目

在这里插入图片描述

  • Project name
    可以为字母、数字、空格、下划线、中划线和英文点号组成,且必须以字母或数字开头,不能使用中文
  • Visibility Level
    • Private:只有被赋予权限的用户可见
    • Internal:登录用户可以下载
    • Public:所有人可以下载
      在这里插入图片描述在这里插入图片描述

2.3.3 SSH Key设置

  • 打开本地git brash,在其中输入指令,生成ssh公钥和私钥对,其中xxx@xxx.com为你的邮箱地址。
    点击回车,会让你选择存储路径,此时不用理会直接回车,其会保存到默认路径。
ssh-keygen -t rsa -C 'xxx@xxx.com'

在这里插入图片描述

  • 打开电脑的cmd,在其中输入命令并回车,此时已复制。
type %userprofile%\.ssh\id_rsa.pub | clip

在这里插入图片描述

  • 到GitLab界面,点击settings,后点击SSH-Keys,将复制过来的公钥黏贴到key框中,下方title可自己命名,点击addkey。
    在这里插入图片描述
    在这里插入图片描述
  • 经过如上操作,再次拉取代码和提取代码应无需再输密码。
  • 若还需输入密码,输入下面命令,然后操作pull/push 会让输入用户名密码,第一次输入进去。下次再操作pull/push时就不需要输入用户名密码。
git config --global credential.helper store

2.3.4 GitLab下Git的使用

2.3.4.1 Git Bash下操作

在这里插入图片描述

  • clone 克隆远程仓库到本地仓库
    在这里插入图片描述
git clone git@git.lug.ustc.edu.cn:mygroup-test/getflowdemo.git
  • 配置名字和邮箱
git config --global user.name "bukas" 
git config --global user.email "bukas@gmail.com"
  • 编辑 .gitignore(vim)
    .gitignore文件中可以设置相应的忽略规则,来忽略相应文件的提交。
规则作用
/mtk过滤整个文件夹
*.zip过滤所有.zip文件
/mtk/do.c过滤某个具体文件
!/mtk/one.txt追踪(不过滤)某个具体文件
在这里插入图片描述
vim的使用:"i"进入编辑;“一直按住esc ,再连续按大写的z两次就退出来了。”
  • add、commint、push
git add .				 //提交单个文件直接接文件名,多个文件空格隔开
git commit -m 'init'    //init是本次提交的声明 
git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

git push origin master
git status   //查看工作区当前的状态
  • 创建分支、切换分支
git branch develop   //创建develop分支
git branch			 //查看当前分支
git checkout develop //切换分支
git diff readme.md   //查看文件修改内容
  • 打标签
    标签实际上是打在对应的commit上的,每一个commit 都有一个唯一的ID。
 git log    //显示从最近到最远的提交日志
 git tag -a v0.0.0 c4dacbf395eb15868a3d3242ca1efbe34d392d38 -m "Ver-0.0.0-master"
 git push origin v0.0.0
  • 解决冲突
    先pull,然后编辑、commit和push
git pull origin develop
git diff
  • 分支合并到master分支
git pull
git checkout master
git merge develop
git add .
git commit -m 'merge develop to master'
git push -u origin master
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值