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

前言

最近学习完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.Rungit 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.mzph.cn/web/49397.shtml

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

相关文章

【推研小灶】复旦与南大之间:一次独特的计算机保研之旅

写在前面 上午10点填完志愿等待复试通知,利用这段时间记录一下我简短的夏令营和预推免。今年变为线下之后,部分学校的入营情况、考核方式有明显变化。加上CS方向保研名额总体变多,形势有点小乱,甚至填报系统都在9.29中秋节当天&a…

嵌入式C++、Raspberry Pi、LoRa和Wi-Fi技术、TensorFlow、ROS/ROS2:农业巡检数据导航机器人设计流程(代码示例)

随着科技的不断进步,农业领域也在逐渐向智能化发展。农业巡检机器人作为农业智能化的重要组成部分,能够自动化地监测农作物生长状况,提高农业管理的效率和精确度。本文将介绍一个基于Raspberry Pi和NVIDIA Jetson的农业巡检机器人&#xff0c…

【我的养猪日记】区块链游戏

剧情介绍 年少无知留给了故乡,谦卑有礼送给了远方,有工作的地方没家,有家的地方没工作,他乡留不下灵魂,故乡安不了肉身,从此便有了漂泊。在外漂泊数年的你每天过着,挤不完的公交地铁、交不完的房…

keyring 库

目录 安装 keyring 基本用法 1. 设置密码 2. 获取密码 3. 删除密码 4. 返回当前使用的默认密钥环 5. 列出所有密码 支持的后端 keyring 是一个 Python 库,用于将敏感信息(如密码)安全地存储在操作系统的密码管理器中。它支持多种平台…

VUE3学习第三篇:报错记录

1、在我整理好前端代码框架后,而且也启动好了对应的后台服务,访问页面,正常。 2、报错ReferenceError: defineModel is not defined 学到这里报错了 在vue网站的演练场,使用没问题 但是在我自己的代码里就出问题了 3、watchEffec…

记一次使用GenericObjectPool的体验,避免自己重复造轮子

概述 相信大家在日常的开发中,或多或少都接触过对象池、连接池等池化的内容,可能还自己手动实现或维护过这种 “池子”。 我也曾干过这种事情。当时要连接一个第三方平台进行接口调用,为了减少耗时和提升稳定性,手动实现了一个连…

HashMap存储数据的put()方法

1. 计算哈希值 2. 处理哈希值 3.查找链表 4. 检查键的存在性 5. 插入新键值对 6. 检查扩容 总结 put()方法是HashMap中用于插入或更新键值对的基本方法。使用 put()方法时,会执行以下步 骤: 1. 计算哈希值 在调用 put(key, value)方法时,首先…

网友提问:桌面与web开发哪个难度更大?

关于桌面应用开发与Web开发哪个难度更大的问题,实际上并没有绝对的答案,因为这取决于具体的开发任务、所使用的工具和技术栈等因素。不过,我们可以从几个方面来进行比较: 技术栈 Web开发: 前端通常涉及到HTML、CSS、J…

用Python编写自动答题脚本——该如何写呢?

编写一个Python自动答题脚本的复杂性和方法将取决于你所要答题的系统的具体实现和限制。以下是一个简化的流程,以及如何在不同情境下编写自动答题脚本的基本思路。 1. 确定答题系统的交互方式 首先,你需要了解答题系统是如何与用户交互的。这可能包括&…

Django—admin后台管理

Django官网 https://www.djangoproject.com/ 如果已经有了Django跳过这步 安装Django: 如果你还没有安装Django,可以通过Python的包管理器pip来安装: pip install django 创建项目: 使用Django创建一个新的项目: …

[Mysql-DDL数据操作语句]

目录 DDL语句操作数据库 库: 查看:show 创建:creat 删除:drop 使用(切换):use 表: 查看:desc show 创建:create 表结构修改 rename as add drop modify change rename as …

unity对一些列点按顺序围成的封闭区域进行填充mesh

在Unity中,要对一系列顶点按顺序围成的封闭区域进行填充成Mesh,你可以采取以下步骤: 定义顶点数组: 首先,你需要定义一个顶点数组,其中包含封闭区域的所有顶点的位置信息。 定义三角形索引数组&#xff1a…

探索Linux-1-虚拟机远程登陆XShell6远程传输文件Xftp6

Linux是什么? Linux是一个开源的操作系统内核,由林纳斯托瓦兹(Linus Torvalds)于1991年首次发布。它基于Unix操作系统,但提供了更多的自由和灵活性。Linux内核是操作系统的核心部分,负责管理系统资源、处理…

Spring 集成框架和技术 06

Spring 是一个开放性的框架,设计之初就考虑了与各种第三方框架和技术的集成,以提供更广泛的应用支持。以下是 Spring 可以集成的一些主要框架和技术: 1. 持久化框架: Hibernate:通过 Spring 的 LocalSessionFactoryB…

以线程完成并发的UDP服务端

网络(九)并发的UDP服务端 以线程完成功能 客户端 // todo UDP发送端 #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/types.h> #include <stdlib.h> #include <string.h…

MySQL的表,视图,索引创建

一。创建表 1。创建Student表 mysql> create table Student(Sno int primary key auto_increment,Sname varchar(30) not null unique,Ssex varchar(2) check (Ssex 男 or Ssex 女) not null,Sage int not null,Sdept varchar(10) default 计算机 not null); 2.创建Cour…

Infuse Pro for Mac全能视频播放器

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件…

java 求两个字符序列的最长公共字符子序列

/* 求两个字符序列的最长公共字符子序列。 给定两个字符串&#xff0c;求解这两个字符串的最长公共子序列&#xff08;Longest Common Sequence&#xff09;。 比如字符串1&#xff1a;BDCABA&#xff1b;字符串2&#xff1a;ABCBDAB&#xff0c; 则这两个字符串的最长公共子序…

Dav_笔记11:SQL Tuning Overview-sql调优 之 5

构建SQL测试用例 对于许多与SQL相关的问题&#xff0c;获得可重现的测试用例可以更轻松地解决问题。从11g第2版&#xff08;11.2&#xff09;开始&#xff0c;Oracle数据库包含SQL测试用例构建器&#xff0c;它可以自动完成收集和复制尽可能多的有关问题及其发生环境的信息的难…

【JavaScript】深入理解 `let`、`var` 和 `const`

文章目录 一、var 的声明与特点二、let 的声明与特点三、const 的声明与特点四、let、var 和 const 的对比五、实战示例六、最佳实践 在 JavaScript 中&#xff0c;变量声明是编程的基础&#xff0c;而 let、var 和 const 是三种常用的变量声明方式。本文将详细介绍这三种变量声…