【Git】3年前端Git使用总结

1,657 阅读5分钟

1 Git 流程图

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:本地仓库
  • Remote:远程仓库

2 注释规范

fix:修补
feat:新功能(feature)
optimize:优化
perf: 改进性能的变更
test:新增测试用例
style: 格式(不影响代码运行的变动)
chore:小改动. 一般为仅仅一两行的改动
delete: 删除
br: 针对bug号,用于向测试反馈bug列表的bug修改情况
docs:文档变更相关
refactor: 代码重构变更

3 基本操作

3.1 git clone

# 克隆代码
git clone http://mengn@gitlab.open.com.cn/mkw/imooc/jiuyeban.git

# 克隆制定分支代码
git clone -b mengn http://mengn@gitlab.open.com.cn/mkw/imooc/jiuyeban.git

3.2 git status

// 查看工作目录当前状态 git status

3.3 git add

# 添加某个文件到暂存区,后面可以跟多个文件,以空格区分
git add xxx

# 添加当前更改的所有文件到暂存区。
git add .

3.4 git commit

# 提交暂存的更改,会新开编辑器进行编辑
git commit 
# 提交暂存的更改,并记录下备注
git commit -m "you message"

3.5 git push

# 本地分支代码同步到远程 
git push

3.6 git pull

# 拉取远程仓库代码 
git pull

4 分支操作

4.1 git chekcout -b

# 创建并切换分支
git checkout -b  course_contrast_20220302

4.2 git checkout

# 注:切换分之前先切换到主分支
git checkout master 
git checkout mengn

4.3 git push -u origin

 # 分支推远程
 git push -u origin mengn

4.4 git merge

git pull

git checkout master
如果没有pull master代码,会提示当前分支落后,push会失败
git pull

master要mengn代码
git merge 20211122_work_order

git会出现 merge branch mengn 
没有commit,合并文件为你新增的文件

1、合并完成,直接push 

2、自动合并失败,修复冲突,然后提交结果
以下文件将被拉取,合并前请先提交(必)

add
commit 
git push
git status

4.5 git push origin xx:master

# 合并分支
git push origin xxxx:master

4.6 git branch -d

# 删除本地分支
git branch -d mengn

4.7 git push origin --delete

# 删除远程分支
git push origin --delete mengn
  • 本地推远程:
git push origin

5 工作操作

5.1 git checkout

使用git checkout来撤销工作区修改文件

# 撤销(工作区)
git checkout smarty/template/class/templet/531.phtml

# 清除未被 add 或被 commit 的本地修改
git clean -df

5.2 git reset HEAD

使用git reset HEAD来撤销已经add文件

# 撤删add的所有文件
git reset HEAD

# 对某一个文件撤删
git reset HEAD src/mode/hello.java

5.3 git reset

使用git reset来撤销已经commit文件

git reset smarty/template/class/templet/531.phtml

5.4 git commit --amend

使用git commit --amend来修改commit注释

第一步:

git commit --amend

第二步:

进入vim编辑状态,修改保存

第三步:

git push origin master(分支) --force

5.5 git stash

使用 git stash 来暂存文件

第一步:修改好的代码,先add

第二步:暂存文件

git stash //把本地的改动暂存起来
git stash save "message"  //执行存储时,添加备注,方便查找。
git stash pop // 应用最近一次暂存的修改,并删除暂存的记录
git stash list // 查看 stash 有哪些存储
git stash apply  // 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即 stash@{0},如果要使用其他个,git stash apply stash@{$num} 。
git stash clear // 删除所有缓存的 stash

6 git CZ

commitizen/cz-cli是一个规范化提交信息的工具,当我们在多人协作开发过程中,有必要养成良好的commit规范,方便日后review代码,产出CHANGELOG说明等等。

cz-customizable默认会去读取项目中.cz-config.js配置,所以我们还要新建文件.cz-config.js

  // 可选类型
  types: [
    { value: 'feat', name: 'feat:     新功能' },
    { value: 'fix', name: 'fix:      修复' },
    { value: 'docs', name: 'docs:     文档变更' },
    { value: 'optimize', name: 'optimize:     优化' },
    { value: 'style', name: 'style:    代码格式(不影响代码运行的变动)' },
    { value: 'refactor', name: 'refactor: 重构(既不是增加feature,也不是修复bug)' },
    { value: 'perf', name: 'perf:     性能优化' },
    { value: 'test', name: 'test:     增加测试' },
    { value: 'chore', name: 'chore:    构建过程或辅助工具的变动' },
    { value: 'revert', name: 'revert:   回退' },
    { value: 'build', name: 'build:    打包' }
  ],
  // 消息步骤
  messages: {
    type: '请选择提交类型:',
    customScope: '请输入修改范围(可选):',
    subject: '请简要描述提交(必填):',
    body: '请输入详细描述(可选):',
    footer: '请输入要关闭的issue(可选):',
    confirmCommit: '确认使用以上信息提交?(y/n/e/h)'
  },
  // 跳过问题
  skipQuestions: ['body', 'footer'],
  // subject文字长度默认是72
  subjectLimit: 72
}

当我们准备要提交代码,git add . > git commit -m 'xx', 这里我们用  git cz取代git commit操作 >git push

7 git flow工作流

代码管理的标准工作流程,分为:

  • 集中式工作流

SVN一样,集中式工作流以中央仓库作为项目所有修改的单点实体,所有修改都提交到master这个分支上。

  • 功能分支工作流

以功能分支命名

  • git flow工作流(最佳实践)

分支使用相对有条理,确保线上的版本稳定,是现在最广泛采用的一种工作流程。

包含如下几个关键分支:

image.png

  • master --主干
  • hotfix --热部署 (修复线上bug)
  • release --分支 (测试代码分支)
  • dev--开发分支
  • feature ---功能
master下的代码必须保证线上直接运行
创建开发分支 develop
根据dev分支创建feature_login  mengn  lidy
开发代码 -提交到feature分支
合并到dev分支 
release 基于dev创建 
hotfix基于dev分支创建
开发完了分支都删除

以上便是个人在工作中常用的 git 命令,希望本文能对你有所帮助。