【Git】第二课:git安装和配置

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。

📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等服务,有需要可私信联系。

🗄️ 专栏介绍:本文归属于专栏《Git/Repo》,专注git、repo的使用教程和操作技巧,持续更新中,欢迎大家订阅关注。

Git的安装和配置

  • 1. 安装
    • 1.1 Windows系统
      • 1.1.1 下载安装包
      • 1.1.2 安装过程指引
    • 1.2 Linux系统
  • 2. 配置Git
    • 2.1 查看默认设置
    • 2.2 配置用户名和邮箱
    • 2.3 配置编辑器
    • 2.4 配置SSH密钥
    • 2.5 配置常用命令的别名
  • 课后习题
  • 附录
    • 查询Windows系统类型为32位还是64位
    • 查看Linux发行版名称

1. 安装

我们伟大祖国有句古话叫巧妇难为无米之炊,还有句话叫工欲善其事必先利其器。所以,在正式的学习之前,我们需要先把git这把利器安装好。

1.1 Windows系统

1.1.1 下载安装包

打开Git - Downloading Package页面,根据系统类型32位还是64位,自行下载对应的安装包。(请参考附录:查询系统类型是32位还是64位)。
Windows系统git下载页面

Windows系统git下载页面

如果官网链接下载速度很慢,可以尝试切换到国内淘宝镜像站的git安装包维护页面,根据官网下载页面提示的最新发布版本号,找到对应版本目录,然后根据系统类型,下载对应版本的Git-X.X.X-32-bit.exe或者Git-X.X.X-64-bit.exe即可。
国内淘宝镜像站Git安装包维护页面

国内淘宝镜像站Git安装包维护页面

Git-2.43.0版本国内淘宝镜像站下载指引

Git-2.43.0版本国内淘宝镜像站下载指引

1.1.2 安装过程指引

下载成功后运行git安装包,依次按如下步骤操作(如果安装其他版本时遇到本文没有提及且看不懂的步骤,就保持默认选项,然后Next即可)。
点击Next,开始安装

点击Next,开始安装

选择好安装路径(按需修改),点击Next

选择好安装路径(按需修改),点击Next

选择好git组件(默认即可,谨慎修改),点击Next

选择好git组件(默认即可,谨慎修改),点击Next

填写开始菜单文件夹名字(建议使用Git),点击Next

填写开始菜单文件夹名字(建议使用Git),点击Next

选择默认编辑器(选择默认的Vim即可,配置Git时会单独讲解配置编辑器更合适),点击Next

选择默认编辑器(选择默认的Vim即可,配置Git时会单独讲解配置编辑器更合适),点击Next

新仓库初始分支名设置(默认即可,后面课程会详细讲解分支知识),点击Next

新仓库初始分支名设置(默认即可,后面课程会详细讲解分支知识),点击Next

设置git命令运行环境(默认即可,慎选第三个否则会覆盖部分系统自带命令),点击Next

设置git命令运行环境(默认即可,慎选第三个否则会覆盖部分系统自带命令),点击Next

选择ssh命令(默认即可,ssh用于生成公私密钥对,用于免密访问),点击Next

选择ssh命令(默认即可,ssh用于生成公私密钥对,用于免密访问),点击Next

选择SSL/TLS库(默认即可,用于访问https加密型仓库),点击Next

选择SSL/TLS库(默认即可,用于访问https加密型仓库),点击Next

配置换行符转换规则(默认即可,表示检出文件时转换为Windows系统的CRLF换行符,提交时转换为*nix系统的LF换行符),点击Next

配置换行符转换规则(默认即可,表示检出文件时转换为Windows系统的CRLF换行符,提交时转换为*nix系统的LF换行符),点击Next

配置git命令运行终端(务必选择默认的第一个,系统自带的不好用),点击Next

配置git命令运行终端(务必选择默认的第一个,系统自带的不好用),点击Next

选择git pull命令的默认规则(保持默认即可,后面课程会详细讲解Fast-forward、Rebase相关知识),点击Next

选择git pull命令的默认规则(保持默认即可,后面课程会详细讲解Fast-forward、Rebase相关知识),点击Next

配置git凭证(用的较少,保持默认即可),点击Next

配置git凭证(用的较少,保持默认即可),点击Next

配置扩展选项(保持默认即可),点击Next

配置扩展选项(保持默认即可),点击Next

配置实验室选项(用不到,都不选),点击Next

配置实验室选项(用不到,都不选),点击Next

到此安装完成,选中Lunch Git Bash,去掉勾选View Release Notes,点击Finish。

到此安装完成,选中Lunch Git Bash,去掉勾选View Release Notes,点击Finish

最后,在弹出的Git Bash中执行git --version命令查看版本号以确认是否安装成功

最后,在弹出的Git Bash中执行git --version命令查看版本号以确认是否安装成功

安装完成,最后弹出的Git Bash将是我们以后经常使用的一个终端,所有的git命令都会在这里完成。后续可以在开始菜单的Git文件夹或者任意文件夹下鼠标右键菜单中找到它。
开始菜单-Git

开始菜单-Git

任意文件夹右键菜单-Open Git Bash here

任意文件夹右键菜单-Open Git Bash here

1.2 Linux系统

参考Download for Linux and Unix页面指引,根据自己的Linux发行版(查询Linux发行版名称?)选择对应的安装命令安装即可。以开发者最常用的Ubuntu系统为例,使用如下命令即可一键安装最新版本的git:

sudo apt-get install git

2. 配置Git

2.1 查看默认设置

Windows平台安装git的过程中,我们做了大量的配置和选择。这些配置最终都会以git设置项的方式被保存到/etc/gitconfig文件(Windows系统中查看是位于git安装路径\etc\gitconfig)中,同时我们还可以使用git config --list命令来查看目前git的所有设置。
Windows系统git默认设置项

Windows系统git默认设置项

Linux系统只需要一条命令即可完成安装,没有过多的配置项需要我们选择,因此在Linux系统并没有像Windows系统一样的默认git设置项。

2.2 配置用户名和邮箱

在使用git之前,我们必须至少配置2个设置项:用户名和邮箱。以便后续在提交代码时让git知道我们是谁,同时也能让git记录下我们每个人的劳动成果。配置git设置项使用的是git config命令

git config --global user.name "你的名字,为了兼容性考虑,建议使用英文或者拼音"
git config --global user.email "你的邮箱"

其中,

  • 携带--global参数,表示设置项全局可用
  • 不带--global参数,表示设置项仅限当前仓库可用
  • user.nameuser.email为git内置的2个设置项,分别用于保存用户名和邮箱。

示例:Git Bash配置用户名和邮箱

示例:Git Bash配置用户名和邮箱

那么,我们的自定义设置项存在哪里了呢?查看/etc/gitconfig发现并没有变化,实际它是存放在了$HOME/.gitconfig(用户HOME目录下的.gitconfig)中,这个规则不管是Windows系统还是Linux系统都是一致的。

git命令实际执行过程中,会按/etc/gitconfig -> $HOME/.config/git/config -> $HOME/.gitconfig -> .git/config的顺序进行覆盖式加载,所以如果不同gitconfig文件中出现了同名设置项,那么会以最后被加载的为准。
示例:查看自定义git设置项存储文件的内容

示例:查看自定义git设置项存储文件的内容

示例:Linux系统使用strace跟踪git访问gitconfig文件的顺序

示例:Linux系统使用strace跟踪git访问gitconfig文件的顺序

示例:Windows系统使用Process Monitor跟踪git访问gitconfig文件的顺序

示例:Windows系统使用Process Monitor跟踪git访问gitconfig文件的顺序

2.3 配置编辑器

编辑器用于提交时填写提交信息,Windows系统安装过程中,已经让我们选择了其中的一个编辑器;Linux系统默认编辑器为nano。为了减少git使用过程中遇到的问题,强烈建议大家不管使用Windows系统还是Linux系统,都选择命令行版本编辑器:nano或者vim!!!相对来讲,vim对初学者确实不友好,学习难度较大,如果没有经验可以使用nano:一个简洁易学的命令行编辑器。
nano编辑器操作页面

nano编辑器操作页面

配置为nano:

git config --global core.editor nano

配置为vim:

git config --global core.editor vim

第四课中讲解git commit命令时会详细介绍nano编辑器的使用方法。

2.4 配置SSH密钥

在前面Windows系统安装git的过程中,有一步是让我们选择ssh命令,当时提到过ssh的作用:用于生成公私密钥对,将公钥配置到git服务器之后,每次拉取和上传代码时就可以免除输入用户名密码,以免密方式来操作了。
稍安勿躁,具体操作方法会在第四课讲述Git基础时详细讲解。之所以单独列一小节来提它又不立即讲它,是因为这个配置本质上跟git是没有关系的,但是又跟git使用息息相关,甚至可以说是git借助了ssh免密登录的能力。

2.5 配置常用命令的别名

git config alias可以为Git命令设置一个自定义的别名(alias),从而简化命令的输入。这对于经常使用的命令特别有用,尤其是那些长而复杂的命令。以下是一些在 Git 社区中广泛使用的、大家约定俗成的别名:

  1. git co:这是git checkout的别名,用于切换分支或检出文件。
  2. git ci:这是git commit的别名,用于提交更改到暂存区。
  3. git st:这是git status的别名,用于查看工作目录和暂存区的状态。
  4. git br:这是git branch的别名,用于列出、创建或删除分支。
  5. git lg:这是log --graph --pretty=format:'%an %h %ad %s' --abbrev-commit --date=format:'%Y%m%d %H:%M:%S'的别名,以更易读的格式显示提交日志。
  6. git unstage:这是git reset HEAD的别名,用于将文件从暂存区移出。
  7. git last:这是git log -1的别名,用于显示最近的一次提交。

对应的设置命令如下所示:

git config --global alias.co checkout  
git config --global alias.ci commit  
git config --global alias.st status  
git config --global alias.br branch  
git config --global alias.lg "log --graph --pretty=format:'%C(bold yellow)<%h>%Creset %C(bold red)<%ad>%Creset %s %C(bold blue)<%an>%Creset' --date=format:'%Y-%m-%d %H:%M:%S' --abbrev-commit"  
git config --global alias.unstage 'reset HEAD'  
git config --global alias.last "log -1"

设置完成后,就可以使用缩短后的别名来代替真正的git命令了。

课后习题

  1. (单项选择题)git安装过程中为什么需要我们选择SSL/TLS库____?

A. 配置账号
B. 配置密码
C. 用于访问https加密型仓库
D. 多此一举

  1. (单项选择题)我想为当前仓库设置一个专用用户名:Alex Guo,以下哪个命令是正确的_____?

A. git config --global user.name “Alex Guo”
B. git config user.name “Alex Guo”
C. git config --global user.name Alex Guo
D. git config user.name Alex Guo

  1. (不定项选择题)Git配置文件加载顺序_____?

A. /etc/gitconfig
B. .git/config
C. $HOME/.gitconfig
D. $HOME/.config/git/config

附录

查询Windows系统类型为32位还是64位

通过cmd命令:_systeminfo_可以查询系统类型

systeminfo

如果systeminfo执行结果中的系统类型显示的是“X86-based PC”,那么就是32位的;如果显示的是“X64-based PC”,那么就是64位的。如果不知道怎么执行_systeminfo_命令,那么就当做32位看待吧,因为即使是64位也可以兼容32位版本的。到这里,知道你的系统类型是哪个了吧,返回Window系统安装Git章节去下载对应系统安装包吧。
查看Windows系统类型

查看Windows系统类型

也可以下载检测系统类型的批处理脚本(另存为check_system_bitness.bat),双击执行即可直接看到结果了。
检测系统类型的批处理脚本执行结果

检测系统类型的批处理脚本执行结果

查看Linux发行版名称

通过cmd命令:_cat /etc/issue_可以查询Linux发行版。

cat /etc/issue

cat /etc/issue命令可以查看Linux发行版名称。
查询Linux发行版

查询Linux发行版

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

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

相关文章

中国历史上著名的9大阳谋

阳谋这个词最早出自毛主席&#xff0c;是指随势而发、光明正大地利用计策&#xff0c;达到自己的目的&#xff0c;就算别人识破这个计谋&#xff0c;也无计可施&#xff0c;就算对方已经看出这是个陷进&#xff0c;也不得不跳进去。 那么阳谋和阴谋有什么区别呢&#xff1f;阴…

CMakeLists生成动态库.so和静态库.a

一、下载NDK CMake - NDK : 26.2.11394342 或 23.1.7779620 - CMake : 3.22.1 二、新建android\app\CMakeLists.txt 文件CMakeLists.txt内容 cmake_minimum_required(VERSION 3.4.1) #mker为项目名称 project(mker)#设置生成的so动态库最后输出的路径 set(CMAKE_LIBRARY_OUTP…

使用uniapp 的 plus.sqlite 操作本地数据库报错:::table xxx has no column named xxxx

背景&#xff1a; 1、使用uniapp 的 plus.sqlite 进行APP本地数据库操作 2、SQLite 模块用于操作本地数据库文件&#xff0c;可实现数据库文件的创建&#xff0c;执行SQL语句等功能。 遇到&#xff1a;在之前创建的表上进行新增字段的操作时候&#xff0c;出现问题&#xff1a…

API 接口渗透测试

1 API 接口介绍 1.1 RPC&#xff08;远程过程调用&#xff09; 远程过程调用&#xff08;英语&#xff1a;Remote Procedure Call&#xff0c;缩写为 RPC&#xff09;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序&#xff0c;而程序员无…

css的active事件在手机端不生效的解决方法

需求&#xff1a;需求就是实现点击图中的 “抽奖” 按钮&#xff0c;实现一个按钮Q弹的放大缩小动画 上面是实现的效果&#xff0c;pc端&#xff0c;点击触发 :active 问题&#xff1a;但是这种方式在模拟器上可以&#xff0c;真机H5一调试就没生效了&#xff0c;下面是简单…

力扣438. 找到字符串中所有字母异位词

Problem: 438. 找到字符串中所有字母异位词 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.编写辅助函数bool same(vector& need, vector& matched)&#xff1a; 1.1 以need为标准&#xff0c;循环对比need和matched的每一个位置的元素值是否相等 2.获…

redis实际应用场景及并发问题的解决

业务场景 接下来要模拟的业务场景: 每当被普通攻击的时候&#xff0c;有千分之三的概率掉落金币&#xff0c;每回合最多爆出两个金币。 1.每个回合只有15秒。 2.每次普通攻击的时间间隔是0.5s 3.这个服务是一个集群&#xff08;这个要求暂时不实现&#xff09; 编写接口&…

【工作中问题解决实践 十二】线上如何排查CPU100%的情况

当我们把服务发布到服务器器&#xff0c;可能会因为一些问题造成我们的服务器CPU被打满甚至超过100%&#xff0c;那如果我们想知道到底上在做什么操作导致CPU持续过高呢&#xff1f;因为在线上只能通过日志看问题&#xff0c;或者排查到哪个进程或者哪个线程持续占用CPU。然后才…

Avue框架实现图表的基本知识 | 附Demo(全)

目录 前言1. 柱状图2. 折线图3. 饼图4. 刻度盘6. 仪表盘7. 象形图8. 彩蛋8.1 饼图8.2 柱状图8.3 折线图8.4 温度仪表盘8.5 进度条 前言 以下Demo&#xff0c;作为初学者来说&#xff0c;会相应给出一些代码注释&#xff0c;可相应选择你所想要的款式 对于以下Demo&#xff0c…

【云开发笔记No.9】Kanban与敏捷开发

Kanban看板起源于丰田。 看板&#xff08;Kanban&#xff09;一词来自日文&#xff0c;本义是可视化卡片。如下图所示&#xff0c;看板工具的实质是&#xff1a;后道工序在需要时&#xff0c;通过看板向前道工序发出信号——请给我需要数量的输入&#xff0c;前道工序只有得到看…

C# 特性(Attribute)

C# 特性&#xff08;Attribute&#xff09; 文章目录 C# 特性&#xff08;Attribute&#xff09;Obsolete语法示例代码 创建自定义特性&#xff08;Attribute&#xff09; Obsolete 这个预定义特性标记了不应被使用的程序实体。它可以让您通知编译器丢弃某个特定的目标元素。例…

五、初识Django

初识Django 1.安装django2.创建项目2.1第一种方式&#xff1a;在终端2.2第二种方式&#xff1a;Pycharm 3.创建app4.快速上手4.1再写一个页面4.2templates模板4.3静态文件4.3.1static目录4.3.2引用静态文件 5.模板语法案例&#xff1a;伪联通新闻中心6.请求和相应案例&#xff…

图像变换(python)

前言 这个Python没学过&#xff0c;写的是真的不方便&#xff0c;有很多问题还没解决&#xff0c;暂时不想写了&#xff0c;感兴趣的同学可以完善一下。设计的思路就是摆几个控件然后将对应的函数实现&#xff0c;这个Python的坐标放置以及控件的大小我没弄懂&#xff0c;算出…

3月份的倒数第二个周末有感

坐在图书馆的那一刻&#xff0c;忽然感觉时间的节奏开始放缓。今天周末因为我们两都有任务需要完成&#xff0c;所以就选了嘉定图书馆&#xff0c;不得不说嘉定新城远香湖附近的图书馆真的很有感觉。然我不经意回想起学校的时光&#xff0c;那是多么美好且短暂的时光。凝视着窗…

如何进行Modbus转Profinet网关的调试与故障排除

Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;带有网口和串口很大限度地解决了设备接口不统一的问题&#xff0c;支持485和232&#xff0c;可以实现从Modbus通信协议到Profinet通信协议的无缝转换&#xff0c;为不同协议之间的互联互通提供了便利。 Modbus转Profine…

时间戳的转换-unix时间戳转换为utc时间(python实现)

import datetimetimestamp = 1711358882# 将时间戳转换为UTC时间 utc_time = datetime.datetime.utcfromtimestamp(timestamp)# 格式化并输出时间 formatted_time = utc_time.strftime(%Y-%m-%d %H:%M:%S) print(formatted_time)同样:UTC如何转换为unix时间戳 from datetime …

Axure案例分享—折叠面板(附下载地址)

今天和大家分享的Axure案例是折叠面板 折叠面板是移动端APP中常见的组件之一&#xff0c;有时候也称之为手风琴。咱们先看下Axure画出的折叠面板原型效果&#xff0c;然后再对该组件进行详细讲解。 一、功能介绍 折叠或展开多个面板内容&#xff0c;默认为展开一项内容&…

K8s-网络原理-中篇

引言 本文是《深入剖析 K8s》的学习笔记&#xff0c;相关图片和案例可从https://github.com/WeiXiao-Hyy/k8s_example中获取&#xff0c;欢迎 ⭐️! 上篇主要介绍了 Flannel 插件为例&#xff0c;讲解了 K8s 里容器网络和 CNI 插件的主要工作原理。还有一种“纯三层”的网络方…

C语言程序与设计——预处理命令

宏 在C语言中宏有三种形式: 定义符号常量定义傻瓜表达式定义代码段 在使用宏的过程中需要注意的是&#xff0c;宏的作用仅仅是在预处理阶段对代码进行替换&#xff0c;而非进行运算&#xff0c;所以在使用时&#xff0c;如果出现了我们预期之外的结果&#xff0c;很有可能是宏…

Java代码基础算法练习-搬砖问题-2024.03.25

任务描述&#xff1a; m块砖&#xff0c;n人搬&#xff0c;男搬4&#xff0c;女搬3&#xff0c;两个小孩抬一砖&#xff0c;要求一次全搬完&#xff0c;问男、 女、小孩各若干&#xff1f; 任务要求&#xff1a; 代码示例&#xff1a; package M0317_0331;import java.util.S…