版本控制 Git工具的使用

版本控制的概念:

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理多人协同开发项目的技术。

版本控制的作用:

没有进行版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,比如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。多人开发就必须使用版本控制。

使用版本控制可以带来的便利:实现跨区域多人协同开发,提高开发效率;追踪和记载一个或者多个文件为历史记录;组织和保护你的源代码和文档;统计工作量;完成集中统一管理,解决一致性和冗余问题;保证解决软件开发过程中的并发性,软件源代码的安全性,以及软件的整合;跟踪记录整个软件的开发过程,辅助协调和管理软件开发。

版本控制工具Git:

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 工作区、暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

git的使用:

配置

要检查已有的配置信息,可以在git bash中使用 git config --list 命令:

编辑 git 配置文件:

java 复制代码
$ git config -e    # 针对当前仓库 

或者:

java 复制代码
$ git config -e --global   # 针对系统上所有仓库

设置提交代码时的用户信息:

java 复制代码
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

提交

git创建仓库

java 复制代码
git init (newrepo)

使用当前目录作为Git仓库,将它初始化,该命令执行后会在当前目录生成一个.git目录

指定目录newrepo作为Git仓库,初始化后,会在newrepo目录下出现一个名为.git的目录,所有Git需要的数据和资源都存放在这个目录中。

向仓库中添加以及提交内容

java 复制代码
$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'

自我尝试:

创建测试仓库,在测试仓库中创建文件,将其添加并提交到主分支master中了。提交到的是本地仓库

当进行快照后,再次查看文件,发现文件在最近一次提交中没有进行任何改动

从Git仓库中拷贝内容克隆到指定的目录

java 复制代码
git clone <repo> <directory>
  • repo:Git 仓库。
  • directory:本地目录。
    比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
java 复制代码
$ git clone git://github.com/schacon/grit.git

分支

创建分支命令:

java 复制代码
git branch (branchname)

切换分支命令:

java 复制代码
git checkout (branchname)

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

合并分支命令:

java 复制代码
git merge 

列出分支基本命令:

java 复制代码
git branch

没有参数时,git branch 会列出你在本地的分支。

java 复制代码
$ git branch
* master

此例的意思就是,我们有一个叫做 master 的分支,并且该分支是当前分支。

当你执行 git init 的时候,默认情况下 Git 就会为你创建 master 分支。

如果我们要手动创建一个分支。执行 git branch (branchname) 即可。

删除分支命令:

java 复制代码
git branch -d (branchname)


合并冲突

当在一个分支中已经存在的文件在另一个分支中被修改并提交,原分支中的文件再次修改为不同的内容提交,而后将其中一个分支合并到另一个分支的时候就会发生合并冲突:此时我们需要手动修改冲突

参照以下例子:

权限管理:

Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner

Guest:可以创建issue、发表评论,不能读写版本库

Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限

Developer:可以克隆代码、开发、提交、push,RD可以赋予这个权限

Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限

Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限

Gitlab中的组和项目有三种访问权限:Private、Internal、Public

Private:只有组成员才能看到

Internal:只要登录的用户就能看到

Public:所有人都能看到

开源项目和组设置的是Internal

码云远程管理:

将码云仓库中的内容克隆到本地:

将本地内容上传到云端:

首先要将要上传的内容提交到本地,然后再将本地仓库关联到Gitee

git remote add origin 仓库地址

然后将代码由本地仓库上传到 gitee远程仓库

如果远程库不为空必须做这一步,否则后面的提交会失败。

git pull --rebase origin master

把当前分支 master 推送到远程

git push -u origin master

若是在分支间进行就将当前分支更改即可。

相关推荐
Winston Wood10 小时前
一文了解git TAG
git·版本控制
jonyleek3 天前
JVS开源框架:工作流引擎代理中心的设计挑战与实现方案
java·gitee·开源·github·软件需求
Sheljoee.5 天前
【GitHub】基础入门步骤
开发语言·人工智能·python·单片机·gitee·github·嵌入式实时数据库
Winston Wood5 天前
跟着Lydia小姐姐系统学习git命令(动画演示)
git·版本控制
影阴6 天前
如何将本地项目上传至Gitee仓库(详细教程)
gitee
loveLifeLoveCoding7 天前
gitee 使用 webhoot 触发 Jenkins 自动构建
运维·gitee·jenkins
子蛟8 天前
Android Studio 安装过程
android·gitee·android studio
南鸢1.08 天前
IntelliJ IDEA 中上传项目到 Gitee 的完整指南
java·git·gitee·idea
一个很帅的帅哥9 天前
Mac在Typora配置PicGo图床,以github为例
macos·gitee·github·typora·mac·图床
謬熙9 天前
GitHub、Gitee、GitLab介绍
gitee·gitlab·github