【前端高频面试题--git篇】

🚀 作者 :“码上有前”
🚀 文章简介 :前端高频面试题
🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬

前端高频面试题--git篇

  • 常用命令
  • git add 和 git stage 有什么区别
  • 怎么使用git连接到远程仓库github/gitlab/gitee等
  • 开发过程中使用git进行工作,需要哪些步骤,使用到了哪些命令?
  • git reset、git revert 和 git checkout 有什么区别
  • GitFlow 基本流程和你的理解
  • 解释下 PR 和 MR 的区别
  • git merge 和git rebase的区别?

常用命令

在这里插入图片描述
以下是一些常用的 Git 命令:

  1. 创建和克隆仓库:

    • git init: 在当前目录下创建一个新的 Git 仓库。
    • git clone <仓库地址>: 克隆一个远程仓库到本地。
  2. 基本操作:

    • git add <文件>: 将文件添加到暂存区。
    • git commit -m "<提交信息>": 将暂存区的更改提交到本地仓库。
    • git push <远程仓库> <分支>: 将本地分支的提交推送到远程仓库。
    • git pull <远程仓库> <分支>: 从远程仓库拉取最新的提交到本地分支。
    • git status: 查看当前仓库的状态。
    • git log: 查看提交历史记录。
  3. 分支操作:

    • git branch: 查看当前仓库的分支列表。
    • git branch <分支名>: 创建一个新的分支。
    • git checkout <分支名>: 切换到指定的分支。
    • git merge <分支名>: 将指定分支的更改合并到当前分支。
    • git branch -d <分支名>: 删除指定的分支。
  4. 远程仓库操作:

    • git remote: 查看当前仓库配置的远程仓库。
    • git remote -v: 查看当前仓库配置的远程仓库的详细信息。
    • git remote add <远程仓库名> <远程仓库地址>: 添加一个新的远程仓库。
    • git remote remove <远程仓库名>: 移除指定的远程仓库。
  5. 撤销和回滚:

    • `git reset <提交>: 将 HEAD 指针和当前分支的引用重置到指定提交。
    • git revert <提交>: 创建一个新的提交来撤销指定提交的更改。
    • git checkout -- <文件>: 恢复指定文件到最近的提交状态。

这只是一小部分 Git 命令的示例。Git 命令非常丰富,可以根据实际需求和工作流程选择适合的命令来完成任务。

git add 和 git stage 有什么区别

在 Git 中,git addgit stage 实际上是同一个命令的两种形式,它们用于将文件添加到暂存区(也称为索引或缓存区),以准备进行提交。

git add 是 Git 的原始命令,用于将工作目录中的文件添加到暂存区。例如,要将名为 file.txt 的文件添加到暂存区,可以运行以下命令:

git add file.txt

此命令将 file.txt 文件的当前状态添加到暂存区,以便在下一次提交时包含该文件的更改。

git stagegit add 的一个别名,它们的功能完全相同。git stage 是一些 Git 命令行工具和 Git 用户界面工具提供的更友好和直观的别名。这样的别名可以使命令更易于记忆和使用。

因此,无论是使用 git add 还是 git stage,都是将文件添加到暂存区的操作。它们可以用来跟踪文件的更改,并将这些更改准备好以进行下一次提交。

怎么使用git连接到远程仓库github/gitlab/gitee等

要将本地 Git 仓库连接到远程仓库(如 GitHub、GitLab 或 Gitee),可以按照以下步骤进行操作:

  1. 创建远程仓库:在相应的代码托管平台(如 GitHub、GitLab 或 Gitee)上创建一个新的空白仓库。获取远程仓库的 URL,这将用于将本地仓库与远程仓库进行关联。

  2. 在本地仓库中添加远程仓库:打开命令行终端或 Git 客户端,并导航到本地仓库的根目录。运行以下命令来添加远程仓库:

    git remote add origin <远程仓库的 URL>
    

    这里,origin 是远程仓库的别名,你可以自定义别名。<远程仓库的 URL> 是远程仓库的 URL 地址。

  3. 验证远程仓库连接:运行以下命令来验证远程仓库是否成功连接:

    git remote -v
    

    这将显示你的远程仓库的别名和 URL,以确保连接正确。

  4. 将本地更改推送到远程仓库:如果你想将本地仓库中的更改推送到远程仓库,可以使用以下命令:

    git push -u origin <分支名>
    

    这将把当前分支的更改推送到远程仓库,并将其与远程仓库的对应分支进行关联。 -u 参数在首次推送时建立了本地分支与远程分支的关联。之后,你可以简单地使用 git push 命令来推送更改。

以上是一般的连接到远程仓库的步骤。具体的命令和操作可能会因使用的代码托管平台和个人设置而有所不同。在使用之前,建议查阅相关平台的文档和指南,以了解特定平台的详细步骤和要求。

开发过程中使用git进行工作,需要哪些步骤,使用到了哪些命令?

在开发过程中使用 Git 进行工作,通常涉及以下几个步骤和常用命令:

  1. 克隆仓库:在开始工作之前,你可以使用 git clone 命令将远程仓库克隆到本地:

    git clone <远程仓库的 URL>
    

    这将在当前目录下创建一个与远程仓库相同的本地仓库副本。

  2. 创建和切换分支:对于新功能的开发或 bug 修复,你可以创建一个新的分支。使用 git branch 命令创建分支,然后使用 git checkout 命令切换到该分支:

    git branch <分支名>
    git checkout <分支名>
    

    或者使用 git checkout -b 命令同时创建并切换到新分支:

    git checkout -b <分支名>
    
  3. 开发和提交更改:在所选分支上进行代码修改和开发。使用 git add 命令将更改的文件添加到暂存区,然后使用 git commit 命令提交更改:

    git add <文件名>
    git commit -m "提交信息"
    

    这将把文件的更改从工作目录添加到暂存区,并创建一个新的提交记录。

  4. 推送更改:当你准备好将本地分支的更改推送到远程仓库时,可以使用 git push 命令:

    git push origin <分支名>
    

    这将把本地分支的更改推送到远程仓库的对应分支。

  5. 合并分支:在完成功能或修复 bug 后,你可能需要将所做的更改合并回主分支。可以使用 git merge 命令将一个分支的更改合并到当前分支:

    git merge <分支名>
    

    这将把指定分支的更改合并到当前分支。

  6. 解决冲突:如果在合并分支时遇到冲突,需要手动解决冲突。打开冲突文件,在文件中标记和编辑冲突的部分,然后使用 git add 命令将解决的文件标记为已解决,最后使用 git commit 命令进行提交。

这些是使用 Git 进行工作时的一些常见步骤和命令。除了上述命令外,还有其他许多命令可用于处理分支、查看提交历史、撤销更改等。详细的 Git 命令和操作可以在 Git 的官方文档或其他教程中找到。

git reset、git revert 和 git checkout 有什么区别

git resetgit revertgit checkout 是 Git 中用于处理提交和分支的三个不同命令,它们有以下区别:

  1. git reset: git reset 用于将当前分支的 HEAD 指针和分支引用重置到指定的提交,并可以选择性地更改暂存区和工作目录的状态。主要有三种模式:

    • git reset --soft:仅重置分支引用和 HEAD 指针,不修改暂存区和工作目录。这意味着当前更改仍然在暂存区中,并且可以重新提交。
    • git reset --mixed(默认模式):重置分支引用和 HEAD 指针,并重置暂存区以匹配指定提交。这将取消暂存区中的更改,但保留更改的文件内容,以便可以重新暂存或修改后重新提交。
    • git reset --hard:将分支引用、HEAD 指针和暂存区都重置到指定提交。这将完全丢弃暂存区和工作目录中的更改,慎用,可能会导致永久性数据丢失。
  2. git revert: git revert 用于创建一个新的提交来撤销指定提交的更改。它会在撤销提交时保留提交历史,因此适合在共享仓库中撤销公共历史的更改。git revert 将创建一个新的提交,该提交的更改是指定提交的相反操作。这意味着它不会直接修改原始提交,而是创建一个新的提交来撤销之前的更改。

  3. git checkout: git checkout 用于切换分支、恢复文件状态或创建新分支。它的功能有以下几个方面:

    • 切换分支:使用 git checkout <分支名> 可以切换到指定的分支。
    • 恢复文件状态:使用 git checkout -- <文件名> 可以撤销对指定文件的更改,将其恢复为最近的提交状态。
    • 创建新分支:使用 git checkout -b <新分支名> 可以创建并切换到一个新的分支。

总结一下,git reset 用于重置分支引用和 HEAD 指针,可以修改暂存区和工作目录状态;git revert 用于创建一个新的提交来撤销指定提交的更改,保留提交历史;git checkout 用于切换分支、恢复文件状态或创建新分支。

GitFlow 基本流程和你的理解

GitFlow 是一种流行的 Git 分支管理工作流,它定义了一套用于协作开发的分支模型和规范。下面是 GitFlow 的基本流程和我的理解:

  1. 主要分支:

    • master 分支:代表生产环境的稳定代码。只包含已经发布的正式版本的代码。
    • develop 分支:代表下一个发布版本的开发代码。新功能和 bug 修复通常从这个分支开始。
  2. 辅助分支:

    • 功能分支(Feature branches):用于开发新功能。从 develop 分支派生,完成后合并回 develop 分支。
    • 发布分支(Release branches):用于准备发布版本。从 develop 分支派生,包含最终要发布的代码和准备发布的工作(如版本号更新、构建等)。完成后合并回 develop 分支和 master 分支,并打上发布版本的标签。
    • 热修复分支(Hotfix branches):用于紧急修复生产环境中的 bug。从 master 分支派生,完成后合并回 develop 分支和 master 分支,并打上修复版本的标签。
  3. 工作流程:

    • 开发新功能:从 develop 分支创建一个新的功能分支,进行功能开发和测试。完成后将功能分支合并回 develop 分支。
    • 准备发布版本:从 develop 分支创建一个新的发布分支,进行版本准备和测试。包括修复 bug、更新版本号等。完成后将发布分支合并回 develop 分支和 master 分支,并打上发布版本的标签。
    • 修复生产环境中的 bug:从 master 分支创建一个新的热修复分支,进行紧急 bug 修复。完成后将热修复分支合并回 develop 分支和 master 分支,并打上修复版本的标签。

GitFlow 的优势在于将开发、发布和修复过程分离,并提供了清晰的分支结构和规范,使团队能够进行并行开发和持续交付。它也有助于保持不同环境之间的代码同步,并为版本控制提供可追溯性。

然而,GitFlow 也可能导致分支较多和复杂的合并操作。在团队规模较小或项目较简单的情况下,可以根据实际需求选择更简化的分支管理方式。

解释下 PR 和 MR 的区别

PR(Pull Request)和 MR(Merge Request)是代码托管平台(如GitHub和GitLab)上用于代码审查和合并的术语,它们有以下区别:

  1. PR(Pull Request):PR 是 GitHub 上的术语,表示从一个分支(通常是开发分支)请求将代码合并到目标分支(通常是主分支)中。PR 允许团队成员对代码进行讨论、审查和提供修改建议。创建 PR 后,其他开发者可以查看代码更改、提交评论、提出问题或请求更改,这有助于团队合作和代码质量的提高。

  2. MR(Merge Request):MR 是 GitLab 上的术语,与 PR 的概念相似。它也是请求将代码从一个分支合并到另一个分支中,通常是从开发分支合并到主分支。MR 具有类似的功能,包括团队成员的审查、讨论和交流。使用 MR,团队可以共同审查和验证代码,确保它符合质量标准,并且可以顺利合并到目标分支中。

虽然 PR 和 MR 在术语上有所不同,但它们的目标和功能基本相同:促进团队成员之间的代码审查和合作。无论是在 GitHub 还是 GitLab,PR 和 MR 都提供了一种结构化和协作的方式,使团队能够审查、讨论和决定是否接受某个代码更改。

git merge 和git rebase的区别?

git mergegit rebase 是用于将一个分支的更改合并到另一个分支的 Git 命令,它们有以下区别:

  1. 历史记录的整洁性:

    • git merge:将源分支的更改合并到目标分支,并创建一个新的合并提交。这会在目标分支的历史记录中保留源分支的完整提交历史,形成一个合并的提交记录。
    • git rebase:将源分支的更改应用到目标分支上,并将目标分支的提交应用在源分支的顶部。这会使提交历史线性化,看起来像是源分支的更改直接在目标分支上进行的。
  2. 分支图的清晰性:

    • git merge:在分支图中创建一个新的合并提交节点,显示源分支和目标分支的合并关系。
    • git rebase:将源分支的提交复制到目标分支的顶部,使分支图保持简单的线性结构,不会有合并提交节点。
  3. 修改历史记录:

    • git merge:不会修改源分支和目标分支的提交历史记录。
    • git rebase:将源分支的提交应用到目标分支上,可以修改源分支的提交历史记录。
  4. 协作和共享:

    • git merge:适用于多人协作和共享代码库,因为合并提交保留了每个分支的完整历史记录。
    • git rebase:更适合个人工作流,可以使提交历史保持线性和整洁。

综上所述,git merge 用于将分支的更改合并到目标分支并创建合并提交,保留完整的提交历史记录。而 git rebase 则是将分支的更改应用到目标分支上,并将目标分支的提交应用在源分支的顶部,使提交历史线性化和整洁。选择使用哪个命令取决于项目的需求、团队的合作方式以及个人偏好。
都看到这啦,嘿嘿,点个赞吧🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/470220.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】指针练习篇(上),深入理解指针---指针和数组练习题和sizeof,strlen的对比【图文讲解,详细解答】

欢迎来CILMY23的博客喔&#xff0c;本期系列为【C语言】指针练习篇&#xff08;上&#xff09;&#xff0c;深入理解指针---指针数组练习题和sizeof&#xff0c;strlen的对比【图文讲解,详细解答】&#xff0c;图文讲解指针和数组练习题&#xff0c;带大家更深刻理解指针的应用…

使用第三方幻兽帕鲁应用模板部署游戏后,是否需要更新?

需要更新&#xff0c;因为幻兽帕鲁官方客户端更新&#xff0c;所以服务器也需要同步更新&#xff0c;才能继续游玩。版本不一致的话&#xff0c;是不能进入游戏的。 有两种更新方法&#xff1a; 如果你使用幻兽帕鲁应用模板部署游戏&#xff0c;那么可以选择使用游戏配置面板一…

抽象的前端

问题背景&#xff1a;vue3&#xff0c;axios 直接导致问题&#xff1a;路由渲染失败 问题报错&#xff1a;Uncaught SyntaxError: The requested module /node_modules/.vite/deps/axios.js?v7bee3286 does not provide an export named post (at LoginIn.vue:16:9) 引入组…

redis之缓存预热,缓存雪崩,缓存击穿,缓存穿透

目录 redis缓存预热 redis缓存雪崩 redis缓存击穿 redis缓存穿透 redis缓存预热 Redis 缓存预热是指在系统启动或者缓存失效后&#xff0c;提前将部分数据加载到 Redis 缓存中&#xff0c;以便用户在访问时能够快速获取数据&#xff0c;提高系统性能和响应速度。 全量加载&a…

HDR 摄影

HDR 摄影&#xff0c;即高动态范围 High Dynamic Range摄影&#xff0c;旨在通过合并不同曝光值的照片来捕捉场景中从最亮到最暗部分的全部细节。 这种技术对于在一个图像中展现广泛的亮度范围特别有用&#xff0c;尤其是在自然光线条件下&#xff0c;如直射日光或阴影区域&…

【Spring MVC篇】返回响应

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、返回静态页面…

嵌入式CAN通信协议原理(下)

本篇文章结合实际CAN控制器继续介绍协议相关的内容&#xff0c;还有示例讲解。 好了&#xff0c;继续吧&#xff01; 二. STM32 CAN 控制器介绍 STM32 的芯片中具有 bxCAN 控制器 (Basic Extended CAN)&#xff0c;它支持 CAN 协议 2.0A 和 2.0B 标准。 该 CAN 控制器支持最…

QT 工具栏 状态栏 停靠部件 核心部件

添加/删除工具栏 删除工具栏方法和删除菜单栏方法一样&#xff0c;不过工具栏可以有多个&#xff0c;所以每次右键MainWindow对象&#xff0c;都可以看到添加工具栏的选项。 工具栏添加动作 新添加的QAction对象会在动作编辑器里找到&#xff08;Action Editor&#xff09;&a…

FastAI 之书(面向程序员的 FastAI)(一)

原文&#xff1a;www.bookstack.cn/read/th-fastai-book 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 序言 原文&#xff1a;www.bookstack.cn/read/th-fastai-book/README.md 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 在很短的时间内&#xff0c;深度…

STM32 I2C

目录 I2C通信 软件I2C读写MPU6050 I2C通信外设 硬件I2C读写MPU6050 I2C通信 R/W&#xff1a;0写1读 十轴&#xff1a;3轴加速度&#xff0c;3轴角速度&#xff0c;3轴磁场强度和一个气压强度 软件I2C读写MPU6050 MyI2C.c #include "stm32f10x.h" …

Vue2学习第一天

Vue2 学习第一天 1. 什么是 vue? Vue 是一套用于构建用户界面的渐进式框架。 2. vue 历史 vue 是在 2013 年创建的&#xff0c;vue3 是 2020 出现的&#xff0c;现在主要是用 vue2&#xff0c;创新公司用的是 vue3 vue 的作者是尤雨溪&#xff0c;vue 的搜索热度比 react…

基于HTML5实现动态烟花秀效果(含音效和文字)实战

目录 前言 一、烟花秀效果功能分解 1、功能分解 2、界面分解 二、HTML功能实现 1、html界面设计 2、背景音乐和燃放触发 3、燃放控制 4、对联展示 5、脚本引用即文本展示 三、脚本调用及实现 1、烟花燃放 2、燃放响应 3、烟花canvas创建 4、燃放声音控制 5、实际…