一、概念
1.Git
是一个分布式
代码管理工具
-
中央式:所有的代码保存在中央服务器,所以提交必须依赖网络,并且每次提交都会带入到中央仓库,如果是协同开发可能频繁触发代码合并,进而增加提交的成本和代价。最典型的就是svn
-
分布式:可以在本地提交,不需要依赖网络,并且会将每次提交自动备份到本地。每个开发者都可以把远程仓库clone一份到本地,并会把提交历史一并拿过来。代表就是Git
2.Git
相比于svn的
优势
Git的提交、回退成本比较小并且本地会保存所有的提交记录,随时随刻可以进行回退。
3.Git的三种状态
在Git中文件大概分为三种状态:已修改(modified)、已暂存(staged)、已提交(committed)
-
修改:Git可以感知到工作目录中哪些文件被修改了,然后把修改的文件加入到modified区域
-
暂存:通过add命令将工作目录中修改的文件提交到暂存区,等候被commit
-
提交:将暂存区文件commit至Git目录中永久保存
4.流程图
二、拉取项目
1.启动终端
window系统:创建一个文件夹,打开文件夹,在路径中输入rmd
Mac系统:创建一个文件夹,右键点击文件夹,选择“新建位于文件夹位置的终端窗口”
2.检查环境
第一步:在终端中输入node -v 检查node是否安装成功
第二步:在终端中输入npm -v 检查是否安装成功(npm是node自带的包管理器)
第三步:在终端中输入npm config set registry https://registry.npm.taobao.org更换淘宝镜像(提高npm下载安装的速度)
3.克隆仓库代码
第一步:打开项目代码仓库,复制仓库的地址;
第二步:在终端中输入命令:git clone 地址 ;
第三步:敲下回车,就开始拉取项目代码了。。。
4.跑项目
第一步:代码拉取完,我们创建的文件夹中就会多出一个文件,这个就是我们的项目文件,把这个文件拖曳到VScode中;
第二步:在VScode中新建一个终端;
第三步:执行命令 npm i 安装依赖;
第四步:执行命令 npm run dev 启动项目。。。
三、开发流程(重要)
1.创建并切换自己的分支
`git checkout -b 分支名` //创建并切换分支
或者
`git branch 分支名` //创建分支
`git checkout 分支名` //切换分支
2.将远程分支代码合并到本地
询问同事我们是在哪个远程分支上开发的,然后把这个分支的代码合并到本地
`git pull origin 远程分支名称` 更新远端分支且合并取到本地
或者
`git fetch 远程分支名称` 更新远端分支
`git merge origin/远程分支名称` 合并到本地分支
3.将本地代码合并到远程
`git add .` 将文件提交到暂存区
`git commit -m "提交内容" ` 提交更改
`git pull origin 远程分支名称` 拉取远程分支最新的代码(如果远程代码有改动,需要再次add和commit,这一步非常关键,可以避免文件冲突)
`git push origin 本地分支名` 推送到远程
最后在git仓库中创建合并请求(PR),选择来源分支(我们自己创建的分支)和目标分支,提交合并请求(一般需要审核),请求通过即可合并代码。
四、Git命令
/* 基础操作 */
git clone 地址 //克隆仓库
git branch 分支名 //创建分支
git checkout 分支名 //切换分支
git checkout -b 分支名 //创建并切换分支
git log //查看日志
/* 提交操作 */
git add 文件名 //将指定文件提交到暂存区
git add . //将所有文件提交到暂存区
git commit -m "本次修改内容" //将暂存区内容提交一次目录
git push origin wbl20231208 //将目录区内容推送到远程
/* 拉取操作 */
git fetch //更新远程分支
git merge origin/master //拉取远程分支
git pull origin master //更新并拉取远程分支
/* 撤销操作 */
git checkout 文件路径 //取消指定文件的更改
git reset --hard HARD //取消所有文件的更改
git reset HEAD 文件路径 //取消指定文件暂存
git reset HEAD //取消所有文件暂存
git commit -m "本次提交的内容" //将暂存区的文件提交一次记录
git reset HEAD~ //撤销上次commit,并将commit内容恢复至修改区
git revert HEAD //不撤销上次commit,并将上次提交内容存放在暂存区
git reset HEAD --hard //取消上一次push