Git 基础面试题

335 阅读4分钟

一. Git 工作流程

  • Git flow : 最早最广泛的一种开发流程。 有两个主要的长期分支 Master 主分支 Develop 开发分支 三个短期分支 feature 功能分支 hotfix 补丁分支 release 预发分支

  • GitHub flow : Git flow的简化版。它是 Github.com 使用的工作流程。主要有一个长期分支 Master 主分支 , 一个开发分支 pull request(简称PR),PR通过后合并到主分支

  • GitLab flow : 是 Git flowGithub flow 的综合。最大原则叫做"上游优先"(upsteam first),即只存在一个主分支master,它是所有其他分支的"上游"。只有上游分支采纳的代码变化,才能应用到其他分支。

二. Git 基础概念

  • Workspace:工作区

  • Index / Stage:暂存区

  • Repository:仓库区(或本地仓库)

  • Remote:远程仓库

  • HEAD:指针,可以叫做当前版本位置

三. 列举工作中常用的Git命令

  • git add . 新增文件的命令 (从工作区到暂存区)

  • git commit -m /git commit -a提交文件的命令 (从暂存区到仓库区)

  • git status 查看工作区文件状态 (未提交,已修改,已暂存,已提交)

  • git push 从仓库区上传到远程仓库

  • git pull 从远程仓库拉到工作区

  • git reflog 查看提交记录命令

  • git branch 创建分支

  • git merge/git rebase 合并分支

四. 撤回操作

  • git reset 修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本

    适用场景:  如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。

  • git revert用于“反做”某一个版本,以达到撤销该版本的修改的目的

    适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,

  • git checkout -- 文件名 拉取暂存区的这个文件覆盖当前文件

    适用场景: 当文件在工作区修改,还没有提交到暂存区和本地仓库时。不过需要特别留意的是这些改动没有提交到 Git 仓库,Git 无法追踪其历史,一旦回滚就直接丢弃了。

  • git commit --amend 覆盖上次提交注释

    适用场景: 上次 git commit后,未 git push 前,发现注释不详细,有问题时

五. git stash 如何使用

  • git stash是把工作区修改的内容存储在栈区。

    适用场景:

  • 解决冲突文件时,会先执行git stash,然后解决冲突;

  • 遇到紧急开发任务但目前任务不能提交时,会先执行git stash,然后进行紧急任务的开发,然后通过git stash pop取出栈区的内容继续开发;

  • 切换分支时,当前工作空间内容不能提交时,会先执行git stash再进行分支切换;

六. git mergegit rebase的区别

v2-73db63a5abb3cac70f913155a854cf29_r.jpg

从上图可以轻松发现,merge 会把master分支和feature 合并在一起,在master分支提交一个新的 commit , 而 rebase 会把feature 分支合并到master分支里面,但会舍弃掉feature分支。 Merge命令会保留所有分支commit的历史时间,rebase通常是发生在自己的个人分支上的。这样做的好处就是保证每个人的代码都可以运行在当前最新的主分支的代码上

七. git loggit reflog 的区别

  • git log –number:表示查看当前分支前number个详细的提交历史记录;
  • git log –number –pretty=oneline:在上个命令的基础上进行简化,只显示sha-1码和提交信息;
  • git reflog –number: 表示查看所有分支前number个简化的提交历史记录;
  • git reflog –number –pretty=oneline:显示简化的信息历史信息; 如果要查看某文件的提交历史记录,直接在上面命令后面加上文件名即可。 注意:如果没有number则显示全部提交次数。

八.如何提交到远程分支

  • 首先确保本地仓库与远程之间是连同的。如果提交失败,则需要进行下面的命令进行连通:

    git remote add [shortname] [url]

  • 如果是第一次推送,则进行下面命令

    git push -u [remote] [branch] // -u 指默认主分支

    之后的提交,只需要下面的命令:

    git push -u [remote] [branch]

参考文献 [ ](GIT | GIT常见面试题_星空下的程序猿-CSDN博客_git面试题)

[ ]([git]merge和rebase的区别 - 削微寒 - 博客园 (cnblogs.com))

[](git log 查看提交记录 - lsgxeva - 博客园 (cnblogs.com))

[](Git恢复之前版本的两种方法reset、revert(图文详解)_游笑天涯-CSDN博客_git revert)