Giter Club home page Giter Club logo

git-github-study's People

Watchers

 avatar  avatar

git-github-study's Issues

git commit header type

type用于说明 commit 的类别,只允许使用下面7个标识。

feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。

git commit -m 与 git commit

git commit -m 是提交一行说明
git commit 期望提交多行说明,输入这个命令,会打开git指定的编辑器

项目使用流程

新项目

  • 1 准备工作
    • git 是否安装
    • node 是否安装
    • commitizen 是否安装 (可以使用 git cz 的插件)
      npm install -g commitizen
      // 当前项目
      commitizen init cz-conventional-changelog --save --save-exact
      
    • conventional-changelog 是否安装(通过 commit 自动生成 changlog 插件)
      npm install -g conventional-changelog-cli
      
  • 2 创建一个当前版本的分支,例如: dev
  • 3 在当前版本增加内容--不是新特色
  • 4 将修改的内容添加到 stage
  • 5 如果是不需要添加到 changelog 的变化,git cz 然后就流程就完成;如果是需要添加到 changelog 的变化 还需要再执行
    // 每次 changelog 中的 commit 都会添加到 changlog.md 中来
    conventional-changelog -p angular -i CHANGELOG.md -s
    
    // 命令行显示, 当前版本没有整理,所有需要添加到 changlog 中的修改
    conventional-changelog -p angular -i CHANGELOG.md -w
    
    // 命令行显示,  当前版本整理后,且需要添加到 changelog 中的 commit 建议用这个
    conventional-changelog -p angular -i CHANGELOG.md -w -r 0
    

如果想要重构当前版本(例如:1.0.0, 文件夹名字叫1.0.0)的代码

  • 1 重新开一个分支 dev
  • 2 在当前分支上进行修改,修改好没问题,切换到 master 分支
  • 3 在 1.0.0 版本的 master 分支下,merge dev

## 如果想要开发一个新版本 (例如当前: 1.0.0 新版本: 1.1.0) 方法行不通
+ 1 将当前版本代码复制一份到一个新的文件夹,将当前文件夹改名字为 (1.1.0), 新创建的文件夹改为
1.0.0 --- 这样适合非常紧急的版本迭代( 考虑到npm i 可能会失败,占用一部分时间 )

+ 2 将当前版本代码复制一份到一个新文件夹,新文件夹改名为 1.1.0, 然后在 1.1.0 文件夹下修改代码 --- 适合常规操作

如果想要开发一个新版本

  • 1 将当前库 clone 下来,新建 dev 分支,在 dev 上创建新版本。创建好后: master merge dev, 再创建新
    的版本号分支。例如: 1.1.0。在 1.1.0 分支下 git push

常用命令

git status

git branch

git checkout -b
git checkout xxx

git tag v0.1.0
git push origin v0.1.0

git add -A

git commit -m
git commit

git cz

conventional-changelog -p angular -i CHANGELOG.md -w -r 0

当前 commit 规范使用 Angularjs 开源项目规范

git commit Header

Header 部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)。
type 用于说明 commit 的类别,只允许使用下面7个标识。

feat: 新增feature (生成changlog)
fix:  修复bug (生成changlog)
docs: 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等
style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑
refactor: 代码重构,没有加新功能或者修复bug (生成changlog)
perf: 优化相关,比如提升性能、体验
test: 测试用例,包括单元测试、集成测试等
chore: 改变构建流程、或者增加依赖库、工具等
revert: 回滚到上一个版本

如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。

Git分支与版本发布规范

  • 基本原则:master为保护分支,不直接在master上进行代码修改和提交。
  • 开发日常需求或者项目时,从master分支上checkout一个feature分支进行开发或者bugfix分支进行bug修复,功能测试完毕并且项目发布上线后,将feature分支合并到主干master,并且打Tag发布,最后删除开发分支。分支命名规范:
    • 分支版本命名规则:分支类型 分支发布时间 分支功能。比如:feature_20170401_fairy_flower
    • 分支类型包括:feature、 bugfix、refactor三种类型,即新功能开发、bug修复和代码重构
    • 时间使用年月日进行命名,不足2位补0
    • 分支功能命名使用snake case命名法,即下划线命名。
  • Tag包括3位版本,前缀使用v。比如v1.2.31。Tag命名规范:
    • 新功能开发使用第2位版本号,bug修复使用第3位版本号
    • 核心基础库或者Node中间价可以在大版本发布请使用灰度版本号,在版本后面加上后缀,用中划线分隔。alpha(最初) 或者 belta(测试) 后面加上次数,即第几次alpha:
      • v2.0.0-alpha.1
      • v2.0.0-beta.1
  • 版本正式发布前需要生成changelog文档,然后再发布上线。

远程提交

…or create a new repository on the command line
echo "# xxx" >> README.md

git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:xxx/xxx.git
git push -u origin master

…or push an existing repository from the command line

git remote add origin [email protected]:xxx/xxx.git
git push -u origin master

取消某些文件的提交

.gitignore 没有生效,或者改动了很多文件,但是只想选择性提交时

// -n:加上这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。
// 这里指 “bin”文件夹
git rm -r -n --cached "bin/" 

 // 最终执行命令. 取消某些文件的提交
// 这里指 “bin” 文件夹。bin文件夹iis中要注意
git rm -r --cached  "bin/" 

我的理解

当需要生成 changlog 的时候,一定是要发布新版本了,就需要打上新的版本号(tag)。

package.json 中 repository 这一栏要配置

"repository": {
  "type": "git",
  "url": "https://github.com/framework7io/framework7.git"
}

FIXME:

  • 1 每次都是在一个文件夹里操作的吗? 我新创建了一个文件夹,并且使用新的 .git 导致本地版本不能同步到远程库 Master 分支上

解决方式:先从远程仓库拉取下来,在远程仓库基础上改, 生成 changelog 的时候看仔细些

git clone -b xxx 可能会造成不能合并到master

  • 码云出现了这种情况,github还没测试
    • package-lock.json造成版本冲突
    • 远程库去掉package-lock.json;将package-lock.json加入到.gitignore

参考资料

release

  • 可以通过github创建新的release
  • 在新的release里面将 生成的changelog的内容粘贴进来

changelog

  • 1 改变内容
  • 2 git add -A 添加全部修改内容到 stage
  • 3 git commit -m 单行 git commit 多行 或者使用 Commitizen git cz
    • 使用 git cz 按要求填写修改内容(git bash 上下有bug)
  • 4 自动生成改变内容到 changlog.md
  • 5 git add -A git commit -m 添加 changelog.md 修改

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.