Git面经

news/2024/10/18 2:31:35/

Git八股文

第一章 git基础

1.1 什么是git

git是一款免费的开源的分布式版本控制系统

1.2 为什么要使用git

为了保留之前的所有版本,方便回滚或修改

1.3 集中化版本控制系统和分布式版本控制系统的区别

  • 集中化版本控制系统如svn,客户端连接到中央服务器取出最新的文件或者提交更新。所以有个很明显的缺点就是如果中央服务器发生故障,故障期间谁都无法提交更新
  • 分布式版本控制系统如git,客户端不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,这样即使中央仓库发生故障,我们可以先提交到本地仓库,等故障恢复后再提交到中央仓库

第二章 git常用命令

2.1 常用命令

  • 初始化为可以管理的仓库
git init.
  • 将工作区文件添加到暂存区(只需要添加修改过的文件)
git add 文件名
  • 将暂存区文件提交到本地仓库
git commit -m "备注"

在此之前,一般还要设置作者邮箱和姓名,例如

git config --global user.email "邮箱名"
git config --global user.name "姓名"
  • 查看工作区状态(用于显示暂存区和本地仓库的状态)
git status
  • 查看当前分区的提交log
git log

2.2 分支命令

  • 查看当前分支
git branch
  • 创建分支(但不会切换到新分支)
git branch 分支名
  • 切换分支(只能切换已有的分支)
git checkout 分支名
  • 创建并切换分支
git checkout -b 分支名
  • 删除分支
git branch -d 分支名
  • 合并分支(当前工作分支的内容会由于merge操作产生更新,但是目标分支(要合并的分支名)则完全不受影响),merge操作可能会出现冲突
git merge 要合并的分支名
git rebase 要合并的分支名

2.3 远程仓库命令

  • 远程仓库克隆到本地(在没有本地仓库的时候,从远程仓库克隆到本地,是一个从无到有的过程)
git clone 地址
  • 下拉代码(在本地有本地仓库的时候,从远程仓库获得最新的commit数据,并merge到工作区,一般在push前会pull)
// 远程仓库名称默认为origin,分支名称默认为与当前本地分支同名。
git pull [remote name] [branch name]
// 等价于
git fetch + git merge
  • 推送代码(将本地仓库中的文件推送到远程仓库)
git push [remote name] [branch name]

2.4 关系图

在这里插入图片描述

第三章 其他面试题

3.1 git pull和git fetch的区别

  • git fetch只是将远程仓库的最新版本下载到本地仓库,但是不会自动merge,工作区的文件没有更新
  • git pull会从远程仓库获取到的最新版本并merge到工作区
  • git pull = git fetch + git merge

3.2 git clone和git pull的区别

  • git clone用在没有本地仓库的时候,从远程仓库克隆到本地,是一个从无到有的过程
  • git pull可以只更新某一分支,用在有本地仓库的时候,从远程仓库获得分支最新的commit数据,并merge到工作区,一般在push前会pull。

3.3 git merge和git rebase的区别

参考:https://blog.csdn.net/qq_41035588/article/details/121354279

  • git merge 操作合并分支会让两个分支的共同提交点之后每一次提交都按照提交时间排序,并且会将两个分支的最新一次commit点合并成一个新的commit,最终的分支树呈现非整条直线的形式
  • git rebase操作实际上是将当前执行rebase分支的所有基于原分支提交点之后的commit打散成一个一个的patch,并重新生成一个新的commit hash值,再次基于原分支目前最新的commit点上进行提交,最终的分支树呈现一条直线的形式。

http://www.ppmy.cn/news/1222762.html

相关文章

计算机视觉:使用opencv实现车牌识别

1 引言 汽车车牌识别(License Plate Recognition)是一个日常生活中的普遍应用,特别是在智能交通系统中,汽车牌照识别发挥了巨大的作用。汽车牌照的自动识别技术是把处理图像的方法与计算机的软件技术相连接在一起,以准…

什么是圆锥的准线?

定曲线C叫做锥面的准线,构成曲面的每一条直线叫做母线。

uniapp Android如何授权打开系统蓝牙Bluetooth?

uniapp Android如何授权打开系统蓝牙? 使用uniapp开发蓝牙项目过程中,涉及到检测手机系统蓝牙是否打开功能,这里介绍Android,iOS暂时没有找到优方法。朋友们如果有好的方案,欢迎评论分享~ 文章目录 uniapp Android如何…

mysql 怎么做定时备份 / mysql 备份 / sql文件导出

在MySQL数据库中,你可以使用不同的方法来定时备份数据库。以下是其中的一种方法,使用Linux系统中的cron任务和mysqldump命令来创建定时备份: 创建备份脚本: 首先,创建一个脚本文件,比如backup_script.sh&am…

clion qt导出dll给别的项目用

clion 导出dll给别的项目用,并且引入matplotcpp dll生成一个mydll的dll文件 1.先做一个简单dll的测试下 cmake_minimum_required(VERSION 3.26) project(untitled) set(CMAKE_CXX_STANDARD 11) add_library(untitled SHARED main.cpp)main.h void hello();main.cp…

JQuery ajax 提交数据提示:Uncaught TypeError:Illegal invocation

JQuery ajax 提交数据提示:Uncaught TypeError:Illegal invocation 1 问题描述 用jQuery Ajax向DRF接口提交数据的时候,console提示:Uncaught TypeError:Illegal invocation(未捕获的异常:非法调用)。 这个问题可能有两种原因导…

hologres 索引与查询优化

hologres 优化部分 1 hologres 建表优化1.1 建表中的配置优化1.1 字典索引 dictionary_encoding_columns1.2 位图索引 bitmap_columns1.2.2 Bitmap和Clustering Key的区别 1.3 聚簇索引Clustering Key 1 hologres 建表优化 1.1 建表中的配置优化 根据 holo的 存储引擎部分的知…

常见的SQLite语句

SQLite是一种嵌入式关系型数据库管理系统,它使用SQL(Structured Query Language)语言进行数据管理和操作。下面是一些常见的SQLite语句以及它们的详细介绍和示例说明。 1、CREATE TABLE:用于创建表格。它指定了表的名称和列的定义…