Git的学习和常见问题
文章目录
- 1.初始化配置
- 2.新建仓库
- 3.添加和提交文件
- 4.git reset 回退版本
- 5.git diff 查看差异
- 6.git rm 删除文件
- 7.文件 .gitigonre
- 8.克隆远程仓库
- 9.将已有的本地仓库关联到远程仓库
- 10.分支的基本操作
- 11.解决合并冲突
- 配置问题
最近基于GeekHour的视频学习Git,记录了一些常用命令和踩过的坑。
前置操作
- 安装Git
进入官网- 在终端中输入
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公钥的配置
- 配置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
配置问题
-
Git报错
摘自Git报错
- Failed to connect to github.com port 443
解决办法:配置http代理
配置socks5代理
配置http代理git config --global http.proxy socks5 127.0.0.1:7890 git config --global https.proxy socks5 127.0.0.1:7890git 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

- Failed to connect to github.com port 443
-
克隆仓库时SSH密钥为中文名导致克隆失败

解决:解决git生成ssh密钥失败问题,本机用户名中文乱码导致密钥生成失败。- 打开gitbash

- 重新创建SSH密钥
ssh-keygen -t rsa -C "xiechimon@qq.com" # 双引号里输入自己的邮箱地址
补充:不知道为什么成功一次之后又失败了,还是用回HTTPS吧,太难了
- 打开gitbash
相关文章:
Git的学习和常见问题
文章目录 1.初始化配置2.新建仓库3.添加和提交文件4.git reset 回退版本5.git diff 查看差异6.git rm 删除文件7.文件 .gitigonre8.克隆远程仓库9.将已有的本地仓库关联到远程仓库10.分支的基本操作11.解决合并冲突配置问题 最近基于GeekHour的视频学习Git,记录了一…...
Flink源码解析之:Flink on k8s 客户端提交任务源码分析
Flink on k8s 客户端提交任务源码分析 当我们需要在代码中提交Flink job到kubernetes上时,需要如何做呢?要引入什么第三方依赖?需要提供什么内容?flink是如何将job提交到k8s上的?经过了什么样的流程,内部有…...
STLG_02_02_MS SQL - SSMS的安装和使用
SQL Server Management Studio (SSMS) 是 Microsoft 提供的一个集成环境,用于管理、开发和维护 SQL Server 数据库和 Analysis Services 数据库。 一、安装 SSMS 下载 SSMS: 访问 Microsoft 官方网站的 SSMS 下载页面。选择适合你操作系统的版本进行下载。SSMS 支持…...
git 常用命令和本地合并解决冲突
目录 一、常用命令 二、本地可视化合并分支解决冲突 一、常用命令 最近,使用mac电脑,无法直接使用小乌龟进行可视化操作,现在记录一些常用命令。 拉取: git clone <git url> 仅拉起某个单独分支: git clo…...
ThinkPHP 8高效构建Web应用-获取请求对象
【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…...
机器人技术:ModbusTCP转CCLINKIE网关应用
在当今自动化生产与智能制造领域,ModbusTCP转CC-LinkIE网关KJ-MTCPZ-CCIES的应用正日益成为提升生产效率、实现设备间高效通信的重要技术手段。这一转换技术不仅打破了不同通信协议间的壁垒,还为机器人产品的应用提供了更为广阔的舞台。ModbusTCP作为一种…...
C语言的语法
C语言的语法与应用探讨 C语言作为一种高效的程序设计语言,自1970年代问世以来,一直在科学计算、系统编程、嵌入式系统等领域中扮演着重要角色。本文将深入探讨C语言的基本语法、数据结构、控制结构以及其在实际应用中的重要性。 一、C语言基础 1.1 数…...
ElasticsearchJavaClient工具类分析
最近升级了Elasticsearch版本,从7.X升级到8.X的变化还是比较大的,原来7版本用的是RestHighLevelClient,8.X弃用RestHighLevelClient转而支持ElasticsearchClient,并且api调用方式经过建造者模式的改造,变成了链式调用。…...
Docker-文章目录
为什么互联网公司离不开Docker容器化,它到底解决了什么问题? VMware下Centos7安装步骤 Windows安装Docker Linux安装Docker Docker快速安装Tomcat 在docker中对MySQL快速部署与初始数据 利用Dockerfile构建自定义镜像 Dockerfile基础指令 Docker…...
docker安装codeserver 运行vite项目(linux)
估计很多人遇到了codeserver安装后执行vite项目 有proxy路径的问题 我这边去掉了路径代理直接端口访问 防火墙记得打开 8089 和 5173端口 code-server路径 服务器ip:8089 项目路径 服务器ip:5173 docker安装codeserver(linux) mkdir -p ~/.config dock…...
Electron快速入门——跨平台桌面端应用开发框架
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
Delphi+SQL Server实现的(GUI)户籍管理系统
1.项目简介 本项目是一个户籍管理系统,用于记录住户身份信息,提供新户登记(增加)、户籍变更(修改)、户籍注销(删除)、户籍查询、曾用名查询、迁户记录查询以及创建备份、删除备份共8…...
【JavaEE进阶】获取Cookie/Session
🍀Cookie简介 HTTP协议自身是属于 "⽆状态"协议. "⽆状态"的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系.但是实际开发中,我们很多时候是需要知道请求之间的关联关系的. 例如登陆⽹站成…...
在macOS上安装Flutter和环境配置
操作系统 Flutter 支持在 macOS 11 (Big Sur) 或更高版本上开发。本指南假定你的 Mac 默认运行 zsh shell。 如果你的 Mac 是 Apple silicon 处理器,那么有些 Flutter 组件就需要通过 Rosetta 2 来转换适配(详情)。要在 Apple silicon 处理器…...
【电子通识】PWM驱动让有刷直流电机恒流工作
电机的典型驱动方法包括电压驱动、电流驱动以及PWM驱动。本文将介绍采用PWM驱动方式的恒流工作。 首先介绍的是什么是PWM驱动的电机恒流工作,其次是PWM驱动电机恒流工作时电路的工作原理。 PWM驱动 当以恒定的电流驱动电机时,电机会怎样工作呢࿱…...
Maven在不同操作系统上如何安装?
大家好,我是袁庭新。Maven是一个重要的工具,还有很多初学者竟然不知道如何安装Maven?这篇文章将系统介绍如何在Windows、macOS、Linux操作系统上安装Maven。 Maven是一个基于Java的项目管理工具。因此,最基本的要求是在计算机上安…...
maven如何从外部导包
1.找到你项目的文件位置,将外部要导入的包复制粘贴进你当前要导入的项目下。 2.从你的项目目录下选中要导入的包的pom文件即可导包成功 注意一定是选中对应的pom文件 导入成功之后对应的pom.xml文件就会被点亮...
如何在 Hive SQL 中处理复杂的数据类型?
目录 一、复杂数据类型简介 二、创建表时使用复杂数据类型 三、插入数据到复杂数据类型的表 四、查询复杂数据类型...
数据结构:DisjointSet
Disjoint Sets意思是一系列没有重复元素的集合。一种常见的实现叫做,Disjoint-set Forest可以以接近常数的时间复杂度查询元素所属集合,用来确定两个元素是否同属一个集合等,是效率最高的常见数据结构之一。 Wiki链接:https://en…...
中国省级产业结构高级化及合理化数据测算(2000-2023年)
一、数据介绍 数据名称:中国省级产业结构高级化、泰尔指数 数据年份:2000-2023年 数据范围:31个省份 数据来源:中国统计年鉴、国家统计局 数据整理:内含原始版本、线性插值版本、ARIMA填补版本 数据说明…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

