Git的学习和常见问题

文章目录

  • 1.初始化配置
  • 2.新建仓库
  • 3.添加和提交文件
  • 4.git reset 回退版本
  • 5.git diff 查看差异
  • 6.git rm 删除文件
  • 7.文件 .gitigonre
  • 8.克隆远程仓库
  • 9.将已有的本地仓库关联到远程仓库
  • 10.分支的基本操作
  • 11.解决合并冲突
  • 配置问题


最近基于GeekHour的视频学习Git,记录了一些常用命令和踩过的坑。

前置操作

  1. 安装Git
    进入官网
  2. 在终端中输入git -v查看版本信息
    在这里插入图片描述

1.初始化配置

配置用户名和邮箱(用的PowerShell)

git config --global user.name Xiechimon
git config --global user.email xiechimon@qq.com

# 保存用户名和密码
git config --global credential.helper store
# 查看Git的配置信息
git config --global --list

2.新建仓库

# 在桌面创建文件夹
cd D:\Desktop
mkdir learn-git

# 在文件夹下创建.git,此时该目录为仓库
cd learn-git
git init

# 查看当前目录是否有.git文件
ls -force

# 删除仓库
Remove-Item -Force .git

# 创建 my-repo 仓库
git init my-repo

# 克隆仓库
git clone [address]

# 查看仓库中的文件
git ls-files

3.添加和提交文件

# 查看仓库状态
git status

# 创建文件并写入内容
echo "这是第一个文件" > file1.txt
# 查看文件内容
cat file1.txt

# 将文件添加到暂存区
git add file1.txt
# 将所有以txt为后缀的文件添加到暂存区
git add *.txt
# 添加所有文件
git add .

# 提交到仓库
git commit -m "submit test"

# 查看提交记录
git log
git log --oneline  # simple

4.git reset 回退版本

# 将Test仓库复制一份
Copy-Item -Path "Test" -Destination "test-copy" -Recurse -Force

# soft:只是把commit的文件回退到暂存区了
git reset --soft [versions]  # 表示回退到指定的版本
# 再commit一次就可以回到原版本

# hard:把以前版本的内容都清空了,无法回去
git reset --hard HEAD^  # 表示回退到上一个版本

# mixed(default):将已经commit和add的文件退回,再次add和commit就能回到原版本
git reset HEAD^

# 如果误操作了hard也可以回溯
git reflog  # 查看操作记录
git reset --hard 2b45b42  # git reset回退到这个版本即可

5.git diff 查看差异

  • git diff:在工作区add\commit之后修改文件内容就能看到差异,看工作区与缓存区和本地仓库之间的差异

当更改了file3.txt时

notepad file3.txt
# 修改文件之后,会从本地仓库直接退回到工作区,不在暂存区

输出

diff --git a/file3.txt b/file3.txt		# 提示发生变更的文件
index 55bd0ac..6f96da6 100644			# 省略的哈希值和文件权限
--- a/file3.txt
+++ b/file3.txt
@@ -1 +1 @@
-333			# 删除的
+332			# 添加的
  • git diff HEAD:在工作区修改之后add,能看到在工作区修改的内容,看工作区与暂存区之间的差异
  • git diff --cached:比较暂存区与本地仓库之间的差异,在commit之后就无输出了
  • git diff [ID] [ID]:比较两个特定版本之间的差异
    git diff HEAD~ HEAD 表示当前版本与上一个版本之间的差异
    还可以指定文件

6.git rm 删除文件

在这里插入图片描述
如果文件在外部被删除,而暂存区中还存在,可以再add和commit一次从而更新暂存区和版本库

7.文件 .gitigonre

里面的文件名会被忽略,不提交到仓库中,目的是
使仓库体积更小、更干净

# 表示忽略所有的log文件
*.log

# 表示忽略任何目录下的temp文件夹
temp/

# 只忽略当前目录下的TODO文件夹
/TODO

# 保留文件
!lib.a

# 忽略doc/ 下的txt文件
doc/*.txt

# 忽略doc/ 及其所有子目录下的pdf文件
doc/**/*.pdf

github上的配置模板

8.克隆远程仓库

SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地访问和管理远程计算机。

相较于HTTPS方式,SSH方式在推送的时候不需要验证用户名密码,更加安全方便,但需要在GitHub上添加SSH公钥的配置

  1. 配置SSH公钥
# 回到根目录
cd
# 进入.ssh目录
cd .ssh
# 生成SSH密钥、指定协议为RSA、生成大小为4096
ssh-keygen -t rsa -b 4096

# 1.之后如果之前没有配置过就直接回车
# 如果配置过了就输入一个新的文件名,否则会覆盖原来的
# 2.输入密码
# 3.会生成两个文件:id_rsa(私钥)、id_rsa.pub(公钥)
# 4.cat打开公钥文件id_rsa.pub,复制内容并上传到GitHub

  • 将公钥文件上传到github
    在这里插入图片描述
  • 如果刚配置了一个新的密钥,需要创建一个config文件,并添加内容,目的是当访问GitHub时使用新的密钥
    在这里插入图片描述

9.将已有的本地仓库关联到远程仓库

在这里插入图片描述

# 添加一个名为origin的远程仓库
git remote add origin https://github.com/sleP4o/first-repo.git

# 查看本地仓库所对应的远程仓库的别名和地址
git remote -v

# 指定分支的名称为main (可省略)
git branch -M main

# 把本地的main分支和远程仓库origin的main分支关联
git push -u origin main

# 拉取远程仓库到本地仓库并自动合并
git pull [origin] [main]

10.分支的基本操作

分支用于新功能的开发和测试或者团队协作,不会影响到主线代码

Merge:不会破坏原分支提交记录

# 查看分支
git branch

# 创建分支dev
git branch dev

# 切换到dev分支
git switch dev
git checkout dev  # checkout可以用于切换分支和恢复文件,有歧义

# 将dev分支合并到当前分支
git merge dev

# 以图表形式查看日志
git log --graph --oneline --decorate --all
# 可以给它起个别名,以后只要用graph就能查看
notepad $PROFILE # 1.打开pwsh配置文件
. $PROFILE  # 2.保存配置

# 删除已经被合并的分支,未合并的要强制删
git branch -d dev
# git branch -D branch-name  # 强制删除

Rebase:不会新增额外的提交记录

git switch main
git rebase dev

建议:Rebase用于自己一人在分支上开发,Merge用于协同开发

11.解决合并冲突

当两个分支修改同一个文件的同一行代码时,Git不知道保留哪一个,从而产生冲突

当产生冲突时,git会把两个分支写的内容都写到该文件中,然后通过用户手动修改该文件从而解决冲突

# 如果想要终止合并,不让git写入
git merge --abort

配置问题

  1. Git报错

    摘自Git报错

    • Failed to connect to github.com port 443
      解决办法:配置http代理
      配置socks5代理
      git config --global http.proxy socks5 127.0.0.1:7890
      git config --global https.proxy socks5 127.0.0.1:7890
      
      配置http代理
      git config --global http.proxy 127.0.0.1:7890
      git config --global https.proxy 127.0.0.1:7890
      
    • Failed to connect to 127.0.0.1 port 7890
      把这里的端口设置成7890
      在这里插入图片描述
  2. 克隆仓库时SSH密钥为中文名导致克隆失败
    在这里插入图片描述
    解决:解决git生成ssh密钥失败问题,本机用户名中文乱码导致密钥生成失败。

    • 打开gitbash
      在这里插入图片描述
    • 重新创建SSH密钥
      ssh-keygen -t rsa -C "xiechimon@qq.com"
      # 双引号里输入自己的邮箱地址
      

    补充:不知道为什么成功一次之后又失败了,还是用回HTTPS吧,太难了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Mcal》--MCU模块

一、MCU模块的主要功能 控制系统时钟的产生。控制系统通用模块,该模块会涉及到Adc、Ftm等外设的配置。控制外设时钟。控制MCU运行的模式。初始化定义RAM Section。 比较重要的是时钟的配置。 二、系统时钟的配置 1、芯片时钟树 要想弄明白时钟配置,需…

【每日学点鸿蒙知识】查看触摸热区范围、直接赋值到剪贴板、组件截图、横竖屏切换、防截图等

1、如何查看触摸热区范围? 前只能通过自定义的方式获取responseRegion。参考文档:触摸热区设置 Entry Component struct TouchTargetExample {State text: string State x:number 0State y:number 0State reg_width:string 50%State reg_height:st…

ThinkPHP 8高效构建Web应用-获取请求对象

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…

记一次k8s下容器启动失败,容器无日志问题排查

问题 背景 本地开发时&#xff0c;某应用增加logback-spring.xml配置文件&#xff0c;加入必要的依赖&#xff1a; <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>8…

STM32烧写失败之Contents mismatch at: 0800005CH (Flash=FFH Required=29H) !

一&#xff09;问题&#xff1a;用ULINK2给STM32F103C8T6下载程序&#xff0c;下载方式设置如下&#xff1a; 出现下面两个问题&#xff1a; 1&#xff09;下载问题界面如下&#xff1a; 这个错误的信息大概可以理解为&#xff0c;在0x08000063地址上读取到flash存储为FF&am…

vscode通过ssh连接服务器实现免密登录

一、通过ssh连接服务器 1、打开vscode&#xff0c;进入拓展&#xff08;CtrlShiftX&#xff09;&#xff0c;下载拓展Remote - SSH。 2、点击远程资源管理器选项卡&#xff0c;选择远程&#xff08;隧道/SSH&#xff09;类别。 3、点击SSH配置。 4、在中间上部分弹出的配置文件…

在Nvidia Jetson ADX Orin中使用TensorRT-LLM运行llama3-8b

目录 背景&#xff1a;步骤 1.获取模型权重第 2 步&#xff1a;准备第 3 步&#xff1a;构建 TensorRT-LLM 引擎 背景&#xff1a; 大型语言模型 &#xff08;LLM&#xff09; 推理的关键瓶颈在于 GPU 内存资源短缺。因此&#xff0c;各种加速框架主要强调减少峰值 GPU 内存使…

Unity Shader学习日记 part4 Shader 基础结构

其实在这一篇之前&#xff0c;应该还有一个关于坐标空间转换的内容&#xff0c;但是内容囤积的有些多&#xff0c;就先把Shader的基础结构先记录一下。 笔记主要记录在代码中&#xff0c;所以知识点主要是图和代码的展示。 Unity Shader分类 在Unity中&#xff0c;Shader的种…

特征点检测与匹配——MATLAB R2022b

特征点检测与匹配在计算机视觉中的作用至关重要,它为图像处理、物体识别、增强现实等领域提供了坚实的基础。 目录 Harris角点检测 SIFT(尺度不变特征变换) SURF(加速稳健特征) ORB(Oriented FAST and Rotated BRIEF) 总结 特征点检测与匹配是计算机视觉中的一项基…

Airflow:HttpSensor实现API驱动数据流程

数据管道工作流通常依赖于api来访问、获取和处理来自外部系统的数据。为了处理这些场景&#xff0c;Apache Airflow提供了HttpSensor&#xff0c;这是一个内置的Sensor&#xff0c;用于监视HTTP请求的状态&#xff0c;并在满足指定条件时触发后续任务。在这篇博文中&#xff0c…

图数据库 | 17、高可用分布式设计(上)

我们在前面的文章中&#xff0c;探索了多种可能的系统扩展方式&#xff0c;以及每种扩展方式的优劣。 本篇文章将通过具体的架构设计方案来对每一种方案的设计、投入产出比、各项指标与功能&#xff0c;以及孰优孰劣等进行评价。 在设计高性能、高可用图数据库的时候&#xf…

JAVA学习记录1

文章为个人学习记录&#xff0c;仅供参考&#xff0c;如有错误请指出。 什么是JAVA&#xff1f; JAVA是一种高级的编程语言&#xff0c;可以用于开发大部分场景的软件&#xff0c;但主要用于服务器的开发。 什么是JDK&#xff1f; 类似于python使用PyCharm来编写代码&#…

css中的部分文字特性

文章目录 一、writing-mode二、word-break三、word-spacing;四、white-space五、省略 总结归纳常见文字特性&#xff0c;后续补充 一、writing-mode 默认horizontal-tbwriting-mode: vertical-lr; 从第一排开始竖着排&#xff0c;到底部再换第二排&#xff0c;文字与文字之间从…

Android wifi常见问题及分析

参考 Android Network/WiFi 那些事儿 前言 本文将讨论几个有意思的网络问题&#xff0c;同时介绍 Android 上常见WiFi 问题的分析思路。 网络基础Q & A 一. 网络分层缘由 分层想必大家很熟悉&#xff0c;是否想过为何需要这样分层&#xff1f; 网上大多都是介绍每一层…

【C语言】_指针与数组

目录 1. 数组名的含义 1.1 数组名与数组首元素的地址的联系 1.3 数组名与首元素地址相异的情况 2. 使用指针访问数组 3. 一维数组传参的本质 3.1 代码示例1&#xff1a;函数体内计算sz&#xff08;sz不作实参传递&#xff09; 3.2 代码示例2&#xff1a;sz作为实参传递 3…

IDEA 字符串拼接符号“+”位于下一行的前面,而不是当前行的末尾

效果图 IDEA 默认效果是“历史效果”&#xff0c;经过修改后为“预期效果” 设置方式 在设置中找到Editor > Code Style > Java > Wrapping and Braces > Binary expressions > 勾选 Operation sign on next line 即可实现。具体设置如图。

牛客网刷题 ——C语言初阶(2分支和循环-for)——打印菱形

1. 题目描述 用C语言在屏幕上输出以下图案&#xff1a; 2. 思路 我是先上手&#xff0c;先把上半部分打印出来&#xff0c;然后慢慢再来分析&#xff0c;下面这是我先把整个上半部分打印出来&#xff0c;因为空格不方便看是几个&#xff0c;这里先用&代替空格了 然后这里…

C# 整型、浮点型 数值范围原理分析

总目录 前言 一、整型、浮点型 数值范围列表 二、什么是大小、范围 在上面的列表中&#xff0c;每个数据类型都有自己的Range (范围) 和 Size (大小)。 1. 范围 范围好理解&#xff0c;就是对应数据类型的数据范围&#xff0c;如 sbtyte 的数据范围是 -128~127&#xff0c;超…

安装vue脚手架出现的一系列问题

安装vue脚手架出现的一系列问题 前言使用 npm 安装 vue/cli2.权限问题及解决方法一&#xff1a;可以使用管理员权限进行安装。方法二&#xff1a;更改npm全局安装路径 前言 由于已有较长时间未进行 vue 项目开发&#xff0c;今日着手准备开发一个新的 vue 项目时&#xff0c;在…

Qt 5.14.2 学习记录 —— 칠 QWidget 常用控件(2)

文章目录 1、Window Frame2、windowTitle3、windowIcon4、qrc机制5、windowOpacity 1、Window Frame 在运行Qt程序后&#xff0c;除了用户做的界面&#xff0c;最上面还有一个框&#xff0c;这就是window frame框。对于界面的元素&#xff0c;它们的原点是Qt界面的左上角或win…