为什么要编写这个系列?git不熟悉的面试者很难表现出自己熟悉git工作流,那么教大家如何在面试官面前大展雄风!!!
介绍
git是一款代码版本控制软件,目前已被广泛的使用。因此优雅的使用git已经成了开发者的必备技能。 区别于SVN,git的特点是去中心化。
面试开始
以下都是面试经常会问到的问题,大家要记住哦!!!
1.平时开发你是用命令行工具还是可视化工具
面试官的初衷不是想知道你用什么工具,而是想知道你是否熟悉常用的命令和分支,以及如何团队合作
2.常用的分支
名称 | 说明 |
---|---|
master | 主分支 |
develop | 开发分支,包含确定即将发布的代码 |
feature | 新功能分支,一般一个新功能对应一个分支 |
release | 发布定期要上线的功能 |
hotfix | 当系统在线上出现bug时,需要火速处理 |
注:
hotfix是从master分支上切下来, master branch(生产服务器)先回滚到上一个稳定版本来避免bug再出现,开发人员处理掉这个bug后进行单 元测试,回归测试之后,master merge hotfix,别忘了develop branch也要merge 它!
3.常用的命令
不要只说 add commit pull push,这样会显得很初级,以下列出的命令还会有很多参数去延伸,大家要多学习哦
- git add
- git commit
- git status
- git pull
- git push
- git merge
- git stash
- git reset
- git log
- git diff
- git remote
- git clone
- git branch
- git config
- git tag
- git rm
- git init
- git fetch
- git cherry-pick
- git rebase
4.git checkout 可以实现哪些功能
- 切换分支
git checkout 分支名
- 创建并切换到新分支
git checkout -b 分支名
- 撤销对文件的修改(只能撤销掉没有add的文件)
git checkout 文件名 // 撤销所有的文件 git checkout .
5.合并其中一个feature分支有哪几种实现方式
第一种
git pull origin feature
第二种
git merge feature
6.git pull和git fetch的区别
首先在作用上他们的功能是大致相同的,都是起到了更新代码的作用。
pull=fetch+merge,pull的话,下拉远程分支并与本地分支合并。
fetch只是下拉远程分支,怎么合并,可以自己再做选择。
7.如何将dev分支的commitid复制到当前分支
// 先git log 找到想要复制的commitid
git cherry-pick commitid
8.讲下git的工作流程
没有具体的标准答案,上图是一个工作流程,具体以往下几个知识点分析
- 每个分支的作用,以及是干什么的
- 对于 feature 流程,都是从 develop 分支发起,分支合并以及功能管理
- 对于 hotfix 流程,要从 master 分支发起,修复完要同时合并到 develop 和 master。
Git flow的优点是清晰可控,缺点是相对复杂,需要同时维护两个长期分支。大多数工具都将master当作默认分支,可是开发是在develop分支进行的,这导致经常要切换分支,非常烦人。
面试结束
希望《吊打面试官》系列之GIT面试篇能为你的面试提高通过率!!!
祝福每一位小伙伴都能找到满意的工作!!!