git面试题

news2024/10/6 5:55:37

文章目录

  • git经常用哪些指令
  • git出现代码冲突怎么解决
  • 你们团队是怎么管理git分支的
  • 如何实现Git的免密操作

git经常用哪些指令

  • 产生代码库

    • 新建一个git代码库

      • git init
        
    • 下载远程项目和它的整个代码历史

      • git clone 远程仓库地址
        
  • 配置

    • 显示配置

      • git config --list [--global]
        
    • 编辑配置

      • git config -e [--global]
        
    • 设置用户信息

      • git config [--global] user.name "名"
        git config [--global] user.email "邮箱地址"
        
  • 暂存区文件操作

    • 增加文件到暂存区

      • # 1.添加当前目录的所有文件到暂存区
        git add .
        # 2.添加指定目录到暂存区,包括子目录
        git add [dir]
        # 3.添加指定文件到暂存区
        git add [file1] [file2] ...
        
    • 在暂存区中删除文件

      • # 删除工作区文件,并且将这次删除放入暂存区
        git rm [file1] [file2] ...
        # 停止追踪指定文件,但该文件会保留在工作区
        git rm --cached [file]
        
    • 重命名暂存区文件

      • # 改名文件,并且将这个改名放入暂存区
        git mv [file-original] [file-renamed]
        
  • 代码提交

    • # 提交暂存区到仓库区
      git commit -m [message]
      
  • 分支操作

    • # 列出所有本地分支
      git branch
      
      # 列出所有远程分支
      git branch -r
      
      # 列出所有本地分支和远程分支
      git branch -a
      
      # 新建一个分支,但依然停留在当前分支
      git branch [branch-name]
      
      # 新建一个分支,并切换到该分支
      git checkout -b [branch]
      
      # 新建一个分支,指向指定commit
      git branch [branch] [commit]
      
      # 新建一个分支,与指定的远程分支建立追踪关系
      git branch --track [branch] [remote-branch]
      
      # 切换到指定分支,并更新工作区
      git checkout [branch-name]
      
      # 切换到上一个分支
      git checkout -
      
      # 建立追踪关系,在现有分支与指定的远程分支之间
      git branch --set-upstream [branch] [remote-branch]
      
      # 合并指定分支到当前分支
      git merge [branch]
      
      # 选择一个commit,合并进当前分支
      git cherry-pick [commit]
      
      # 删除分支
      git branch -d [branch-name]
      
      # 删除远程分支
      git push origin --delete [branch-name]
      git branch -dr [remote/branch]
      
  • 信息查看

    • # 显示有变更的文件
      git status
      
      # 显示当前分支的版本历史
      git log
      
      # 显示commit历史,以及每次commit发生变更的文件
      git log --stat
      
      # 搜索提交历史,根据关键词
      git log -S [keyword]
      
      # 显示某个commit之后的所有变动,每个commit占据一行
      git log [tag] HEAD --pretty=format:%s
      
      # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
      git log [tag] HEAD --grep feature
      
      # 显示过去5次提交
      git log -5 --pretty --oneline
      
  • 同步操作

    • # 增加一个新的远程仓库,并命名
      git remote add [shortname] [url]
      
      # 取回远程仓库的变化,并与本地分支合并
      git pull [remote] [branch]
      
      # 上传本地指定分支到远程仓库
      git push [remote] [branch]
      
      # 强行推送当前分支到远程仓库,即使有冲突
      git push [remote] --force
      
      # 推送所有分支到远程仓库
      git push [remote] --all
      
  • 撤销操作

    • # 恢复暂存区的指定文件到工作区
      git checkout [file]
      
      # 恢复某个commit的指定文件到暂存区和工作区
      git checkout [commit] [file]
      
      # 恢复暂存区的所有文件到工作区
      git checkout .
      
      # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
      git reset [file]
      
      # 重置暂存区与工作区,与上一次commit保持一致
      git reset --hard
      
      # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
      git reset [commit]
      
      # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
      git reset --hard [commit]
      
      # 重置当前HEAD为指定commit,但保持暂存区和工作区不变
      git reset --keep [commit]
      
      # 新建一个commit,用来撤销指定commit
      # 后者的所有变化都将被前者抵消,并且应用到当前分支
      git revert [commit]
      

git出现代码冲突怎么解决

冲突合并一般是因为自己的本地做的提交和服务器上的提交有差异,并且这些差异中的文件改动,Git不能自动合并,那么就需要用户手动进行合并

如我这边执行git pull origin master

如果Git能够自动合并,那么过程看起来是这样的:

拉取的时候,Git自动合并,并产生了一次提交。

如果Git不能够自动合并,那么会提示:

这个时候我们就可以知道README.MD有冲突,需要我们手动解决,修改README.MD解决冲突:

可以看出来,在1+1=几的这行代码上产生了冲突,解决冲突的目标是保留期望存在的代码,这里保留1+1=2,然后保存退出。

退出之后,确保所有的冲突都得以解决,然后就可以使用:

git add .
git commit -m "fixed conflicts"
git push origin master`

即可完成一次冲突的合并。

整个过程看起来是这样的:

你们团队是怎么管理git分支的

关于Git分支管理,每个团队在不同阶段都有自己的管理策略。我们团队以前采用的是版本分支管理策略,也就是每次上线新版本都会创建一个新的版本分支,而新的需求开发也从当前最新的版本分支迁出一个新的需求分支开发,线上bug则在版本分支上修改然后发布。

如何实现Git的免密操作

现在的远程仓库都提供了基于SSH协议的Git服务,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。

① 产生公私钥对

ssh-keygen -t rsa -C cherish@cherish.pw

产生完毕后,公私玥对位于c/Users/用户名/.ssh/

  • id_rsa:私钥(私有的钥匙,不能公开)
  • id_rsa.pub:公钥(可以公开的钥匙)

② 将公钥上传至远程仓库个人中心的设置里

以gitee为例,添加公钥请访问:https://gitee.com/profile/sshkeys

注:如果想用现在的免密登录,请使用ssh协议去关联本地与线上仓库。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫 从小白到高手 各种最新案例! request scrapy

Python爬虫 从小白到高手 各种最新案例! Urllib Xpath JsonPath BeautifulSoup requests 1.基本使用 1.官方文档: http://cn.python‐requests.org/zh_CN/latest/ 快速上手 http://cn.python‐requests.org/zh_CN/latest/user/quickstart.html 2.安装 pi…

数字运营、协同高效,为园区高质量发展插上“数字化”翅膀

园区,是产业集群的枢纽,是城市发展的基本要素。近年来,以大数据、人工智能、云计算等为代表的数字技术与城市的千行百业融合“发酵”,正在加速城市主体的智能升级。智慧园区作为数字化转型升级的一个缩影,上承智慧城市…

Rust dyn - 动态分发 trait 对象

dyn - 动态分发 trait 对象 dyn是关键字,用于指示一个类型是动态分发(dynamic dispatch),也就是说,它是通过trait object实现的。这意味着这个类型在编译期间不确定,只有在运行时才能确定。 practice tr…

阿里云ECS部署Mysql数据库

说明 首先需要到阿里云官方购买阿里云产品 ,如果有机会可以免费试用那会更好,跳过购买云服务步骤下面直接演示。 一、阿里云官网示意图 1.百度搜索 阿里云官方 2.点击控制台 3.展开更多 4. 选择云服务器ECS 5. 点击实例 可以看到服务器状态&#xff…

利用 USB 设备重定向实现无缝远程办公

随着当代工作环境的不断发展,对有效的、无缝的远程办公解决方案的需求日益增长。无论是创意人员、高级用户,还是游戏爱好者,能够随时随地工作或玩游戏都是一项显著优势。 但通常,这不仅需要能够远程访问工作站。创意人员和高级用…

Mybatis-Flex 是一个优雅的 Mybatis 增强框架

Mybatis-Flex 是一个优雅的 Mybatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper^亮点 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。 总而…

初识mysql数据库之MVCC机制与视图

目录 一、数据库的三种并发场景 二、 MVCC 1. 建立共识 2. MVCC的作用 3. MVCC的三个前置知识 3.1 3个记录隐藏列字段 3.2 undo日志(undo log) 4. 模拟MVCC 4.1 图示模拟状况 4.2 不同操作的历史版本链形成 5. 当前读与快照读 6. 为什么要有…

QT实现中英文键盘

使用Qt中实现中英文键盘,支持各种linux嵌入式设备。 实现思路:需要一个中文字体库,将字体库加载到一个Hash容器,字母和拼音作为key值,对应的中文作为value值。 核心代码: #include "UKeyBoard.h"…

出海新篇章:品牌规划方法与海外市场拓展

品牌出海规划是确保企业在国际市场上获得成功的关键步骤,它涉及到对目标市场的深入研究和了解,同时需要明确的策略和目标。本文Nox聚星将和大家探讨品牌出海规划的关键要素,为品牌出海提供一些建议和指导。 一、市场调研与定位 在品牌出海之…

C++基础篇 第七天 异常、智能指针、nullptr,auto

目录 异常 异常概念: C和C中异常的区别 异常处理 1. throw抛出异常 2. try...catch 进行异常处理 3.try...catch抛出自建类的异常 4.自建类的异常延伸 捕获的扩展 提高异常捕获的概率 智能指针 auto_ptr(已废弃,只做了解&#xf…

【工具使用】git基础操作1

目录 一.拉取git代码1.首次拉取命令2.使用图形化拉取代码3.Idea 开发工具拉取代码 二.查看当前状态1.查看在你上次提交之后是否有对文件进行再次修改 三.创建分支3.1.创建分支3.2.创建分支并切换至分支3.3.提交分支至远程仓 远程没有自动创建 四.查看分支4.1.查看本地分支 当前…

智慧园区项目:数字化引领城市转型

随着科技的迅猛发展,智慧园区项目正日益成为城市数字化转型的关键组成部分。这些智慧园区项目借助先进的技术,将传统的园区升级为智能化、数字化的生态系统,为城市的可持续发展和人们的生活质量带来了巨大的变革。 在智慧园区项目中&#xff…

别不信,这才是交换机组网的正确打开方式

下午好,我的网工朋友。 俱乐部更新交换机和路由器相关技术点一直是更新得非常勤快,懂的朋友都懂,毕竟知识点太多。这不,前两天刚说一篇。 之前我们聊过交换机的配置命令,选型关键,配置步骤,部…

C语言数组笔试题(详解)

目录 插入知识: 一.指向函数指针数组的指针 二.回调函数 什么是回调函数? 三.数组笔试题 个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生🐻‍❄个人主页:GOTXX &#x1f4…

概率论与数理统计复习总结2

概率论与数理统计复习总结,仅供笔者复习使用,参考教材: 《概率论与数理统计》/ 荣腾中主编. — 第 2 版. 高等教育出版社《2024高途考研数学——概率基础精讲》王喆 概率论与数理统计实际上是两个互补的分支:概率论 在 已知随机…

亚像素到底能不能提高精度

01.什么是亚像素 亚像素(Sub Pixel),是面阵摄像机的成像面以像素为最小单位。 像素中心之间的距离有几个至十几个微米不等。为了最大限度利用图像信息来提高分辨率,有人提出了亚像素概念。意思是说,在两个物理像素之间还有像素,称之为亚像素,它完全是通过计算方法得出来的。…

three.js实现vr全景图(vue)

方法: 可以利用Threejs中的立方体或者球体实现全景图功能,把立方体或球体当成天空盒子,将无缝衔接的图片贴上,看起来就像在一个场景中,相机一般放置在中央。 three.js中文网 1、立方体实现 立方体6个面要贴上6个方向的图片&…

在 React 中渲染大型数据集的 3 种方法

随着 Web 应用程序变得越来越复杂,我们需要找到有效的方法来优化性能和渲染大型数据集。在 React 应用程序中处理大型数据集时,一次呈现所有数据可能会导致性能不佳和加载时间变慢。 虚拟化是一种通过一次仅呈现数据集的一部分来解决此问题的技术&#…

AIGC产业公司简况列表

最近梳理了国内外AIGC产业链相关的公司列表,如下图所示: 出自:AIGC产业公司简况列表 | 秋天的童话博客

ElementUI el-table 鼠标滚动失灵的问题及解决办法

Bug:ElementUI el-table 鼠标滚轮下滑动失灵的情况 我测出来的这个问题条件很苛刻,需要达到以下几个条件才会触发: 1.element plus(其他版本没试) 2.el-table-column组件有fixed属性时 3.template标签中有el-butto…