Git面试常见问题

有次推送了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不支持文件层面的操作。

原文发布于微信公众号 - 数据库SQL(SQLdba)

原文发表时间:2018-01-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玉树芝兰

如何用Python做Web开发?——Django环境配置

用Python做Web开发,Django框架是个非常好的起点。如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手。

702
来自专栏SEO

「知识」Lighthouse插件在SEO中的应用

33315
来自专栏Python、Flask、Django

Mac自带磁盘跑分情况(买的移动固态到了)

802
来自专栏ThoughtWorks

TW洞见〡现代Web页面开发流程

现代Web页面开发流程 通常来说,Web页面开发的流程大致是这样的:设计师(设计师不是美工,就像程序员不是码农一样)提供设计稿,通常是图片格式。然后前端的开发...

3526
来自专栏Hadoop实操

如何使用Hue创建Spark2的Oozie工作流(补充)

目前Oozie 的 SparkAction 仅支持Spark1.6, 而并不支持Spark2, 这是 CDH Spark2已知的局限性(https://www....

6896
来自专栏Hadoop实操

Cloudera Manager的时间轴

Cloudera Manager的很多页面上都有时间轴(Time Line)。当你查看服务或者主机页面时,使用时间轴可以仅显示特定时间点的状态和运行状况。当你查...

4067
来自专栏程序员互动联盟

【一起学python】基础环境搭建

联盟有个小伙伴,为了督促自己学习进步,决定把自己以前学的python重新梳理下,并且以文章的方式展示出来,联盟专门做一起学python系列专栏,鼓励这位小伙伴学...

3209
来自专栏程序员互动联盟

【编程基础第八讲】如何选择Android模拟器?

存在问题: android开发如何选择一款好的模拟器? 解决方案: ? 网友们经常会问一些关于Android模拟器的问题,我今天就给大家总结一下。 1、Andr...

3307
来自专栏极乐技术社区

从零开始:微信小程序新手入门宝典

为了方便大家了解并入门微信小程序,我将一些可能会需要的知识,列在这里,让大家方便的从零开始学习; 一:微信小程序的特点 张小龙:张小龙全面阐述小程序,推荐通...

2175
来自专栏WindCoder

检查评论者是否有Gravatar头像

今天Angel来了,同时为风风找到了一个评论方面的BUG——游客身份若使用的邮箱没有Gravatar头像就不能发评论,这对于一些有特殊需要的朋友来说可能算不上B...

371

扫描关注云+社区