1.简介
Git是一个分布式版本控制器,通常用来对软件开发过程中的源代码文件进行管理。通过Git仓库来存储和管理这些文件,Git仓库分为两种:
- 本地仓库:开发人员自己电脑上的Git仓库
- 远程仓库:远程服务器上的Git仓库
2.执行流程
3.Git代码托管服务
Git中存在两种类型的仓库,即本地仓库和远程仓库,那么如何搭建Git远程仓库呢?
- 我们可以借助互联网上提供的一些代码托管服务来实现,比较常见的有GitHub、gitee、GitLab等
下面是gitee平台的远程仓库建立步骤图:
4.Git常用命令
4.1.Git全局设置
当安装完Git之后首先要做的事是设置用户名称和email地址,每次Git提交都会使用该用户的相关信息
在任意窗口下打开Git命令行窗口设置用户信息
- git config --global user.name "用户名"
- git config --global user.email "邮箱地址"
查看配置信息
- git config --list
4.2.Git创建本地仓库
Git创建本地仓库 有两个方法,一个是在本地初始化一个Git仓库 ,另一个是从远程仓库克隆
在本地初始化一个仓库:
进入任意空目录,作为本地Git仓库
右键点击git bash窗口
执行命令 git init
从远程仓库克隆:找到之前在gitee平台上创建的远程仓库,复制仓库地址
任意进入一个目录,右键点击git bash窗口
执行命令 git clone 地址
5.Git工作区中文件的状态
主要分为两个状态
- untracked 未跟踪(未被纳入版本控制)
- tracked 已跟踪(被纳入版本控制)
1)Unmodified 未修改状态
2)Modified 已修改状态
3)Staged 已暂存状态
6.本地仓库操作
- git status 用于查看文件状态
- git add 用于将文件的修改加入暂存区
- git reset 用于将暂存区的文件取消暂存或者是切换版本
- git commit 用于将暂存区 的文件修改提交到版本库(-m参数指的是message,我们在提交的时候要输入一个字符串,一般写一些提示信息,用于存放在日志里)
- git log 用于查看日志
7.远程仓库操作
- git remote -v 用于查看已经配置的远程仓库,如果已经克隆了远程仓库,那么至少应该能看到origin,这是Git克隆的仓库服务器的默认名字
- git remote add 别名 url地址 用于给本地仓库关联一个远程仓库,别名一般都会写origin,url地址就是远程仓库的地址
- git push 远程仓库的别名 分支名 用于将本地仓库的文件推送到远程仓库
- git clone url地址 用于将远程仓库克隆到本地仓库(上面介绍过了,也是创建本地仓库的方式之一)
- git pull 远程仓库的别名 分支名 用于从远程仓库获取最新版本并合并到本地仓库
- 注意: 如果当前本地仓库不是从远程仓库克隆的,而是采用init指令在本地创建的,此时从远程仓库拉取文件就会报错(fatal: refusing to merge unrelated histories),那么可以在原命令之后添加参数--allow-unrelated-histories
8.分支操作
- 查看分支
- git branch 列出所有本地分支
- git branch -r 列出所有远程分支
- git branch -a 列出所有本地分支和远程分支
- 创建分支
- git branch 分支名用于创建一个新分支
- 切换分支
- git checkout 分支名用于切换已有的分支
- 推送分支
- git push 别名 分支名 用于将本地分支推送到远程仓库
- 此时远程仓库里就会多一个分支
8.1.分支的作用
说了这么多分支操作,那么分支到底有什么作用呢?
- 假设我有两个分支,一个分支1 ,一个分支2
- 可以把分支理解成平行宇宙,我在分支1里干的事情不会在分支2里发生,反过来也是一样的,所以我在分支1里创建的文件、推送的文件等等,都不会在分支2里存在
主分支master下的文件:
新创建的分支branch1下的文件:
明显可以看见,branch1分支下的仓库文件多了一个,这就是在branch1分支下创建的文件,不会在主分支master下存在,利用这样的技术,我们可以把一个项目分成开发分支,测试分支等等,这样不会相互干扰而且还提高了效率
- 合并分支
- git merge 分支名 用于将其他分支合并到当前分支
9.标签操作
- 当我们给某一时间段的业务打上标签后,我们就能通过这个标签再次回到这个时间段,来查看这个时候的相关业务
- 标签功能通常用来存放不同版本的业务
- 标签和分支有什么区别?分支是动态记忆的,当我开了一个分支之后,我在这个分支下做的所有操作都会被记忆,而标签是静态的,在我创建标签的那一刻,之前的操作都会被记忆,而之后的操作就不会记忆了,相当于只记录了那一刻
- 查看标签
- git tag 查看所有标签
- 添加标签
- git tag 标签名 添加一个标签,记录到创建这个标签为止所有的操作
- 将标签推送至远程仓库
- git push 仓库别名 标签名 将创建的标签推送至远程的仓库
将标签推送至远程仓库后,可以在代码托管平台上查看
- 检出标签
- git checkout -b 分支名 别名 查看指定标签下的代码,这里的分支名自定义即可