1. 前言
在计算机发展早期阶段,还没有什么版本控制工具,那时候公司都苦于管理项目代码。
公司 A 有 2 个程序员:小王和小李,他俩负责公司同一个开发项目。那时候维护项目代码可太苦逼了,小王和小李每天都要互相拷贝各自的代码到项目中。
如果项目上线之后客户对某个功能不满意,项目代码就要回滚到上一个版本。这时候小王和小李人就傻了,俩人就要开始苦思冥想自己之前写的代码,在工位上一改就是一天。
如果小王和小李维护同一个代码文件,下班前俩人必须要对一下代码,然后分别拷贝到各自电脑的项目中。有时候对着对着就到半夜了。。。。
半年后,小王和小李都转行去干建筑队了。
当然这个虚构的故事只是为了告诉大家,在版本控制工具出来之前,维护公司项目代码是一件很苦逼的事情,就像我们大学毕业时写论文一样苦逼。
后来呢,版本控制工具就出现了。
2. 版本控制工具
版本控制: 可以实现多人协同开发,管理代码的修改历史,记录代码的演变过程,提供代码回滚功能,提高开发效率。
市面上常见的版本控制工具主要有两种:集中版本控制和分布式版本控制。
集中版本控制:代表产品 SVN
1.所有的版本数据都保存在服务器上,开发人员从服务器上同步数据
2.开发人员强依赖网络,本地只有自己以前同步的版本,如果不连网,就无法切换最新版本
3.所有数据都保存在单一的服务器上,如果这个服务器损坏,数据就会有丢失的风险,所以需要定期备份
分布式版本控制: 代表产品 Git
1.本地电脑和远程服务器保存相同的版本数据,任一设备都可以恢复所有的版本数据
2.本地可以查看所有数据的版本历史,数据更安全
3. 认识 Git
Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地电脑上拷贝一个完整的 Git 仓库。
功能特性:
- 1.从服务器上克隆完整的 Git 仓库(包括代码和版本信息)到单机上。
- 2.在自己的机器上根据不同的开发目的,创建分支,修改代码。
- 3.在单机上自己创建的分支上提交代码。
- 4.在单机上合并分支。
- 5.把服务器上最新版的代码 fetch 下来,然后跟自己的主分支合并。
- 6.生成补丁(patch),把补丁发送给主开发者。
4. 安装配置 Git
4.1 下载安装
Git官网
css
https://git-scm.com/
安装方式:直接下一步即可
验证是否安装成功:在电脑桌面或者任一硬盘文件夹,右键
- Git GUI:Git 图形化操作界面
- GIt Bash:Git 命令行操作
4.2 设置用户名和邮箱
点击 Git Bash,输入以下命令:
设置用户名:
css
git config--global user.name "zhifoujun"
设置邮箱:
css
git config--global user.email "123456789@qq.com"
查看所有配置
css
git config-l
5. Git 原理
Git 主要有四个工作区域:
- 工作区:平时你放代码的地方,我们一般把代码放到 workspace 文件夹里。
- 暂存区:临时存放代码改动的地方,本质是一个文件夹。
- 本地仓库:包含项目所有的版本数据,其中 HEAD 指向最新版本。
- 远程仓库:远程仓库,托管代码的服务器,我们通常将代码存放在 Gitee 、GitHub 等服务提供商上面。
Git 工作流程:
- 在工作目录中添加、修改文件;
- 将需要进行版本管理的文件放入暂存区域;
- 将暂存区域的文件提交到本地版本仓库。
- 将本地版本仓库文件推送到 Git 远程仓库。
Git 管理文件的 4 种状态:
- Untracked:未跟踪,刚新建的文件,
- Staged:暂存状态
- Unmodified:未修改
- modified:已修改状态
这里通过一个例子讲解一下 Git 管理文件的四种状态:
1.有一天,你打开代码编辑器,在本地电脑 workspace 文件夹里新建了一个 zhifou.java 的文件,这时候该文件的状态就是 Untracked,因为它跟 Git 没有任何关联。
2.这时候你通过 git add 命令把文件添加到了暂存区,该文件的状态就变成了 Staged。
3.接着你用 git commit 命令把暂存区的文件提交到了本地版本库,该文件的状态就变成了 Unmodified。
4.过了一会你又修改了该文件,那么文件的状态就变成了 modified。
5.过了几天你发现这个文件有问题,你又把它从版本库移除了,该文件的状态又变成了Untracked。
6. Git 常用命令
1.使用当前目录作为 Git 仓库,Git 可以管理该目录。
css
git init
执行该命令完后会在当前目录生成一个 .git 文件夹。
2.指定目录初始化 Git 仓库
css
git init 目录
3.添加指定文件到暂存区
css
git add [fileName]
4.添加当前目录的所有文件到暂存区
css
git add .
5.将暂存区文件提交到到本地仓库
css
git commit -m [message]
6.查看指定文件的状态
css
git status [filename]
7.克隆项目
css
git clone [url]
8.查看文件提交记录
css
git log
9.将当前修改添加到暂存区
css
git stash
10.恢复并删除最近一次暂存区
perl
git stash pop
11.查看本地分支
css
git branch
12.查看所有分支
css
git branch -a
13.查看远程分支
css
git branch -r
14.创建分支
css
git branch [new-branch-name]
15.创建并切换新分支
css
git checkout -b [new-branch-name]
16.切换分支
css
git checkout [branch-name]
17.本地仓库和远程仓库相关联
css
git remote add origin [远程仓库url]
18.将本地仓库推送到远程仓库
css
git push -u origin master
7. 使用 Gitee 管理远程仓库
Gitee 是国内知名的代码托管·协作开发平台,开发者超过 1200万,托管项目超过 2800 万,提供企业级代码托管服务。
公司官网:
css
https://gitee.com/
7.1 注册账号
注册地址:
css
https://gitee.com/signup
7.2 绑定 SSH 公钥
SSH 公钥可以让你的电脑和 Gitee 使用安全连接
点击 Git Bash
输入命令,一直按回车键
css
ssh-keygen
然后在 C 盘用户文件夹下面有一个 .ssh 文件夹:
复制 id_rsa.pub 文件里面的内容
点击 Gitee 右上角头像,点击账号设置按钮,点击 SSH 公钥
将刚刚复制的 id_rsa.pub 里面的内容粘贴到下面,公钥标题默认就行,然后点击确定
7.3 创建仓库
- 1.仓库名称自定义
- 2.系统会根据仓库名称自动生成路径
- 3.仓库介绍自由填写
- 4.公司项目或个人项目一般是私有,开源项目设置开源
在个人首页左侧展示所有仓库
点击刚刚创建的仓库,复制 SSH 项目路径
8. idea 使用 Git 管理项目
8.1 先克隆远程仓库项目,再提交
打开 idea, 新建项目
粘贴刚刚复制的 SSH 项目路径
然后新建一个文件,提交到 Gitee 远程仓库
选择该文件,右键 -> Git -> Commit File
然后 Git push 到远程仓库
刷新 Gitee ,发现新文件已经提交上去了
8.2 先新建项目,再提交到远程
我们先新建一个简单的 java 项目
然后点击 VCS -> Create Git Repository,选择当前项目
这时候我们发现代码文件都变红了
打开项目文件夹,发现多了个 .git 文件夹,说明这个项目被 Git 托管了
然后我们选择该项目,邮件 Git add,将项目添加到暂存区
再右键,Git commit Directory 从暂存区提交到本地版本仓库
注:View Mode 可以用来设置提交框是固定在菜单栏或者漂浮在窗口之上
接着点击 Git Manage Remotes 配置远程仓库的地址
复制我们在 Gitee 上的项目地址
选择项目,Git push
然后刷新 Gitee ,就可以看到我们新增的代码信息了
9. vscode 使用 Git 管理项目
9.1 先克隆远程仓库项目,再提交
vscode 安装 Git 相关插件
在终端里面克隆项目
然后打开该项目,创建一个新的文件
点击左侧源代码管理按钮,输入推送信息,点击提交
然后点击同步更改进行推送
或者点击右上角三个小点,点击推送按钮进行推送
刷新 Gitee 项目网址,就会显示我们刚刚新提交的文件
9.2 先新建项目,再提交到远程
打开 vscode ,新建一个项目
然后打开 vscode 终端,分别输入以下命令
1.初始化 Git 仓库
css
git init
2.将代码添加到暂存区
css
git add .
3.将暂存区代码提交到本地版本库
css
git commit -m "初始化 vue 项目"
4.关联本地版本库和远程仓库
css
git remote add origin git@gitee.com:zhifou-tech/my-vue-project.git
5.将本地版本库代码提交到远程仓库
css
git push -u origin master
刷新 Gitee 项目