Git
一、学习目标
git的使用
二、git简介
2.1 概念
git是一个分布式代码管理工具,为了简化开发过程中的代码管理以及团队之间的协调开发
2.2 git与svn
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
集中式版本控制工具缺点:
服务器单点故障
容错性差
Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS) ,分为两种类型的仓库:
本地仓库和远程仓库
本地仓库:是在开发人员自己电脑上的Git仓库
远程仓库:是在远程服务器上的Git仓库
Clone:克隆,就是将远程仓库复制到本地
Push:推送,就是将本地仓库代码上传到远程仓库
Pull:拉取,就是将远程仓库代码下载到本地仓库
2.3 工作的流程
工作流程如下:
1.从远程仓库中克隆代码到本地仓库
2.从本地仓库中checkout代码然后进行代码修改
3.在提交前先将代码提交到暂存区
4.提交到本地仓库。本地仓库中保存修改的各个历史版本
5.修改完成后,需要和团队成员共享代码时,将代码push到远程仓库
三、git安装与基本使用
3.1 安装
到官网下载git安装包https://git-scm.com/downloads
使用默认配置安装即可
3.2 使用
一般我们不使用指令形式进行使用。因为一般的开发工具都已经集成了git的相应功能,只需要点击对应功能按钮即可
3.2.1 基本配置
配置本地git连接的远程仓库的账号
右键点击git bash here
输入git config --global user.name=“你的账号名”
输入git config --global user.email=“你的账号”
输入git config --list 查看配置信息
3.3 在本地创建git仓库
要使用Git对我们的代码进行版本控制,首先需要获得Git仓库
获取Git仓库通常有两种方式:
在本地初始化一个Git仓库
从远程仓库克隆
3.3.1 本地初始化创建
使用git init将指定文件夹作为git仓库初始化
- 在电脑的任意位置创建一个空目录(例如repo1)作为我们的本地Git仓库
- 进入这个目录中,点击右键打开Git bash窗口
- 执行命令git init
.git隐藏文件夹保存着当前文件夹中所有操作步骤,在提交到远程仓库时可会将这些修改步骤提交
3.3.2 远程仓库克隆
(1)使用网络指令克隆
可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
命令形式为:git clone 远程Git仓库地址
注意:需要将仓库开源否则不允许外部clone下载
(2)下载仓库压缩包形式
找到相应的仓库点击下载
下载只会下载文件代码,需要在解压后的文件夹中执行 git init进行仓库初始化
3.4 工作目录、暂存区以及版本库概念
为了更好的学习Git,我们需要了解Git相关的一些概念,这些概念在后面的学习中会经常提到
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作目录(工作区):包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
git的使用流程
git使用的是分布式代码管理,拥有远程仓库与本地仓库两个仓库,远程仓库是核心保存文件的版本仓库,本地仓库是不同开发人员创建的保存开发过程中修改的版本仓库,可以使用克隆将远程仓库中的代码进行下载之后进行修改操作,在修改过程中,所有的修改默认保存咋相应修改的工作区中,需要执行代码将保存在工作区的修改提交到缓存区,在确定真正修改时,将缓存区的代码提交到版本库,在功能书写完毕并提交到版本库后,将本地仓库提交到远程仓库(分支),远程仓库根据提交的修改进行代码的合并(分支合并)
3.5 git文件状态
Git工作目录下的文件存在两种状态:
untracked 未跟踪(未被纳入版本控制)
tracked 已跟踪(被纳入版本控制)
Unmodified 未修改状态
Modified 已修改状态
Staged 已暂存状态
这些文件的状态会随着我们执行Git的命令发生变化
3.6 常用指令
git add 将工作区修改添加至缓存区
git commit 将缓存区修改提交到本地仓库
git status 获取当前仓库状态
git reset 将暂存区的文件取消暂存
git rm 删除文件
git忽略文件
固定名称的.gitignore
在其中书写不由git管理的文件夹或文件,那么git对其修改不会管理
# 不管名为a的文件
*.a
# 忽略忽略的lib下的a文件
!lib.a
# 忽略当前文件下的test文件下的所有文件(出现在非当前文件下的test不忽略)
/test
# 忽略所有build文件夹下的文件
build/
# 忽略doc下的所有以txt结尾的文件(不包含子文件)
doc/*.txt
# 忽略doc下的所有以pdf结尾的文件(包含子文件)
doc/**/*.pdf
3.7 远程仓库连接
如果想查看已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出指定的每一个远程服务器的简写。 如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是 Git 克隆的仓库服务器的默认名字
查询的该仓库为从远程仓库上克隆的仓库
注意:如果当期仓库是由git init指令初始化创建的那么默认没有远程连接
**使用git remote -v可能在本地创建的仓库,查询结果如下
如果没有定义远程仓库可以使用指令git remote add添加
运行 git remote add 添加一个新的远程 Git 仓库,同时指定一个可以引用的简写
如果原有的远程地址失效可以将本地设置的远程连接使用指令git remote rm 移除
运行 git remote rm 连接名 移除本地已有远程连接
在进行代码编辑时使用指令 git pull 获取远程仓库最新版本
git pull 连接名 分支名
注意:pull操作会自动进行合并,需要当前仓库就是从远程仓库克隆下来的(也可以添加参数忽略)
在本地修改文件后提交至本地仓库后使用git push指令将本地仓库提交至远程仓库保存
git push 连接名 分支名
3.8 分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git 的master分支并不是一个特殊分支。 它跟其它分支没有区别。 之所以几乎每一个仓库都有 master 分支,是因为git init 命令默认创建它,并且大多数人都懒得去改动它。
可以理解为代码的备份,在进行代码push时通常会为本次的提交新建分支,提交成功后由管理员进行分支的合并
查看分支
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
创建分支
使用当前状态创建分支(将当前的所有内容进行备份)
git branch 分支名
切换分支
将当前操作的分支切换为指定分支
git checkout 切换分支名
删除分支
将无用分支删除
git branch -D 分支名
四、git远程仓库gitee码云的使用
4.1 常用的Git代码托管服务
前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
gitHub( 地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub
码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
GitLab (地址: https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
4.2 创建远程仓库
在登录创建的账号后
输入创建仓库的信息
会为这个仓库创建唯一的远程连接地址
一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务