Git

Git Reset

find back code

Posted by lanbery on January 9, 2022

Git Message 规范

commit message格式

<type>(<scope>): <subject>

type(必须)

  • upd:更新某功能(不是 feat, 不是 fix)
  • feat:新功能(feature)
  • fix/to:修补 bug,fix 产生diff并自动修复此问题。适合于一次提交直接修复问题,to: 只产生diff不自动修复此问题。适合于多次提交
  • docs:文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改 bug 的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动
  • perf:优化相关,比如提升性能、体验。
  • revert:回滚到上一个版本
  • merge:代码合并。
  • sync:同步主线或分支的Bug。

scope(可选)

scope用于说明 commit 影响的范围

subject(必须)

subject是commit目的的简短描述,不超过50个字符

fix(DAO):用户查询缺少username属性 
feat(Controller):用户查询接口开发

Git branch

使用Git创建本地分支,并push到远程

  - git branch -a                 //查看所有分支
  - git status                  //查看状态
  - git checkout -b newBranch           //新建本地分支
  - git branch -d brachname         //删除本地分支
  - git push origin newBranch[:newBranch]     //创建远程分支,或者
  - git push --set-upstream origin sol5     //管理本地默认推送分支,直接git push
  - git push origin :newBranch          //通过推送空分支的方式删除远程分支
  - git push origin --delete newBranch      //删除远程分支

Git 回滚 & 恢复

误删除本地文件恢复

git status # 
git reset HEAD <dir/file> # 针对目录或文件
git checkout src/ui

git reset HEAD src/ui

M       src/store/index.js
D       src/store/initial-p3-state.js
D       src/ui/scss/_all.scss
D       src/ui/scss/_brv-core.scss
D       src/ui/scss/_mixin.scss
D       src/ui/scss/_reset.scss
D       src/ui/scss/_utilities.scss
D       src/ui/scss/_variables.scss
D       src/ui/scss/utils/classname-util.js
M       src/widgets/select/select.scss

Git reset back commit hash

方式一

Git 回滚: 强制 push 方式

  • 0: 如本地有未提交代码,可git checkout -b for-reset-tmp && git add . && git commit -am ‘xxxx’ && git checkout current branch
  • 1: git pull 保证本地与remote 一致
  • 2: 备份当前分支(如有必要)
  • 3: git log [–pretty=online] 查找要回复的hash
  • 4: git reset –hard
  • 5: git push -f origin # 强制更新远程分支

方式二

从回滚位置生成新的commit hash,

  • 0: 如本地有未提交代码,可git checkout -b for-reset-tmp && git add . && git commit -am ‘xxxx’ && git checkout current branch
  • 1: git pull # 保证当前工作区是干净的,并且和远程分支代码一致
  • 2: 备份分支(如有必要)
  • 3: git revert # 不加 --no-commit 生成新的hash
  • 4: git push