Git面试常见问题
时间:2022-05-03
本文章向大家介绍Git面试常见问题,主要内容包括基础部分--大家平时都用什么工具?、git add 和git stage有什么区别、git reset 、git revert和git checkout 有什么区别?、注意,因为git reset是直接删除commit记录,从而会影响其他开发人员的分支,所以不要在公共分支做这个操作。、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
有次推送了Git的基本配置。
Git作为团队开发的利器,在面试的时候,被问到的概率很大。
基础部分--大家平时都用什么工具?
- 出了Git自带的命令行工具外,作为iOS开发,接触最多的当然就是Xcode自带的Source Control功能。但是这两个工具都有一些自己的不足。
- Xcode本身自己是支持Git的,但是有个不足之处,就是卡顿。文件越大越卡,甚至会Crash。所以对于.pbxproj这种大文件的冲突,Xcode基本是蒙圈状态的。另外它就是提供Git支持也有些单薄。
- 命令行
- SourceTree
- SmartGit
git add 和git stage有什么区别
- Git仓库的三个组成部分:工作区(Working Directory)、暂存区(Stage)、历史记录区(History)
- 工作区:在Git管理的正常目录都算是工作区,我们平时编辑工作都是在工作区完成。
- 暂存区:临时区域。里面存放将要提交的文件快照。
- 历史记录区:git commit 后的记录区。
- git add 和git stage,其实这两个命令是同一个意思,是因为要跟 svn add 区分,两者的功能是完全不一样的,svn add 是将某个文件加入版本控制,而 git add 则是把某个文件加入暂存区,因为在 git 出来之前大家用 svn 比较多,所以为了避免误导,git 引入了git stage,然后把 git diff --staged 做为 git diff --cached 的相同命令。基于这个原因,我们建议使用 git stage 以及 git diff --staged。
git reset 、git revert和git checkout 有什么区别?
- 共同点:用来撤销代码仓库中的某些更改。
- 不同点
- git reset可以将一个分支的末端指向前一个commit。然后再下次git执行垃圾回收的时候,会把这个commit之后的commit都扔掉。
- git reset还支持三种标记。用来标记reset指令的影响范围。
- --mixed:会影响到暂存区和历史记录区。也是默认选项。
- --soft:只影响历史记录区。
- --hard:影响工作区,暂存区和历史记录区。
注意,因为git reset是直接删除commit记录,从而会影响其他开发人员的分支,所以不要在公共分支做这个操作。
- git checkout 可以将HEAD移到一个新的分支,并更新工作目录。以为可能会覆盖本地的修改,所以执行这个指令之前,你需要stash或者commit暂存区和工作区的更改。
- git revert和git reset的目的是一样的,但是做法不一样,它会创建新的commit的方式来撤销commit,这样能保留之前的 commit 历史,比较安全。另外,同样因为可能会覆盖本地的修改,所以执行这个指令之前,你需要 stash 或者 commit 暂存区和工作区的更改。
然后从文件的层面来说:
- git reset 只是把文件从历史记录区拿到暂存区,不影响工作区的内容,而且不支持 --mixed、--soft 和 --hard。
- git checkout 则是把文件从历史记录拿到工作区,不影响暂存区的内容。
- git revert不支持文件层面的操作。
- Batik渲染png图片异常的bug修复全程记录
- Web应用服务器安全:攻击、防护与检测
- 基于Go Packet实现网络数据包的捕获与分析
- 动态追踪技术(四):基于 Linux bcc/BPF 实现 Go 程序动态追踪
- Hive 时间转换函数使用心得
- Flume-Hbase-Sink针对不同版本flume与HBase的适配研究与经验总结
- 利用Flume 汇入数据到HBase:Flume-hbase-sink 使用方法详解
- 浅谈保证软件工程质量的一些心得体会
- 基于ELK的nginx-qps监控解决方案
- 2017年年度最烂密码排名
- 字符串方法汇总(三)
- 周鸿祎:“大安全”网络时代 需要AI大数据的技术支持
- 爆料:对扫码支付下手后,据说央行接下来要提高备付金,目标比例42%
- 回顾2017年5大科技突破,“时间晶体”充满想象!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 求求你,不要再纠结指针了(1) ——万能转化公式
- 求求你,不要再纠结指针了(2)——函数指针
- 用Python解决100个问题 | 倒计时
- 【转载】【ionic+angularjs】angularjs ui-router路由简介
- 实时性迷思(1) —— “快是优点么?”
- Java中Thread的join方法为什么能让线程插队?
- 再见 ELK,是时候拥抱下一代日志系统 Loki 了
- 利用VBAProject来共用VBA代码
- 线上频出MySQL死锁问题!分享一下自己教科书般的排查和分析过程!
- 换人!这些算法都不会还学什么操作系统
- 【赵渝强老师】第一个Oracle的手工备份和恢复
- LeetCode刷题DAY 36:最小路径和
- Java底层-JMX
- VBA汇总多个Sheet数据
- VBA数据类型String