Git面试题整理(基本点)

1.简述Git

Git是一种分布式版本控制系统,它允许多个开发者在任何时间,从任何地点对代码进行编辑和分享,而不会互相干扰。Git通过跟踪和管理代码的历史版本,帮助团队协作开发复杂的项目。
        与集中式版本控制系统不同,Git的分布式特性意味着每个开发者的工作站都有一个完整的代码库和历史记录,这增加了数据的安全性和灵活性。如果中央服务器发生故障,任何克隆(clone)了仓库的开发者都可以用自己的副本来恢复数据。
        例如,当你在开发一个新功能时,你可以在本地创建一个分支(branch),在这个分支上进行所有相关的开发工作。在开发过程中,你可以频繁地提交(commit)更改,这些提交都会被记录在分支的历史中。一旦开发完成,就可以将这个分支合并(merge)回主分支(例如,master或main),这样其他人就可以看到并使用你的新功能了。
        Git也支持撤销更改、比较不同版本之间的差异、查看历史提交记录等功能,这使得开发过程更加透明和可控。

2.简述Git仓库

Git仓库(repository)是一个存储和维护项目代码历史记录的地方。它包含了项目的所有版本历史,以及每次提交的详细信息,如作者、日期和变更内容。Git仓库使得跟踪和回溯到任何历史版本成为可能,同时也支持多个开发者之间的协作。
在Git中,仓库分为两种类型:本地仓库和远程仓库。
        ·本地仓库位于开发者的个人计算机上,包含所有的历史记录和版本信息,允许开发者提交更改、创建分支、合并分支等操作,即使在离线状态下也可以工作。
        ·远程仓库通常位于网络服务器上,如GitHub、GitLab或Bitbucket。它允许团队成员共享代
码、提交推送(push)更改并拉取(pull)最新的更改到本地仓库

例如,当你开始一个新项目时,你可以在本地初始化一个Git仓库(使用 git init命令)。随着项目的进展,你可以提交(git commit)更改到本地仓库。当你想要与其他人分享你的工作时,可以将你的本地仓库推送到一个远程仓库(使用git push命令),其他人可以从这个远程仓库拉取最新的更改到他们的本地仓库(使用 git pull命令) 。
Git仓库的这种架构不仅提高了项目的安全性和灵活性,也极大地促进了团队之间的协作和代码共享。

3.简述Git常用命令

git init -初始化一个新的Git仓库。在你的项目目录中运行此命令,它会创建一个名为.git 的子目录,这个目录包含了所有的Git仓库数据。
例如,如果你有一个名为 my_project 的新项目,你可以进入这个项目的目录并运行 git init,这样 my_project 就成了一个Git仓库。

git clone [url]-克隆(即复制)一个现有的Git仓库。这个命令会将远程仓库的所有数据下载到本地,创建一个与原仓库一模一样的副本。
例如,如果你想克隆一个远程仓库到本地,可以使用 git clone https://github.com/example/my_project.git 

git add [file]-将文件添加到暂 区(staging area)。在进行提交之前,你需要先用git add 命令添加所有新修改的文件到暂存区。
例如,如果你创建了一个名为 README.md 的文件并希望将其加入到版本控制中,可以使用 git addREADME.md 

git add ·或 git add -A -将当前目录下的所有更改(包括新文件和修改过的文件)添加到暂存区。这是一个快速将所有更改准备好进行下一次提交的方式。

git commit -m"commit message"-将暂存区的更改提交到仓库的历史记录中。每次提交都需要提供一个提交信息(commit message),这个信息描述了更改的内容。
例如,如果你完成了一个功能或修复了一个bug:可以使用 git commit -m "Add new feature"或git commit -m "Fix bug”来记录这次更改。

 4.简述Git获取配置的命令

git config --list -显示当前的Git配置。这个命令会列出所有的配置设置,包括全局配置和仓库级别(如果在仓库目录内运行)的配置。

git config --global user.name "Your Name""设置全局用户名。这是你在提交时Git用来记录是谁做出了更改的信息。例如, git config-global user.name "sashui"会将你的用户名设置为"sashui"

git config--globaluser.email "your_email@example.com"-设置全局电子邮件地址。这是与你的用户名一起记录在每次提交中的信息,用于标识提交者。例如,git config -global user.email "sashui.doedexample.com".

git config --global core.editor "editor'设置Git的默认文本编辑器。如果你有特定的文本编辑器偏好,比如想使用Vim或Emacs而不是默认的编辑器,你可以通过这个命令进行设置。例如,git config --global core.editor "vim" 。

git config --get user.name 和 git config -get user.email - 这两个命令分别用于获取当前设置的全局用户名和电子邮件地址。

5.简述Git删除和移动文件的命令

git rm [file]-从版本控制中删除文件,并且将这次删除操作加入到暂存区。例如,如果你想删除 example.txt文件,可以使用 git rmexample.txt。这个命令不仅会从Git仓库中删除文件,还会从你的工作目录中删除它,
git rm --cached [file]-仅从Git仓库中删除文
件,但保留在工作目录中。如果你不小心将一个文件加入到了版本控制中,但实际上想保留它在你的工作目录而不希望Git跟踪,可以使用这个命令。
git mv [old file][new file]-移动或重命名
个文件、目录或软链接,并且将这次操作加入到暂存区。例如,如果你想将文件 old name.txt 重可以使用 git mv命名为 new name.txtold name.txt new name.txt

6.简述Git分支命令

git branch - 列出本地仓库的所有分支。执行这个命令时,当前分支会以一个星号(*)标记。
git branch [branch_name]-创建一个新分支
这个命令不会自动切换到新分支,只是创建它。例如, git branch feature-x会创建一个名为feature-x 的新分支。

git checkout [branch name]-切换到指定的分支。这个命令让你可以在不同的分支之间移动,开始在所选分支上工作。例如,git checkoutfeature-x 会切换到 feature-x 分支。
git checkout -b [branch name]- 创建并切换到新分支。这是 git branch 和 git checkout 的快捷组合,常用于开始一个新的功能开发。例如,git checkout -b feature-y 会创建并立即切换到feature-y 分支。
git merge [branch name]-将指定分支的更改
合并到当前分支。这个命令用于将分支的开发成果集成回主分支。例如,如果你在 feature-x 分支上完成了工作,并想将更改合并回 main 分支,你首先需要切换到 main 分支( git checkoutmain),然后运行 git merge feature-x 。

git branch -d [branch name]-删除一个分支。当你完成了一个分支的工作并成功合并后,你可能不再需要这个分支,可以使用这个命令将其删除,例如, git branch -d feature-x 会删除 feature.x分支。如果分支未被合并,可以使用 -D 选项强制删除。
git branch -m [old_name][new name]-重命名分支。如果你需要更改分支的名称,可以使用这个命令。例如, git branch -m feature-x feature-x-updated 将分文 feature-x重命名为 feature-x-updated 。

7.简述Git标签命令

git tag [tag_name]- 创建一个轻量标签。轻量标签是指向特定提交的引用,不包括任何额外信息。例如, git tag v1.0 会在当前的提交上创建一个名为 v1.0 的标签。

git tag -a [tag_name]-m "tag message" -建一个带有附加信息的注释标签。注释标签包含创建者的名字、电子邮件、日期,以及一个标签信息。例如, git tag -a v1.1 -m "Version 1.1release"。
git show [tag_name]-显示一个标签的详细信
息,包括标签的注释信息和指向的提交。例如git show v1.0 会显示 v1.0 标签的详细信息

git tag -d [tag_name]-删除一个标签。如果你创建了一个错误的标签或者不再需要某个标签,可以使用这个命令来删除它。例如, git tag -dv1.0 会删除 v1.0 标签、
git push [remote][tag_name]-推送-个标签
到远程仓库。默认情况下, git push 命令不会将标签推送到远程仓库,你需要显式地推送标签。例如, git push origin v1.0 会将 v1.0 标签推送到远程仓库。
 

8.简述Git查看命令

git status -个命令会列出未跟踪的文件、改动未暂存的文件以及已暂存但尚未提交的更改。
git log -查看提交历史。这个命令显示了提交
的详细历史,包括提交哈希、作者、日期和提交信息。你可以使用不同的选项来定制显示的日志,比如--oneline、--graph、--decorate 等
git diff - 查看未暂存更改。默认情况下
diff 显示工作目录中与暂存区不同的更改。如果你想查看已暂存的更改(即将要提交的更改),可以使用 git diff --cached 。
git diff [commit1][commit2]-比较两个提交
之间的差异。这个命令显示两个提交状态之间的代码差异。

git show [commit]-显示某次提交的详细信息,包括提交的差异改动。这对于理解特定提交所引入的更改非常有用。
git blame [file]-查看文件的逐行修改记录
这个命令对于追溯特定行的更改历史和责任归属非常有用。
git log --follow [file]-查看文件的更改历史,包括重命名。如果你对一个文件的完整历史感兴趣,这个命令可以提供有用的信息
git reflog -查看本地仓库的引用日志(reflog)。 git reflog 显示了HEAD和分支指针的最近变动。

9.简述Git远程命令

git remote -查看远程仓库。默认情况下, git
remote会列出所有远程仓库的简称。使用 gitremote-v可以查看远程仓库的URL
git remote add [shortname][url]-添加一个
新的远程仓库。通过这个命令,你可以为仓库添加-个新的远程源。例如, git remote add originhttps://github.com/example/repo.git .
git fetch [remote]- 从远程仓库下载所有的更改,但不自动合并到当前工作。 git fetchorigin 会从名为 origin 的远程仓库获取最新的更改。
git pull [remote][branch]-从远程仓库下载更改并自动合并到当前分支。这个命令是 gitfetch 和 git merge的组合。例如, git puliorigin master 会从 origin 的 master 分支拉取最新的更改并合并到当前分支,
git push [remote] [branch]-将本地分支的更
新推送到远程仓库。如果你对本地分支做了更改并希望分享这些更改,可以使用这个命令。例如,git push origin master 会将本地的 master 分支推送到 origin 。

git push [remote] --tags程仓库。默认情况下, git push 不会将标签推送到远程仓库,使用这个命令可以推送所有本地新建的标签。

10.Git使用流程

Git的使用流程涵盖了版本控制的全过程,从工作目录中的修改到提交更改到远程仓库。这个流程支持团队协作,同时保持代码历史的完整性和灵活性。以下是Git主要工作流程的简述:
1.克隆仓库(Clone)
使用 git clone [repository_url]克隆远程仓库到本地,这样你就有了仓库的完整副本,包括所有分支和历史记录。
2创建分支(Branching)
通过 git checkout -b [branch name]创建并。切换到一个新分支。这允许你在隔离的环境中工作,不影响主分支(如 main 或master)。
3.修改和测试代码(Editing and Testing)
在你的本地分支上进行修改和测试。这个阶段包括编写新代码、修复bugs和执行测试等。
4.暂存更改(Staging):
使用 git add [file]或 git add .将更改添加到暂存区。暂存是准备提交更改的过程,允许你选择性地控制哪些修改被包含在即将进行的提交中。

5.提交更改(Committing)
通过 git commit -m "commit message"提交你的更改到本地仓库。每次提交都应附带一个清晰的消息,描述进行了哪些更改及其原大。
6.拉取最新更改(Pulling)
在将更改推送到远程仓库之前,使用 git pull [remote] [branch]拉取远程分支的最新更改。这有助于减少合并冲突的可能性。
7.解决冲突(Resolving Conflicts):
如果在拉取最新更改时遇到冲突,需要手动解决这些冲突,然后再次提交。
8.推送更改(Pushing)
使用 git push [remote][branch]将本地分支的更新推送到远程仓库。这样其他人就能看到你的更改了。
9.合并分支(Merging)
当你完成了在分支上的工作,并且经过测试确认无误后,可以将这个分支合并回主分支。通常,这涉及到发起一个合并请求(Merge Request)或拉取请求(Pull Request),在团队成员审查代码后进行合并。

10.标记发布(Tagging)
发布版本时,可以使用 git tag [tag_name]来标记。这有助于记录重要的里程碑,如版本发布。

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

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

相关文章

[ansible] playbook运用

一、复习playbook剧本 --- - name: first play for install nginx #设置play的名称gather_facts: false #设置不收集facts信息hosts: webservers:dbservers #指定执行此play的远程主机组remote_user: root #指定执行此play的用…

【Java万花筒】选择最适合您的数据序列化格式:比较 Avro、Protocol Buffers、JSON、XML、MessagePack和BSON

选择最佳数据序列化格式:找到适合您的解决方案 前言 在当今数据驱动的世界中,高效地处理和传输数据变得至关重要。选择合适的数据序列化格式对于数据存储、通信和处理的性能至关重要。本文将介绍并比较几种常用的数据序列化格式,包括Apache…

python绘制k线图均线图

AAPL.csv 数据文件 Date,Close,Volume,Open,High,Low 06/23/2023,$186.68,53117000,$185.55,$187.56,$185.01 06/22/2023,$187.00,51245330,$183.74,$187.045,$183.67 06/21/2023,$183.96,49515700,$184.90,$185.41,$182.5901 06/20/2023,$185.01,49799090,$184.41,$1…

2.19C语言学习

P8597 [蓝桥杯 2013 省 B] 翻硬币 因为把相邻两个硬币翻转两次相当于不翻,所以最优方案中同一组硬币最多只会翻转一次,故翻转顺序无后效性,考虑贪心:从前往后比较,发现一个不同的硬币就把它和他后面的硬币翻转&#x…

单例模式的几种实现方式

在Java中,实现单例模式主要有几种方式:懒汉式、饿汉式、双重检查锁定、静态内部类和枚举。每种方式都有其特点和适用场景。 1. 饿汉式(线程安全) 饿汉式是最简单的一种实现方式,通过静态初始化实例,保证了…

springboot 事务管理 详细介绍

在Spring Boot中,事务管理是一种关键的特性,它确保了数据的完整性和一致性。Spring Boot提供了对事务管理的内置支持,使得在应用程序中使用事务变得非常简单。 事务管理的基本概念 事务是指一系列操作,这些操作要…

15-55V输入自动升降压 光伏MPPT自动跟踪充电方案 大功率300瓦

1.MPPT原理--简介 MPPT,全称为Maximum Power Point Tracking,即最大功点跟踪,它是一种通过调节电气模块的工作状态,使光伏板能够输出更多电能的电气系统能够将太阳能电池板发出的直流电有效地贮存在蓄电池中,可有效地…

【蓝桥杯】算法模板题(Floyd算法)

一.弗洛伊德算法 用途:用来求解多源点最短路径问题。 思想:Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。 主要步骤: 1)初始化:使用邻接矩阵初始化dis…

第十四届“中关村青联杯”全国研究生数学建模竞赛-A题:无人机在抢险救灾中的优化运用

目录 摘 要: 1 问题重述 1.1 问题背景 1.2 待解决的问题 2 模型假设及符号说明

GitHub仓库文件部署

目录 软件下载和安装 git创建仓库 Github仓库配置 git管理软件配置 Git管理 软件下载和安装 首先需要下载git,以及git管理软件,对其进行安装。 git创建仓库 首先需要创建仓库,在本地仓库文件夹cmd之后输入以下指令创建git仓库文件。 …

解决laravel-admin安装报错1071 Specified key was too long问题

在执行php artisan admin:install命令安装laravel-admin的时候,如果你使用的数据库是MySQL v5.7.7以下版本就会报下面的错: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL:…

课时39:表达式_运算符_简单计算

3.1.2 简单计算 学习目标 这一节,我们从 [ ] 、 l e t 、 ( ( ) ) 、 []、let、(())、 []、let、(())、(())、小结 五个方面来学习。 $[] 简介 $[]方法,常用于整数计算场景,适合不太复杂的计算,运算结果是小数的也会自动取整…

递归读取文件夹下的所有文件

水一篇文章 🐶 代码 package file;import org.apache.commons.lang3.StringUtils; import org.junit.Test;import java.io.File; import java.util.Objects;/*** FlattenDirFiles** author allens* date 2024/2/19*/ public class FlattenDirFiles {// 文件数量pri…

小米空气净化器2s使用体验

这个产品最早上市是2017年,我买回来实际上只用了1年就弃用了,性能不行,使用体验也不好。 打算买新的空气净化器,抽空吐槽一下。 这个净化器发售价是899,在当时来说算中下水平的,小米的,有米家…

什么是跨端,常用的跨端技术

跨平台是跨操作系统,跨端是指客户端 常见的客户端有,web、android、ios 等,客户端的特点是有界面、由逻辑,所以包含逻辑跨端和渲染跨端。 常用的跨端技术方案 React Native: 由 Facebook 推出的开源框架,…

Spring Boot与LiteFlow:轻量级流程引擎的集成与应用含完整过程

点击下载《Spring Boot与LiteFlow:轻量级流程引擎的集成与应用含完整过程》添加链接描述 1. 前言 本文旨在介绍Spring Boot与LiteFlow的集成方法,详细阐述LiteFlow的原理、使用流程、步骤以及代码注释。通过本文,读者将能够了解LiteFlow的特…

数据分析师SQL面试准备(part1)

1. SQL 万能框架 2. SQL的书写顺序,跟程序真的执行顺序不同 3. 4. 5. 6. 7. case when utilization 8. 9. 10. 11.

OpenHarmony—UIAbility组件间交互(设备内)

UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,该UIAbility可以是应用内的其他UIAbility,也可以是其他应用的UIAbility(例如启动三方支付UIAbility)。 本章节将从如下场…

多维时序 | Matlab实现LSTM-Mutilhead-Attention长短期记忆神经网络融合多头注意力机制多变量时间序列预测模型

多维时序 | Matlab实现LSTM-Mutilhead-Attention长短期记忆神经网络融合多头注意力机制多变量时间序列预测模型 目录 多维时序 | Matlab实现LSTM-Mutilhead-Attention长短期记忆神经网络融合多头注意力机制多变量时间序列预测模型预测效果基本介绍程序设计参考资料 预测效果 基…

01.Redis中间件实战1

Redis中间件实战1 Redis各种数据结构实战 字符串 需求:将用户信息存储至缓存中,实现每次前端请求获取用户个人详情时直接从缓存中获取。来演示字符串的写入与读取。 技术方案:为了实现这个需求,首先需要建立用户对象实体,里面包含用户个人的各种信息,包括ID、年龄、姓…