使用Git工作流
Git是目前世界上最常用的分布式版本控制系统。
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本,采用版本控制系统是个明智的选择。 有了它你就可以将选定的文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。
Git虽然是分布式的,但是在多人协作时,常常还是需要一台远程主机充当“中心”的作用,用来同步每个人对代码的改动。这里我们使用的是Gitee来充当这个远程主机。
而Git的工作流,可以简单理解为这样:
Git安装
- 建议使用安装程序引导安装。 安装程序将指向最新版本发布页面。
- 下载最新版本的 64-bit Git for Windows Setup 文件。一般而言,现代计算机几乎都是64位系统,但倘若您真的有使用32位系统的需求,请下载 32-bit Git for Windows Setup 文件。
- 下载完成后,打开安装程序。
- Git for Windows Setup 安装向导将引导你完成安装步骤,包括选择将在其中安装Git的目录。
- 安装完成后。 打开 PowerShell,尝试列出当前安装的 Git 版本:
git -v
从Gitee中拉取仓库
- 从Gitee拉取仓库前,尤其是拉取私有仓库时,需要先配置用户信息:
git config --global user.name 'Gitee绑定的用户名'
git config --global user.email 'Gitee绑定的邮箱'
- 打开 PowerShell 拉取对应项目:
# 项目存放的位置
cd 'D://workspace/'
# 项目远程地址
git clone 'https://gitee.com/xxxx/xxxx.git'
此时命令行会出现如下账号密码验证步骤,安装提示输入密码验证即可。
从Gitee中拉取代码同步到本地
在提交您的第一份代码前,可能您的同事或者协作者曾经提交了一份代码到Gitee上,导致我们本地的Git仓库与远程仓库不一致。因此,在每次提交代码前,建议先拉取一次代码:
git pull
# 或者
git pull origin
假如您要将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
分支相关的后续会补充......
将改动移至暂存区
我们先来理解下 Git 工作区、暂存区和版本库概念:
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
在真正提交代码改动前,我们需要先将其移至暂存区。
- 添加指定文件到暂存区:
git add '文件1' '文件2'
或者,您改动了某个目录下的大量文件。
- 添加指定文件到暂存区:
git add '目录1' '目录2'
或者,您改动了非常大量的文件,想要一次性提交。
- 添加当前目录的所有文件到暂存区:
git add .
有时我们不止新增或修改文件,当我们删除了某些文件时,也需要把将这次删除放入暂存区。
- 删除工作区文件,并且将这次删除放入暂存区:
git rm '文件1' '文件2'
代码提交
- 提交暂存区:
git commit -m '提交信息'
一般而言,提交信息应该清晰明了,说明本次提交的目的。
- 提交暂存区的指定文件:
git commit '文件1' '文件2' -m '提交信息'
推送提交到远程仓库
git push
至此,一个基本的Git的工作流就完成了,后续会补充例如暂存回退和分支相关的部分。
当然,如果您觉得使用Git命令过于复杂,也可以使用Git的的一些GUI工具来辅助您使用Git。
Vs code内置了一个Git的可视化插件,推荐。
(进阶)分支管理
Git的分支功能在多人协同开发中尤为重要,可以让你在提交代码时不必担心互相影响。
包含分支的Git的工作流,可以简单理解为这样:
对应的Git分支图:
可以看到,当我们在新创建的分支上提交代码时,是不会影响到主分支的。而我们在自己的分支上的改动,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既不怕丢失每日进度,又不会影响别人工作。
- 查看本地分支:
git branch
- 创建分支:
git branch '分支名称'
- 切换分支:
git checkout '分支名称'
- 合并分支:
git merge '分支名称'
- 删除分支:
git branch -d '分支名称'