【Git】使用笔记总结
目录
- 概述
- 安装Git
- 注册GitHub
- 配置Git
- 常用命令
- 常见场景
- 1. 修改文件
- 2. 版本回退
- 3. 分支管理
- 常见问题
- 1. git add [中文文件夹] 无法显示中文问题
- 2. git add [文件夹] 文件名中含有空格
- 3. git add 触发 LF 回车换行警告
- 4. git push 提示不存在 Origin 仓库
- 5. Git与GitHub中默认分支不一致问题
- 6. git pull 提示无法合并无关联仓库
概述
Git 是一个开源的分布式版本控制系统,用于追踪计算机文件的修改,尤其适用于源代码管理。
分布式是指每个开发者的机器上都拥有整个代码库的副本,即使离线也可以继续工作并进行版本控制。
版本管理是指 Git 允许用户对文件进行版本控制,任何时候都可以查看文件的历史版本,并支持回滚到某个特定的历史状态。
安装Git
Git 是跨平台的,官方下载网址。
安装完毕后,桌面右键可打开Git Bash命令行窗口。输入以下命令检查 Git 版本。
git --version
# git version 2.42.0.windows.1
注册GitHub
GitHub 是一个基于 Git 的远程代码托管平台,即远程仓库。一般通过SSH协议传输文件,可配置SSH密钥来避免每次推送代码均要输入用户名和密码。
- 打开
Git Bash,生成SSH密钥,默认存储路径一般是~/.ssh/id_rsa。id_rsa是私钥,不能泄露。id_rsa.pub是公钥,可用于身份认证。ssh-keygen -t rsa -b 4096 -C "your.email@example.com" - 登录GitHub,点击右上角的头像,选择Settings,选择SSH and GPG keys,点击New SSH key,填写标题并粘贴公钥内容,点击Add SSH key
- 可在终端中测试SSH连接
ssh -T git@github.com # Hi Azure-Qiu! You've successfully authenticated, but GitHub does not provide shell access. - 创建一个新的GitHub仓库,在页面右上角点击
+,选择New repository。填写仓库名、描述(可选)、选择是否公开,然后点击Create repository。
配置Git
可查看配置清单。
git config --list
初次使用需要配置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
常用命令
在需要进行版本管理的项目文件夹中,初始化 Git 仓库。Git 会在当前目录下创建一个隐藏的.git文件夹,这是 Git 仓库的核心。
# 初始化一个新的 Git 仓库,并指定初始分支为 main
git init --initial-branch=main
可以克隆一个现有的远程仓库。
仓库(
repository):又称版本库,这个目录里面的所有文件都可以被 Git 管理。
- 工作区:即项目文件目录,可以添加、删除、修改文件。
- 暂存区:
add将文件保存在暂存区。- 本地仓库:
commit是将暂存区中的文件一次性提交给本地仓库。- 远程仓库:通常使用GitHub作为远程仓库。
git clone https://github.com/username/repository.git
将文件添加到暂存区
# 添加文件
git add LED篇1.1 点亮第一个LED
# 添加所有更改
git add .# 查看当前仓库文件状态(未添加的,添加至暂存区的)
git status
提交暂存区的更改至本地仓库
# 附加本次提交的说明
git commit -m "Commit message"
# 查看提交历史,按 q 退出
git log
# 单行显示
git log --pretty=oneline
关联本地仓库与远程仓库
# origin:远程仓库默认命名
# username:GitHub用户名
# repository:新建GitHub仓库名
git remote add origin git@github.com:username/repository.git
# 列出所有存在的远程仓库
git remote
从远程仓库获取最新代码并合并到本地仓库。
先拉取后推送可以避免合并冲突
# 拉取代码
git pull origin main
# 合并不同历史
git pull origin main --allow-unrelated-histories
推送至远程仓库
# 首次推送,-u使得本地分支和远程分支建立关联
git push -u origin main
# 后续推送
git push origin main
常见场景
1. 修改文件
情景1:针对于已添加至暂存区或已提交至本地仓库的文件,git status可以查看哪些文件发生了改动,git diff可以跟踪文件中的具体改动内容。
# git diff [filename]
git diff main.c
确认修改内容无误后即可git add并git commit提交修改后的文件。
假设修改内容有误,可以通过以下命令撤销修改。
# 可以丢弃工作区的修改
git checkout -- filename
分两种情况
- 如果修改还未添加至暂存区,则回退至未修改前,包括恢复误删文件。
- 如果修改已添加至暂存区,则回退至与暂存区的版本一致
2. 版本回退
针对于已提交至本地仓库的文件,假设想要放弃本地的修改,可通过以下方式进行版本回退(本质是移动HEAD指针)。回退后git log不再显示后面的记录。
# 回退至上个版本
git reset --hard HEAD^
# 回退至上上个版本
git reset --hard HEAD^^
# 回退至前100个版本
git reset --hard HEAD~100
假设回退后不满意,又想重新回退至之前的版本,可以通过以下方式。
# git reset --hard 版本号,版本号写前几位即可
git reset --hard 19da72
# 查询版本号,会记录所有版本的更替
git reflog
3. 分支管理
为了同时推进多个任务, 可以为每个任务创建单独的分支(副本)。在副本上的操作不会影响主分支,大大提高了开发效率。
查看分支
git branch -v
创建分支,对当前主分支创建一个副本。
# test为分支名
git branch test
切换分支
git checkout test
在分支上完成修改后,即可合并至主分支。如果两个分支在某处存在不同的修改,则会产生冲突,必须人为决定。
# 先切换至主分支
git merge test
删除分支
# 先切换至主分支
git branch -d test
常见问题
1. git add [中文文件夹] 无法显示中文问题
- 在
git bash终端输入命令:git config --global core.quotepath false - 在
git bash终端窗口内右键,选择Options->Text-> Locale 选择zh_CN-> Character set 选择UTF-8
2. git add [文件夹] 文件名中含有空格
空格用" "代替,例如:添加文件名为my file的文件
git add my" "file
3. git add 触发 LF 回车换行警告
完整警告日志如下
LF will be replaced by CRLF the next time Git touches it
CR:Carriage Return,即回车,表示回到一行的开头。其转义字符为'\r',ASCII码为13,十六进制为0x0D。LF:Line Feed,即换行,表示另起一行。其转义字符为'\n',ASCII码为10,十六进制为0x0A。
在Windows、DOS系统中,使用回车+换行(\r\n)来结束一行。即 Enter 键实际插入回车与换行两个字符。例如在串行通信中,需要输出\r\n才会换行。
而在Linux、Mac系统中,只使用换行(\n)一个字符来结束一行。例如在C语言编程中,\n可以使输出语句换行。
在 git 中,默认开启换行符自动转换。可以通过关闭自动转换来消除警告。
git config --global core.autocrlf false
但不建议关闭,在跨平台开发时,该功能可以避免意外错误。建议忽略该警告。
4. git push 提示不存在 Origin 仓库
在执行git push origin master命令时,git 警告如下
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.
这是由于本地仓库未关联远程仓库。
# 列出所有存在的远程仓库
git remote
# 列出所有远程仓库的详细信息
git remote -v | git remote --verbose
# 添加一个远程仓库,url在GitHub仓库中获得
git remote add [name] [url]
# 删除一个远程仓库,其中name为远程仓库名
git remote remove [name]
5. Git与GitHub中默认分支不一致问题
Git中默认分支为master,而GitHub中默认分支为main,建议统一为main
# 重命名本地分支
# git branch -m [旧分支名] [新分支名]
git branch -m master main
6. git pull 提示无法合并无关联仓库
执行 git pull origin main时,报错信息如下
fatal: refusing to merge unrelated histories
Git 默认不允许将两个没有共同历史的仓库合并,以避免冲突或丢失数据。可采用以下命令强制合并。
git pull origin main --allow-unrelated-histories
相关文章:
【Git】使用笔记总结
目录 概述安装Git注册GitHub配置Git常用命令常见场景1. 修改文件2. 版本回退3. 分支管理 常见问题1. git add [中文文件夹] 无法显示中文问题2. git add [文件夹] 文件名中含有空格3. git add 触发 LF 回车换行警告4. git push 提示不存在 Origin 仓库5. Git与GitHub中默认分支…...
ZZNUOJ(C/C++)基础练习1000——1010(详解版)
目录 1000 : AB Problem C语言版 C版 1001 : 植树问题 C语言版 C版 1002 : 简单多项式求和 C语言版 C版 1003 : 两个整数的四则运算 C语言版 C版 1004 : 三位数的数位分离 C语言版 C版 补充代…...
搜狐Android开发(安卓)面试题及参考答案
ViewModel 的作用及原理是什么? ViewModel 是 Android 架构组件中的一部分,主要作用是在 MVVM 架构中充当数据与视图之间的桥梁。它负责为视图准备数据,并处理与数据相关的业务逻辑,让视图(Activity、Fragment 等)专注于展示数据和与用户交互。比如在一个新闻应用中,Vie…...
WPS数据分析000007
目录 一、分列 智能分列 出生日期 数值转换 公式不运算 二、数据对比 离职员工 新入职员工 都在职的员工 三、合并计算 四、拆分表格 合并表格 一、分列 智能分列 出生日期 数据求和 文本型数字左对齐;数值型数字右对齐 数值转换 方式一: 方…...
SpringCloud系列教程:微服务的未来(十八)雪崩问题、服务保护方案、Sentinel快速入门
前言 在分布式系统中,雪崩效应(Avalanche Effect)是一种常见的故障现象,通常发生在系统中某个组件出现故障时,导致其他组件级联失败,最终引发整个系统的崩溃。为了有效应对雪崩效应,服务保护方…...
把markdown转换为pdf的方法
将 Markdown 文件转换为 PDF 有多种方法,以下是几种常见的方式: 1. 使用 VS Code 和 Markdown 插件 VS Code 是一款流行的代码编辑器,支持通过插件将 Markdown 转换为 PDF。 步骤: 安装 VS Code: 下载地址ÿ…...
Controller 层优化四步曲
Controller 层优化四步曲 前言 在开发过程中,Controller 层作为系统与外界交互的桥梁,承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而,随着业务复杂度的增加,Controller 层的代码往往会变得臃肿且难以维护。 …...
Python数据分析-Python语法基础,IPython和Jupyter-Notebooks(二)
title: ‘Python数据分析:Python语法基础,IPython和Jupyter Notebooks(二)’ tags: python数据分析 categories:python数据分析 keywords:python数据分析 cover: …/img/404_icecream_whale.png description: 本文介绍python的基础语法和jup…...
Nginx 开发总结
文章目录 1. Nginx 基础概念1-1、什么是 Nginx1-2、Nginx 的工作原理1-3、Nginx 的核心特点1-4、Nginx 的常见应用场景1-5、Nginx 与 Apache 的区别1-6、 Nginx 配置的基本结构1-7、Nginx 常见指令 2. Nginx 配置基础2-1、Nginx 配置文件结构2-2、全局配置 (Global Block)2-3、…...
centos7安装SVN
[rootVM-16-3-centos ~]# yum install subversion -y [rootVM-16-3-centos ~]# svnserve --version // 创建目录 [rootVM-16-3-centos ~]# mkdir -p /opt/svn/repos // 创建新的空版本库,执行后会在repos文件夹下建立多个文件,待修改 [rootVM-16-3-cento…...
LTV预估 | 多视角对比学习框架CMLTV
😄 cmltv的loss好多哟,花样好多哟~ 文章目录 1 精简总结2 背景&挑战3 方法4 实验 ✅【arxiv-2023 华为 CMLTV】《Contrastive Multi-view Framework for Customer Lifetime Value Prediction》 论文链接: https://arxiv.or…...
llama.cpp LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK2
llama.cpp LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK2 1. LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK22. LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK23. struct ggml_cgraph * build_deepseek() and struct ggml_cgraph * build_deepseek2()References 不宜吹捧中国大语言模型的同…...
C语言自定义数据类型详解(二)——结构体类型(下)
书接上回,前面我们已经给大家介绍了如何去声明和创建一个结构体,如何初始化结构体变量等这些关于结构体的基础知识。下面我们将继续给大家介绍和结构体有关的知识: 今天的主题是:结构体大小的计算并简单了解一下位段的相关知识。…...
DeepSeek学术写作测评第二弹:数据分析、图表解读,效果怎么样?
我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 针对最近全球热议的DeepSeek开源大模型,娜姐昨天分析了关于论文润色、中译英的详细效果测评: DeepSeek学术写作测评第一弹:论文润色&#…...
深入理解 Python 中的 `__all__`:控制模块的公共接口
在 Python 编程中,模块化设计是构建可维护和可扩展代码的关键。模块不仅帮助我们组织代码,还能通过隐藏实现细节来提高代码的可读性和安全性。Python 提供了多种机制来控制模块的可见性,其中 __all__ 是一个非常重要但常被忽视的特性。本文将…...
虚幻基础07:蓝图接口
能帮到你的话,就给个赞吧 😘 文章目录 作用原理事件函数 作用 实现对象间的通知。 A 通知 B 做什么。 原理 将接口抽象为蓝图,使得任意蓝图都能直接访问。 只需要再传入对象地址,就能执行对象的功能。 事件 黄色:…...
数据结构---哈希表
基本概念 哈希函数(Hash Function)是一种将输入的数据(通常是任意大小的)映射到固定大小的输出(通常是一个固定长度的值)的函数。这个输出值通常称为“哈希值”(Hash Value)或“哈希…...
DataWhale组队学习 leetCode task4
1. 滑动窗口算法介绍 想象你正在用一台望远镜观察一片星空。望远镜的镜头大小是固定的,你可以通过滑动镜头来观察不同的星区。滑动窗口算法就像这台望远镜,它通过一个固定或可变大小的“窗口”来观察数组或字符串中的连续区间。 滑动操作:就像…...
【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程
1. 简介 UDP协议(User Datagram Protocol),全称用户数据报协议,它是一种面向非连接的协议,面向非连接指的是在正式通信前不必与对方先建立连接, 不管对方状态就直接发送。至于对方是否可以接收到这些数据内…...
【PyQt5】数据库连接失败: Driver not loaded Driver not loaded
报错内容如下: 可以看到目前所支持的数据库驱动仅有[‘QSQLITE’, ‘QMARIADB’, ‘QODBC’, ‘QODBC3’, ‘QPSQL’, ‘QPSQL7’] 我在网上查找半天解决方法未果,其中有一篇看评论反馈是可以使用的,但是PyQt5的版本有点低,5.12…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
