git学习笔记(总结了常见命令与学习中遇到的问题和解决方法)

news2024/11/23 19:17:25

前言

最近学习完git,学习过程中也遇到了很多问题,这里给大家写一篇总结性的博客,主要大概讲述git命令和部分难点问题(简单的知识点这里就不再重复讲解了)

一.git概述

1.1什么是git

Git是一个分布式的版本控制软件。

  • 软件。
  • 版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据
  • 分布式
    • 文件夹拷贝
    • 本地版本控制
    • 集中式版本控制
    • 分布式版本控制

1.2 为什么要做版本控制

要保留之前所有的版本,以便回滚和修改。

1.3 安装git

安装地址:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

windows下(Mac下同理)
在这里插入图片描述

再进行点击即可下载
在这里插入图片描述
安装一直点下一步即可。

1.4 git配置环境变量

环境变量配置参考之前写的博客: git配置环境变量

二.git常用命令

2.1 基础命令

命令作用
git init初始化本地库
git status查看本地库状态
git add 文件名把该文件添加到暂存区
git add .把所有文件添加到暂存区
git config --global user.name “用户名”设置用户名(全局配置,一次即可)
git config --global user.email “邮箱”设置用户邮箱(全局配置,一次即可)
git commit -m ‘描述信息’生成版本信息并提交到本地库
git log查看版本记录
git reflog查看历史版本记录
git reset --hard 版本号回滚操作(可以回到定义的任意版本的状态)

2.2 分支操作

命令作用
git branch 分支名创建分支
git branch查看当前分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上
git rebase 分支名保持代码提交整洁(变基)
git log --graph记录图形展示
git log --graph --pretty=format:“%h %s”记录图形展示(简略版)
git tag -a v1.0[自己写Tag信息] -m ‘版本介绍’本地创建Tag信息
git tag -d v1.0删除Tag
git checkout v1.0切换tag

2.3 将项目推到Github命令

命令作用
git remote add origin 远程仓库地址给远程仓库起别名(仅一次)
git remote -v查看当前所有远程地址别名
git push -u origin 分支名推送本地分支上的内容到远程仓库
git clone 远程仓库地址将远程仓库的内容克隆到本地(第一次)
git pull 远程库地址别名 远程分支名将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
git config --global http.sslVerify false临时禁用 SSL 验证(不安全)
git config --global http.sslVerify true重新启用 SSL 验证
git push origin --tags将本地Tag信息推送到远程仓库
git pull origin --tags更新本地tag版本信息

三.git用法讲解

3.1 git 打开使用

打开项目所在文件夹,右键找到git bash打开
在这里插入图片描述

3.2 git 工作流程图

在这里插入图片描述

3.3 git merge 分支名 的用法

git merge 分支名

该命令用于分支合并,但有可能会出现冲突,需要手动修改冲突文件来解决,或者使用Beyond Compare来解决(Beyond Compare的配置方法在后面讲)

3.4 git log --graph 与 git log --graph --pretty=format:“%h %s”

这两个命令都是进行图形化显示,效果如下(可以查看所有版本和分支情况):

git log --graph

在这里插入图片描述

git log --graph --pretty=format:"%h %s"

在这里插入图片描述

3.5 配置文件

  • 项目配置文件—用户配置(每个项目都需要进行配置,不推荐)

    ### 配置文件位置:vim .git/config
    git config --local user.name "用户名"
    git config --local user.email "邮箱"
    
  • 全局配置文件(只需配置一次,全电脑项目之后都会使用该配置,推荐)

    ### 配置文件位置:~/.gitconfig[当前用户所在目录]
    git config --global user.name "用户名"
    git config --global user.email "邮箱"
    
  • 系统配置文件(给系统进行配置,需要root权限)

    ### 配置文件位置:/etc/.gitconfig
    ### 需要root权限
    git config --global user.name "用户名"
    git config --global user.email "邮箱"
    

3.6 免密登录

  • URL中体现

    # 原来的地址
    # https://github.com/Caesar-Victory/Stacer.git
    # 修改的地址
    # https://用户名:密码@github.com/Caesar-Victory/Stacer.git
    git remote add origin https://用户名:密码@github.com/Caesar-Victory/Stacer.git
    git push origin master
    # 或者修改本地配置文件
    
  • SSH实现

    # 生成公钥和私钥(默认生成在~/.ssh)
    ssh-keygen -r ssa
    # 拷贝公钥的内容并且设置到Github中
    # 在git本地中配置SSH地址
    git remote add origin git@github.com:Caesar-Victory/Stacer.git
    
  • git自动管理凭证(git会自动对内容进行管理操作,用户无需进行多余操作)

3.7 Git忽略文件

让Git不再管理当前目录下的某些文件

### vim 编辑
vim .gitignore
	文件内写入文件名和后缀,跨行书写
	*.h凡此后缀,均不管理
	.gitignore 免除对文件本身的管理
	files/忽略该目录所有文件
	!a.h 除该文件以外
	*.py[c|a|b] 同时忽略.pyc/.pya.pyb
### 再次git status
git status

更多规则参考:https://github.com/github/gitignore
意义:忽略关键文档,防止泄密

3.8 任务管理相关(GitHub,了解即可)

  • issues 文档及任务管理

    ### 标签 9 labels
    
    #bug 
    something isn't working
    
    #documentation
    lmprovements or additions to documentation
    
    #duplicate
    This issue or pull request already exists
    
    #enhancement
    New feature or request
    
    #good first issue
    Good for newcomers
    
    #help wanted
    Extra attention is needed
    
    #invalid
    This doesn't seem right
    
    #question
    Further information is requested
    
    #wontfix
    This will not be worked on
    

    在这里插入图片描述

  • wiki 项目文档
    在这里插入图片描述

四.学习过程中会遇到的问题与解决方法

4.1 刚开始使用git时(没有用户身份和邮箱)

问题描述:

Tiamo@LAPTOP-G0EQAN1F MINGW64 /d/新建文件夹 (master)
$ git commit -m 'v1'
Author identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'Tiamo@LAPTOP-G0EQAN1F.(none)')

解决方法:

git config --global user.email "your_email@example.com"  
git config --global user.name "Your Name"

4.2 SSL证书验证问题(该问题会在远程链接仓库时会遇到)

问题描述:

Tiamo@LAPTOP-G0EQAN1F MINGW64 /d/新建文件夹 (master)
$ git push -u origin master
fatal: unable to access 'https://github.com/1273055646/dbhot.git/': SSL certificate problem: unable to get local issuer certificate

解决方法:

遇到这种问题基本都是自己做项目或者学习时会遇到,这里可以用临时禁用SSL 验证来解决,但是该方法有安全隐患(会使你的连接容易受到中间人攻击)不过对于自己学习的过程中使用来说并不影响。

# 该方法是全局(针对本地所有项目)
git config --global http.sslVerify false
# 该办法只针对当前仓库
git config http.sslVerify false

之后想要再恢复SSL 验证

git config --global http.sslVerify true

git config http.sslVerify true

4.3 BeyondCompare安装与永久免费使用

请参考之前写的博客:BeyondCompare安装(永久免费使用+全网最详细版)

4.4 git配置BeyondCompare解决冲突(无法用git打开BeyondCompare)

问题描述:

在这里插入图片描述

解决方法:

参考我之前写的博客: git配置BeyondCompare解决冲突(全网最细讲解,亲测有用,windows版本)

结尾

本篇博客主要对git的常见命令、各大疑难点和问题进行总结与梳理,希望对大家有所帮助,也欢迎大家留言或者私信学习git过程中遇到的问题,我也会对大家遇到的问题进行查阅与解答。

博主也是初学者,如有不到之处,欢迎大家批评指正!

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

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

相关文章

SQL Developer 连接 MySQL

服务: $ sudo systemctl list-unit-files | grep enabled | grep mysql mysqld.service enabled日志: mysqld.log # sudo grep temporary password /var/log/mysqld.log 2024-05-28T00:57:16.676383Z 6 [Note] [MY…

GB28181摄像头管理平台WVP视频平台SQL注入漏洞复现 [附POC]

文章目录 GB28181摄像头管理平台WVP视频平台SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 GB28181摄像头管理平台WVP视频平台SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

AI带货直播软件开发会用到哪些源代码?

随着人工智能技术的迅猛发展,AI带货直播软件已成为电商领域的一股新兴力量,这类软件通过结合AI技术、虚拟形象和实时互动功能,极大地提升了用户体验和购买转化率。 在开发这类软件的过程中,源代码的编写至关重要,本文…

20 B端产品的数据分析

数据分析的价值 数据衡量业务:通过管理数据报表,可以快速衡量业务发展状态。 数据洞察业务:通过数据分析,可以找到业务发展的机遇。 数据驱动指导业务:基于数据,驱动业务决策,数据支撑决策。 …

python+vue3+onlyoffice在线文档系统实战20240726笔记,左侧菜单实现和最近文档基本实现

解决右侧高度过高的问题 解决方案:去掉右侧顶部和底部。 实现左侧菜单 最近文档,纯粹文档 我的文档,既包括文件夹也包括文件 共享文档,别人分享给我的 基本实现代码: 渲染效果: 简单优化 设置默认菜…

K8S 部署peometheus + grafana 监控

安装说明 如果有下载不下来的docker镜像可以私信我免费下载。 系统版本为 Centos7.9 内核版本为 6.3.5-1.el7 K8S版本为 v1.26.14 动态存储:部署文档 GitHub地址 下载yaml 文件 ## 因为我的K8S 版本比较新,我下载的是当前的最新版本,你的要…

【10.PIE-Engine案例———— 加载Terra星全球1km地表温度和发射率每日天合成产品(MOD11A1 V61)数据集】

加载Terra星全球1km地表温度和发射率每日天合成产品(MOD11A1 V61)数据集 原始路径 欢迎大家登录航天宏图官网查看本案例原始来源 最终结果 具体代码 /*** File : MOD11A1* Time : 2020/7/21* Author : piesat* Version : 1.0* Contact : 400-890-0662* Li…

6.3 面向对象技术-设计模式

设计模式 创建型模式 结构型模式

【cuda】在老服务器上配置CUDA+cmake开发环境

在老服务器上配置CUDA+cmake开发环境 服务器x86_64,系统是centos8,cmake版本是2.8.10 背景 不能更换服务器系统无法下载CUDA安装包解决思路 使用可以至此CUDA开发的较老的cmake直接移植CUDA环境配置环境中遇到的问题 服务器无法编译cmake移植CUDA编译器及部分库,代码无法…

Linux学习笔记 --- 环境配置

在成功装载Ubuntu系统后我们需要设置其与windows系统的共享文件夹,按照以下步骤操作 设置完共享文件夹后在终端执行以下命令查看是否成功设置 此时下方出现设置的共享文件夹名称则为成功设置 如果未显示可以尝试进行重新安装VMware tools,步骤如下&…

[论文笔记]一种超越思维链的提示策略——少到多提示

引言 今天带来另一种提示策略论文笔记:LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS。 思维链提示在各种自然语言推理任务中表现出了显著的性能。然而,在需要解决比提示中示例更难的问题时,它的表现往往较…

1.STM32CubeMX软件安装及工程创建

软件安装及工程创建 1. 安装STM32CubeMX2.创建工程 1. 安装STM32CubeMX 链接:https://pan.baidu.com/s/1kubaMuiOBe8Vg6mQsFMYMw?pwdchdj 提取码:chdj 安装STM32cubemx(中间可能会出现一些需要下载的情况,等待完成即可&#xf…

论文精读(保姆级解析)—— FreeDoM: Training-Free Energy-Guided Conditional Diffusion Model

目录 0 前言1 文章摘要2 引言3 相关工作3.1 需要训练的扩散方法3.2 无需训练的扩散方法 4 预备知识4.1基于分数的扩散模型4.2 条件分数函数4.3 能量扩散引导 5 提出方法5.1 近似时间相关能量5.2 有效的时间旅行策略5.3 能量函数构造5.3.1 单一条件引导5.3.2 多条件引导5.3.3 潜…

嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化:智能物流管理系统设计思路流程(附代码示例)

目录 项目概述 系统设计 硬件设计 软件设计 系统架构图 代码实现 1. STM32微控制器与传感器代码 代码讲解 2. MQTT Broker设置 3. 数据接收与处理 代码讲解 4. 数据存储与分析 5. 数据分析与可视化 代码讲解 6. 数据可视化 项目总结 项目概述 随着电子商务的快…

Week 3 DAY 5:

Game on Ranges - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Game on Ranges 这道题题目意思有点难理解,加上是英文提面,这里解释一下,有两个人A和B, 一开始给定一个n,是1到n的排列,A人负责选取区间,…

数模打怪(八)之图论模型

一、作图 图的数学语言描述: G( V(G), E(G) ),G(graph):图,V(vertex):顶点集,E(edge):边集 1、在线作图 https://csac…

第G4周:CGAN|生成手势图像 | 可控制生成

本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊 理论知识: 条件生成对抗网络(CGAN)是在生成对抗网络(GAN)的基础上进行了一些改进。对于原始GAN的生成器而言,其生成的…

C#基础——类、构造函数和静态成员

类 类是一个数据类型的蓝图。构成类的方法和变量称为类的成员,对象是类的实例。类的定义规定了类的对象由什么组成及在这个对象上可执行什么操作。 class 类名 { (访问属性) 成员变量; (访问属性) 成员函数; } 访问属性:public(公有的&…

MinIO对象生命周期

Object Management — MinIO Object Storage for Windowshttps://min.io/docs/minio/windows/administration/object-management.html 1.概念 MinIO 对象生命周期是指对存储在 MinIO 中的对象进行自动管理的一套策略。这些策略可以用于自动删除旧对象、转移对象到不同的存储类别…

Golang高效合并(拼接)多个gzip压缩文件

有时我们可能会遇到需要把多个 gzip 文件合并成单个 gzip 文件的场景,最简单最容易的方式是把每个gzip文件都先解压,然后合并成一个文件后再次进行压缩,最终得到我们想要的结果,但这种先解压后压缩的方式显然效率不高,…