Git常用命令和 GitFlow工作流
什么是 Git : 分布式代码托管平台
Git 分布式的理解:大家可以提交代码, (本地也有暂存区,即使断网了也可以运行git add . 和 git commit先提交到本地)。
git常用命令
git init 初始化仓库(生成.git文件夹--隐藏文件夹)
git config -l 查看配置 (配置的用户名,邮箱、可以用来追溯是谁提交的代码)
git status 查看状态 (标记为红色说明文件没有被git管理,需要把文件添加到暂存区,绿色说明已被管理)
git add . 把当前项目所有文件添加到暂存区 (让git接管当前项目的文件)
git add index.js 指定文件上传到暂存区
git diff 查看修改的文件
git log 查看修改历史(详细输出,谁修改的,几点修改,以及提交时间)
git reflog 查看修改历史(简单输出,只输出提交了几次和修改的文件)
回到之前的版本:
git reset --hard HEAD^
git reset --hard 版本号 回到指定版本 ( 执行git reflog 最开头的[f781dee] 就是版本号)
git commit -m '备注内容' 添加到分支中 (默认添加到master主分支)
git push 推送到云端
如何查看远程仓库的分支
git branch -r
git push --set-upstream origin 分支名称 (本地分支提交到远程仓库)
git branch -d 分支名称 (删除本地分支)
如何删除远程仓库的分支
git push origin --delete 分支名称
分支的操作
默认的主分支是 : master
git branch (查看本地分支)
git branch 分支名称 (新建分支)
git checkout 分支名称 (切换分支)
注意: 分支是独立的,不会互相影响 注意:在一个分支下创建另外一个新的分支,新的分支会继承旧分支之前的操作。
注意:合并分支时,如果当前是在 master 分支下写入:git merge dev,那么master和dev会进行合并,相当于 master += dev
解决冲突
git push为什么报错?
如果远程仓库有人更新了代码,那我们不能直接 git push
解决: 必须先拉取远程仓库的代码(执行 git pull ),然后再push
但是,有的时候还是会出现问题,多人同时修改了一个文件,导致代码冲突,后一个人提交时报错:
后提交的人解决问题:手动解决冲突代码,协商保留或者删除。
工作中应该写一个模块就提交,避免自己碰到代码冲突!。
GitFlow 工作流
gitflow 是应用于 中、大型项目才会用到的针对于分支的管理。
master 用于保存上线版本代码,创建了develop分支
---| develop 用于保存相对稳定版本的代码,所有的feature都是develop分支创建的
---| feature 用于开发某几个功能 不同的功能可能会创建不同的分支,如:
---| feature/login
---| feature/list
---| release 用于代码上线前的准备(测试,bug修复)是dev创建的 【如:release/v1.0】
---| bugfix 用于修复不紧急bug 【如:bugfix/xxx2021】
---| hotfix 用于修复紧急bug
当develop合并完成功能分支后,是不会直接上线的,此时会在develop分支下创建 release 测试分支,如果在此时出现问题,测试人员会在 release/v1.0分支下创建分支。
开发一个项目领导可能做的事情:
- 搭建仓库
- 创建分支
- 初始化项目
- 合并分支
一、创建一个远程仓库:
拉取远程仓库
git clone 仓库地址
查看所有分支:
git branch -r
二、创建分支
在master分支下创建一个 develop 分支并且提交到远程仓库中:
git branch develop // 创建 develop 分支
git checkout develop // 切换到 develop 分支
提交:
git push --set-upstream origin <分支名称>
此时远程仓库就会多一个develop分支
如何删除分支:
- 先切换到其他分支,再删除。
git checkout 切换到其他分支,
git branch -d 需要删除的分支名
三、创建功能分支
在实际开发中,领导可能会创建很多功能分支
:
四、初始化项目
初始化一个Vue项目并合并:
创建 Node.js 后端项目
cnpm install express-generator -g //全局安装
express --view=ejs <后端项目名称> // 切换到项目目录内局部安装
下载依赖和运行后端服务:
进入 http://localhost:3000/ 查看,如果看到下面的页面,则后端运行成功:
五、合并分支
把 功能分支
合并到 develop 并 提交代码到远程仓库
-
切换到 develop 分支
-
提交功能分支代码并且合并到 dev
git add . // 添加当前目录下的所有文件到暂存区 git commit -m 'init0' // 提交一次代码,并添加备注
在远程仓库查看效果:
- 注意,此时只有在dev分支才有项目初始化代码,master和 feature/home 功能分支是没用的(这样才对)。
开发者 Git 操作:
一、克隆仓库
注意,如果直接使用克隆地址拉取代码,默认是拉取主分支 master 分支下的代码。
指定分支克隆代码:
git clone -b <分支名称> 地仓库址
此时我们没有提交代码的权限,需要自己在仓库生成 SSH 公钥。
二、拉取了dev 分支,但是提交代码需要在某一分支上
我们此时克隆的是 dev 分支的代码,但是开发及上传代码在 feature/home 分支下:
(1). 配置本地身份
git config user.name "liaoyio"
git config user.email "2417276459@qq.com"
(2). 在dev 分支查看日志并且复制上传记录的hash
(3). 远程仓库拉取到本地仓库
git checkout --track origin/feature/home
注意此时
拉取的项目是空的
,因为初始化项目的代码在dev分支下。
三、拉取 dev 分支代码及合并
(4). 将dev分支 commit 对应的hash值提交的代码合并到 功能分支(home)上
在远程仓库查看,此时home分支就有代码了: