唯品秀前端博客

Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。这年头,你不会敲几个常见命令的前端都不好意思说自己是前端

1 分支规范

1
2
3
4
5
6
├── master                      (主分支)
├── dev                         (主开发分支)
├── hotfix/v11.1.3              (hotfix分支)
├── hotfix/style                (hotfix分支)
├── feature/v11.1.3             (功能开发分支)
└── feature/style               (功能开发分支)

1.1 主分支master

  • master分支永远受保护。不可在master分支上开发,进行commit,push操作。
  • master分支只接收merge操作。
  • 每次发布正式上线的稳定版本(发布后第一天),将当前发布版本merge到master分支。
  • master分支的代码永远和线上代码保持同步。

1.2 主开发分支dev

  • dev分支为主开发分支。可以进行commit,push,merge操作。
  • 一般不在dev分支上进行新功能的开发。dev分支用来做不同分支的代码整合。
  • 每次master发布以后,需要把master的代码merge到dev上。保持比master的代码更新。

1.3 hotfix分支 hotfix/xxxx

  • hotfix分支是由master分支checkout出来,用于热修复线上bug用。可以进行commit,push,merge操作
  • 修复完毕经验证后直接发布。发布完成后merge到master分支。

1.4 功能开发分支 feature/xxxx

  • 用来进行新功能开发的分支。此分支由dev分支checkout出来,可以进行commit,push,merge操作。
  • 按照功能或者版本可以同时checkout多个feature分支并行开发。开发完毕统一merge回dev。

2 工作流程

2.1 新功能开发

  • 从dev分支checkout开发分支,如feature/new。
  • 开发完成后提交测试。测试通过后由发布负责人(一般为团队leader)修改package.json上的版本号,填写changelog。
  • 正式发布完成后,由发布负责人把发布的版本merge到master分支。
  • 最后把master分支merge到dev分支。

2.2 hotfix热修复

  • 从master分支checkout热修复分支,如hotfix/newbug。
  • 修复完成后提交测试。测试通过后由发布负责人(一般为团队leader)修改package.json上的版本号,填写changelog。
  • 正式发布完成后,由发布负责人把hotfix的merge到master分支。
  • 最后把master分支merge到dev分支。

2.3 并行开发

  • 从dev分支checkout多个并行开发的分支,如feature/new1,feature/new2,feature/new3...。
  • 开发完成后由发布负责人(一般为团队leader)将并行开发的分支统计后统一合并到dev或者一个新的feature分支上。(主要看短期内是否有多次发布排期)
  • 提交测试。测试通过后由发布负责人修改package.json上的版本号,填写changelog。
  • 正式发布完成后,由发布负责人把发布的版本merge到master分支。
  • 最后把master分支merge到dev分支。

3 注意点

  • 只要发布到正式环境,不管改动多少,每次都必须版本号变动,同时changelog留下记录。
  • 每次发布到正式环境后一定要记得同步代码回dev。
  • 除了master,dev这三个分支类型外的所有分支都是临时分支。可以适当保留1-2个版本的分支后删除其他分支。
  • 养成良好的习惯,每次开发前,提交代码前先同步代码。

git提交规范

  • feat: 新功能(feature)
  • fix: 修补bug
  • docs: 文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor: 重构(即不是新增功能,也不是修改bug的代码变动)
  • chore: 构建过程或辅助工具的变动
  • revert: 撤销,版本回退
  • perf: 性能优化
  • test:测试
  • improvement: 改进
  • build: 打包
  • ci: 持续集成

常见错误解决方案

Git冲突:commit your changes or stash them before you can merge 解决方法,例如下面错误:

1
2
3
4
error: Your local changes to the following files would be overwritten by merge:  
       xxx/xxx/xxx.sh
Please, commit your changes or stash them before you can merge.  
Aborting

出现这个问题的原因是其他人修改了已被Git追踪的文件并提交到版本库中去了,而你本地也修改了改文件,但是你事先忘记pull了,此时进行git pull操作就好出现冲突了,解决方法,在上面的提示中也说的很明确了。

一、保留本地的修改的改法

1
2
3
4
5
6
7
8
9
10
git status.
git pull
// 出现该提示 Please, commit your changes or stash them before you can merge.
git stash
git pull
git stash pop
git status.
git add.
git commit - m ""
git push
  1. 通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。
  2. git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。(缓存起来)
  3. git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。(可能会有冲突)
  4. git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
  5. git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
  6. git stash drop 编号,删除指定编号的记录

二、放弃本地修改的改法

1
2
3
4
5
6
7
8
git log --oneline 查看提交的版本,找到上次提交的版本
git reset --hard  + 上次提交的版本号
git pull

//或者舍弃本地代码,远端版本覆盖本地版本(慎重)
git fetch --all
git reset --hard origin/master
git fetch

特别注意(重要)

方法1会连带的报出很多问题,有时并不好使,方法2使用有危险,不注意备份的话,会覆盖掉本地代码,所以做之前先备份本地写好的代码非常重要

GIT的常用操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//查看某个文件改动的所有历史,回车前往回翻
git log -p js/test.js(文件路径地址),可以通过修改下那个文件,然后git status也能立马查看当前被改动文件的地址
//查看最近一次提交
git log --stat -1
//回滚到指定版本
git reset --hard xxx
//撤销指定版本提交
git revert xxx
//分支合并,例如将dev合并到master,在mastart分支下运行
git merge dev
//git查看远程仓库地址命令
git remote -v
//git不区分文件名大小写的问题,查看是否不区分大小写
git config --get core.ignorecase
//设置为false,将区分文件大小写,建议为所有git项目设置为false
git config core.ignorecase false
// 查看当前本地分支对应的远端分支
git branch -vv
// 删除本地分支
git branch -d xx
// 删除远程分支
git push origin --delete xxx
// 推送本地代码到指定的远端分支,如果你本地的分支名称和远程名称相同,则使用以下命令:
git push origin branchName
// 推送本地代码到指定的远端分支,如果本地的分支跟远程的分支不一样,则指定本地和远程的分支的名称:
git push origin 本地分支名:远端分支名
// 新建远端分支,首先要新建本地分支,然后把本地分支push到远端(不存在)分支即可
git checkout -b dev
git push --set-upstream origin dev //--set-upstream可以简写-u,这样本地和远端关联后,后续提交代码只需要git push
// 新建本地分支与远程分支(已存在)关联
git branch –set-upstream 本地新建分支名 origin/远程分支名
// Git删除无效远程分支
git remote update -p //清除线上已经删除而本地还保留的无效远程分支,当远程分支删除的时候,本地同步下来的远程分支却不会删除,久而久之,本地积累了不少无效的远程分支。找了一下,可以用如下命令清除它们

//查看某个文件的修改历史记录 说明:filename是指想要查看的某个文件的本地绝对路径
git log filename 能够看到fileName相关的commit记录
git log -p filename 能够显示filename每次提交的diff
只看某次commit提交中的某个文件变化,能够直接加上fileName: git show c5e69804bbd9725b5dece57f8cbece4a96b9f80b filename

附件:

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(5) 打赏
标签:

上一篇:

下一篇:

相关推荐

1 条评论关于"git常见操作命令,不用可视化工具也可以很好的使用Git"

表情

最新评论

    暂无留言哦~~
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏