当前位置: 首页 > news >正文

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吧,太难了

相关文章:

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 常用命令和本地合并解决冲突

目录 一、常用命令 二、本地可视化合并分支解决冲突 一、常用命令 最近&#xff0c;使用mac电脑&#xff0c;无法直接使用小乌龟进行可视化操作&#xff0c;现在记录一些常用命令。 拉取&#xff1a; git clone <git url> 仅拉起某个单独分支&#xff1a; git clo…...

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

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

机器人技术:ModbusTCP转CCLINKIE网关应用

在当今自动化生产与智能制造领域&#xff0c;ModbusTCP转CC-LinkIE网关KJ-MTCPZ-CCIES的应用正日益成为提升生产效率、实现设备间高效通信的重要技术手段。这一转换技术不仅打破了不同通信协议间的壁垒&#xff0c;还为机器人产品的应用提供了更为广阔的舞台。ModbusTCP作为一种…...

C语言的语法

C语言的语法与应用探讨 C语言作为一种高效的程序设计语言&#xff0c;自1970年代问世以来&#xff0c;一直在科学计算、系统编程、嵌入式系统等领域中扮演着重要角色。本文将深入探讨C语言的基本语法、数据结构、控制结构以及其在实际应用中的重要性。 一、C语言基础 1.1 数…...

ElasticsearchJavaClient工具类分析

最近升级了Elasticsearch版本&#xff0c;从7.X升级到8.X的变化还是比较大的&#xff0c;原来7版本用的是RestHighLevelClient&#xff0c;8.X弃用RestHighLevelClient转而支持ElasticsearchClient&#xff0c;并且api调用方式经过建造者模式的改造&#xff0c;变成了链式调用。…...

Docker-文章目录

为什么互联网公司离不开Docker容器化&#xff0c;它到底解决了什么问题&#xff1f; 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&#xff08;linux&#xff09; mkdir -p ~/.config dock…...

Electron快速入门——跨平台桌面端应用开发框架

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…...

Delphi+SQL Server实现的(GUI)户籍管理系统

1.项目简介 本项目是一个户籍管理系统&#xff0c;用于记录住户身份信息&#xff0c;提供新户登记&#xff08;增加&#xff09;、户籍变更&#xff08;修改&#xff09;、户籍注销&#xff08;删除&#xff09;、户籍查询、曾用名查询、迁户记录查询以及创建备份、删除备份共8…...

【JavaEE进阶】获取Cookie/Session

&#x1f340;Cookie简介 HTTP协议自身是属于 "⽆状态"协议. "⽆状态"的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系.但是实际开发中,我们很多时候是需要知道请求之间的关联关系的. 例如登陆⽹站成…...

在macOS上安装Flutter和环境配置

操作系统 Flutter 支持在 macOS 11 (Big Sur) 或更高版本上开发。本指南假定你的 Mac 默认运行 zsh shell。 如果你的 Mac 是 Apple silicon 处理器&#xff0c;那么有些 Flutter 组件就需要通过 Rosetta 2 来转换适配&#xff08;详情&#xff09;。要在 Apple silicon 处理器…...

【电子通识】PWM驱动让有刷直流电机恒流工作

电机的典型驱动方法包括电压驱动、电流驱动以及PWM驱动。本文将介绍采用PWM驱动方式的恒流工作。 首先介绍的是什么是PWM驱动的电机恒流工作&#xff0c;其次是PWM驱动电机恒流工作时电路的工作原理。 PWM驱动 当以恒定的电流驱动电机时&#xff0c;电机会怎样工作呢&#xff1…...

Maven在不同操作系统上如何安装?

大家好&#xff0c;我是袁庭新。Maven是一个重要的工具&#xff0c;还有很多初学者竟然不知道如何安装Maven&#xff1f;这篇文章将系统介绍如何在Windows、macOS、Linux操作系统上安装Maven。 Maven是一个基于Java的项目管理工具。因此&#xff0c;最基本的要求是在计算机上安…...

maven如何从外部导包

1.找到你项目的文件位置&#xff0c;将外部要导入的包复制粘贴进你当前要导入的项目下。 2.从你的项目目录下选中要导入的包的pom文件即可导包成功 注意一定是选中对应的pom文件 导入成功之后对应的pom.xml文件就会被点亮...

如何在 Hive SQL 中处理复杂的数据类型?

目录 一、复杂数据类型简介 二、创建表时使用复杂数据类型 三、插入数据到复杂数据类型的表 四、查询复杂数据类型...

数据结构:DisjointSet

Disjoint Sets意思是一系列没有重复元素的集合。一种常见的实现叫做&#xff0c;Disjoint-set Forest可以以接近常数的时间复杂度查询元素所属集合&#xff0c;用来确定两个元素是否同属一个集合等&#xff0c;是效率最高的常见数据结构之一。 Wiki链接&#xff1a;https://en…...

中国省级产业结构高级化及合理化数据测算(2000-2023年)

一、数据介绍 数据名称&#xff1a;中国省级产业结构高级化、泰尔指数 数据年份&#xff1a;2000-2023年 数据范围&#xff1a;31个省份 数据来源&#xff1a;中国统计年鉴、国家统计局 数据整理&#xff1a;内含原始版本、线性插值版本、ARIMA填补版本 数据说明&#xf…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...