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填补版本 数据说明…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...
C++11 constexpr和字面类型:从入门到精通
文章目录 引言一、constexpr的基本概念与使用1.1 constexpr的定义与作用1.2 constexpr变量1.3 constexpr函数1.4 constexpr在类构造函数中的应用1.5 constexpr的优势 二、字面类型的基本概念与使用2.1 字面类型的定义与作用2.2 字面类型的应用场景2.2.1 常量定义2.2.2 模板参数…...

