git的在工作中使用的一些注意事项
git的使用在工作中十分常见,对于一个新手小白而言,最好提前了解一些git的常识,这样避免在团队协作的时候犯错误。
接下来我将从三个方面来介绍git的使用,
首先了解git的一些规则,比如分支名字,推送分支的描述,这些一般都有约定的规则,在使用的时候最好按照规则来,各个公司在这些方面一般差不多。所以有个大体的认识就OK,具体按照公司的要求,如果没有就按照下面的规则来。
第二部分就是了解推送一次内容到远程仓库的完整流程
第三部分是我认为比较常用的一些git指令。
一、使用git必看内容
1.1 常见的分支
我们提交代码需要先创建一个分支,这个时候就需要了解一下各个分支的作用,以及创建分支的名字。
- master 稳定版本或生产环境代码。一般新创建分支就是基于master拉的。 一般不直接向 master 分支直接推送代码,而是通过合并请求把其他分支的代码合并过来。比如合并develop分支的代码,这个时候一般需要打个tag,对应一个正式的版本发布,方便回滚。
- develop :代表项目的最新开发进度,是功能集成的主要分支。它包含所有已经完成但尚未发布的新功能。 一般不直接在develop开发新功能,而是创建新的分支开发,开发自测没问题后,开发者将自己的功能分支合并到 develop 分支。当 develop 分支的功能积累到足以发布一个新版本时,会基于master创建 release 分支然后合并到 master,一般不直接把develop合并到master,合并到master的时候需要打个tag。
- feature 功能分支,用于开发一个新功能。通常以
feature/
开头,后跟功能描述。例如:feature/user-login - hotfix 热修复分支,用于快速修复生产环境(main 分支)上的紧急 bug。通常以 hotfix/ 开头,后跟修复描述。例如:hotfix/login-bug。
- release 发布分支,为即将发布的新版本做最后的准备(如修复小bug、更新版本号、生成文档等)。这可以避免阻塞 develop 分支的持续开发。通常以 release/开头,后跟版本号。例如:release/V1.2.0
1.2 git commit的一些描述。
推送代码的时候,为了方便理解,我们一般需要再推送的时候加上描述,同样描述也需要一定的格式。例如:git commit -m ‘fix: 修复登录token失效问题’。一般前两个用的多一点。
- feat : 新功能
- fix : 修复bug
- docs : 文档改变
- style : 代码格式改变
- refactor : 某个已有功能重构
- perf : 性能优化
- test : 增加测试
- build : 改变了build工具 如 grunt换成了 npm
- revert : 撤销上一次的 commit
- chore : 构建过程或辅助工具的变动
二、完成一次推送的操作
- git checkout -b feature/multiline (添加并且切换分支,新创建的分支,基于你创建分支时候所在的分支) a. 查看所有分支 git branch 如果分支太多,控制台一直缓存可以按q键退出。也可以按enter键回车查看下一个分支。 b. 切换到指定的分支 git checkout feature/multiline
- git add. 提交代码到暂存区,(这个时候提交的内容还是在本地的,撤销后远程没有记录,可以通过命令撤销,也可以直接在可视化界面这边操作,比较简单。) git add后有几个命令 a. 只想撤销其中一个文件的添加 git restore --staged script.js b. 想撤销所有文件的添加 git reset HEAD c. 想要查看git add的文件,确认文件状态 git status
- git commit -m ‘提交描述’ 暂存区的所有内容正式提交到本地仓库。(这个时候提交的内容还是在本地的,撤销后远程没有记录) a. 撤销提交但保留更改在暂存区 git reset --soft HEAD~1
- git push 本地提交推送到远程仓库 (这时候撤销,远程仓库会有记录,而且注意推送前先git pull拉取一下分支,防止冲突。) a. 撤销最近的一次提交,会留下痕迹 git revert HEAD b. 新创建的分支关联远程仓库并推送到远程 git push -u origin feature/multiline 完整写法 git push —set-upstream origin feature/multiline ,一般是新创建的分支第一次推送内容到远程仓库的操作。 c.推送内容到已关联的远程分支 git push origin feature/multiline || git push 一般远程有这个分支。
大致流程就是这个样子。
三、git常见的一些场景下的git指令
- 我们切换另一个分支的时候,当前分支的功能开发了一部分,暂时不能提交到远程分支上,需要把这些代码保存到一个地方。可以用暂存的功能。
a. 暂存代码 git stash
b. 取出暂存的代码 git stash pop - 有时候我们会面临一个场景git commit一直提交失败。可以尝试下面的指令。
git commit -m 'feat: 添加轮播标题' --no-verify 跳过 Git 的 pre-commit 钩子(比如代码检查、lint、测试等) - 如果在一个分支上推送了内容,需要在另一个分支上也存在,也就是将某次提交迁移到另一个分支
先切换到目标分支 git checkout 目标分支
然后使用提交的hash值来迁移某次提交 git cherry-pick <commit hash> - 如果一个分支想要和另一个分支一模一样,也就是将一个分支合并到一个分支上面。(一般是合并冲突的时候这样做。我们把一个功能分支合并到dev的时候,提示有冲突,那么我们需要基于合并的功能的分支,新创建一个merge分支,然后合并冲突,把新创建的merge分支合并到dev上面。)
首先创造一个新的分支,基于master,切换新创建的分支
然后 git merge 想要合并的分支 - 如何新创建一个分支,以及一些注意事项。
a. git checkout -b feat/login(分支名) 一般而言创建分支要基于另一个分支,在创建分支的时候,可以先看一下git branch 当前分支是什么,然后创建的分支就是基于当前分支创建的,如果基于的分支被操作的时候,也会影响基于他创建的分支,所以一般基于master创建新的分支,比较稳定,除非是在一个开发功能分支的基础上开发新的功能。
b. 重命名本地分支 git branch -m 旧的名字 新的名字
c. 删除本地分支git branch -d 名字
d. 查看分支的情况,基于什么创建的 git reflog show feature/multiline(分支名) - 想要查看分支的提交情况,我们一般通过gitlab或者github这样远程查看分支的提交情况。
a. 查看一个分支的最早三条消息,如果不加分支就默认是当前分支。 git log --reverse --oneline -n 3 feature/roamWander
b. 查看一个分支最近的三条消息 git log --oneline -n 3 feature/roamWander