git面试题

文章目录

  • 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.mzph.cn/news/25584.shtml

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

相关文章

Python IDE

Python IDE 本文为大家推荐几款款不错的 Python IDE(集成开发环境),比较推荐 PyCharm,当然你可以根据自己的喜好来选择适合自己的 Python IDE。 PyCharm PyCharm 是由 JetBrains 打造的一款 Python IDE。 PyCharm 具备一般 Pyt…

机器学习——SMO算法推导与实践

一、 硬间隔-SMO算法推导 明天再说,啊。。。。感觉天空明朗了很多,即使现在已经很晚了 还是要打开柯南,看看电视,等待天气预报所说的台风天吧! 一时之间,忽然失去了用markdown语法写下推导过程的勇气。。。…

ip网络广播系统网络音频解码终端公共广播SV-7101

SV-7101V网络音频终端产品简介 网络广播终端SV-7101V,接收网络音频流,实时解码播放。本设备只有网络广播功能,是一款简单的网络广播终端。提供一路线路输出接功放或有源音箱。 产品特点 ■ 提供固件网络远程升级■ 标准RJ45网络接口&…

推荐几款主流的Css Reset

CSS Reset CSS Reset(CSS重置)是一种技术,用于消除不同浏览器之间默认样式的差异,以确保网页在各个浏览器中的显示一致性。由于不同浏览器对元素的默认样式有所不同,使用CSS Reset可以将这些默认样式归零或统一&#x…

基于粒子群改进BP神经网络的血压评估系统,血压预警系统,pso-bp神经网络

目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群算法改进优化BP神经网络的血压评估系统 matlab代码 代写下载链接:https://download.csdn.net/downlo…

echarts 柱状图 实例

实例效果: 代码: draw(data1, data2,data3) {var option {// backgroundColor: rgb(10,36,68),tooltip: {trigger: axis,axisPointer: {type: shadow,},formatter: function (params: any, ticket: any, callback: any) {const item params[0];var str…

VB+SQL采购管理系统设计与实现

摘 要 本系统是基于为轴承企业采购部门开发的系统。课题主要采用自上而下的结构化程序设计方法与面向对象方法相结合的方法,致力于达到标准的现代化物流管理要求。帮助轴承企业采购部门全面实现电子化、自动化、标准化的现代化先进管理模式。 该系统使用Visualbasic.net编程…

Java中的JUnit单元测试方法的使用

Java中的JUnit单元测试方法 使用步骤如下: 选中当前工程 - 右键选择:build path - add libraries - JUnit 4 - 下一步创建Java类,进行单元测试。 此时的Java类要求:① 此类是public的 ②此类提供公共的无参的构造器此类中声明单…

【excel常用文本函数大全上】

目录索引 LEFT:公式:举例: RIGHT:公式:举例: MID:公式:举例: FIND:公式:举例: LEN:公式:举例: LEN…

解决mvn clean install遇到testng单元测试失败时打包也失败的问题

解决mvn clean install遇到testng单元测试失败时打包也失败的问题 看这个之前请先看这个 Jenkins执行Testng 比如我现在就有一个单元测试失败的项目 执行mvn clean install的时候就会报错 下面是我现在的pom.xml 但我们不希望这样&#xff0c;怎么办 <plugin><gr…

vuejs源码分析之全局API(vm.$off)

vue在初始化的时候会给vue对象本身挂载一些全局的api。今天我们一个一个来看这些api。 vm.$off方法 这个方法是用来移除自定义事件监听器。 他的用法 vm.$off(event, calback)第一个参数event取值可以是string字符串&#xff0c;也可以是Array<string>也就是说既可以删…

安卓:UDP通信

目录 一、介绍 网络通信的三要素&#xff1a; &#xff08;1&#xff09;、IP地址&#xff1a; IPv4: IPv6: IP地址形式&#xff1a; IP常用命令&#xff1a; IP地址操作类: &#xff08;2&#xff09;、端口&#xff1a; &#xff08;3&#xff09;、协议: UDP协…

RabbitMQ(二)

二、高级特性、应用问题以及集群搭建 高级特性 1.消息的可靠性投递 在使用RabbitMQ的时候&#xff0c;作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。 rabbitMQ整个消息投递的路径为&#xff1a; produ…

删除链表的倒数第 N 个结点 LeetCode热题100

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 思路 双指针找到倒数第n个节点&#xff0c;再把该节点删除。 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* L…

基于PHP+vue的网上订餐系统的设计与开发_769b9

快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;通过线上管理订餐也就相继涌现。与此同时&#xff0c;人们开始接受方便的生活方式…

vue3使用钩子代替mixins

自用笔记 在vue2中&#xff0c;mixins可以用来混入一些复用的函数&#xff0c;变量等等&#xff0c;在vue3版本中&#xff0c;特别是组合式的写法之中可以用钩子的方式来代替这一功能。 写一个复用的控制盒子展示或者隐藏的钩子useOpen import {ref} from "vue" e…

springboot全局统一返回处理

文章目录 前言一、统一的返回格式二、全局异常处理三、全局返回处理(装逼用的)总结 前言 项目中一般都会有规定好的接口返回格式,无论成功与失败,一般格式都是不变的,这样是为了方便前后端统一处理,今天就来说下前后端统一处理的较为优雅的方式; 一、统一的返回格式 一般而言…

汽车维修保养记录查询API:实现车辆健康状况一手掌握

在当今的数字化世界中&#xff0c;汽车维修保养记录的查询和管理变得前所未有地简单和便捷。通过API&#xff0c;我们可以轻松地获取车辆的维修和保养记录&#xff0c;从而实现对手中车辆健康状况的实时掌握。 API&#xff08;应用程序接口&#xff09;是进行数据交换和通信的标…

二维vector,形如 vector<vector<int>>,类似于二维数组

【二维vector知识点】 二维vector&#xff0c;形如 vector<vector<int>>&#xff0c;类似于二维数组。 利用二维vector实现二维数组的示例代码如下。【算法代码】 #include <bits/stdc.h> using namespace std;int main() {vector<vector<int>>…

【LeetCode 75】第二十一题(1207)独一无二的出现次数

目录 题目: 示例: 分析: 代码运行结果: 题目: 示例: 分析: 用两个unordered_map来分别存放每个数字的出现次数和出现的次数这个数,有点绕,比如说有给的数组有两个1,那么第一个map存放的是(1,2),表示1这个数子出现了两次,而第二个map存放的是(2,true),表示有出现次数为2的数…