【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密钥来避免每次推送代码均要输入用户名和密码。

  1. 打开Git Bash,生成SSH密钥默认存储路径一般是~/.ssh/id_rsa

    id_rsa私钥,不能泄露。id_rsa.pub公钥,可用于身份认证。

    ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
    
  2. 登录GitHub,点击右上角的头像,选择Settings,选择SSH and GPG keys,点击New SSH key,填写标题并粘贴公钥内容,点击Add SSH key
  3. 可在终端测试SSH连接
    ssh -T git@github.com
    # Hi Azure-Qiu! You've successfully authenticated, but GitHub does not provide shell access.
    
  4. 创建一个新的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 addgit commit提交修改后的文件。

假设修改内容有误,可以通过以下命令撤销修改

# 可以丢弃工作区的修改
git checkout -- filename

分两种情况

  1. 如果修改还未添加至暂存区,则回退至未修改前,包括恢复误删文件
  2. 如果修改已添加至暂存区,则回退至与暂存区的版本一致

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 [中文文件夹] 无法显示中文问题

  1. git bash终端输入命令:git config --global core.quotepath false
  2. 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
  • CRCarriage Return,即回车,表示回到一行的开头。其转义字符'\r'ASCII码13十六进制0x0D
  • LFLine Feed,即换行,表示另起一行。其转义字符'\n'ASCII码10十六进制0x0A

WindowsDOS系统中,使用回车+换行\r\n)来结束一行。即 Enter 键实际插入回车换行两个字符。例如在串行通信中,需要输出\r\n才会换行。

而在LinuxMac系统中,只使用换行\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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Versal - 基础3(AXI NoC 专题+仿真+QoS)

目录 1. 简介 2. 示例 2.1 示例说明 2.2 创建项目 2.2.1 平台信息 2.2.2 AXI NoC Automation 2.2.3 创建时钟和复位 2.3 配置 NoC 2.4 配置 AXI Traffic 2.5 配置 Memory Size 2.6 Validate BD 2.7 添加观察信号 2.8 运行仿真 2.9 查看结果 2.9.1 整体波形 2.9…

【PostgreSQL内核学习 —— (WindowAgg(一))】

WindowAgg 窗口函数介绍WindowAgg理论层面源码层面WindowObjectData 结构体WindowStatePerFuncData 结构体WindowStatePerAggData 结构体eval_windowaggregates 函数update_frameheadpos 函数 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊…

RubyFPV开源代码之系统简介

RubyFPV开源代码之系统简介 1. 源由2. 工程架构3. 特性介绍(软件)3.1 特性亮点3.2 数字优势3.3 使用功能 4. DEMO推荐(硬件)4.1 天空端4.2 地面端4.3 按键硬件Raspberry PiRadxa 3W/E/C 5. 软件设计6. 参考资料 1. 源由 RubyFPV以…

MySQL(单表访问)

今天是新年,祝大家新年快乐,但是生活还是得继续。 后面也会持续更新,学到新东西会在其中补充。 建议按顺序食用,欢迎批评或者交流! 缺什么东西欢迎评论!我都会及时修改的! 大部分截图和文章采…

汇编的使用总结

一、汇编的组成 1、汇编指令(指令集) 数据处理指令: 数据搬移指令 数据移位指令 位运算指令 算术运算指令 比较指令 跳转指令 内存读写指令 状态寄存器传送指令 异常产生指令等 2、伪指令 不是汇编指令,但是可以起到指令的作用,伪…

汇编基础语法及其示例

1.汇编指令 1.1汇编指令的基本格式 <opcode>{<cond>}{s} <Rd> , <Rn> , <shifter_operand> <功能码>{<条件码>}{cpsr影响位} <目标寄存器> , <第一操作寄存器> , <第二操作数> 注&#xff1a;第一操作寄存器…

FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验

文章目录 FLTK - FLTK1.4.1 - 搭建模板&#xff0c;将FLTK自带的实现搬过来做实验概述笔记my_fltk_test.cppfltk_test.hfltk_test.cxx用adjuster工程试了一下&#xff0c;好使。END FLTK - FLTK1.4.1 - 搭建模板&#xff0c;将FLTK自带的实现搬过来做实验 概述 用fluid搭建UI…

基于物联网设计的疫苗冷链物流监测系统

一、前言 1.1 项目开发背景 随着全球经济的发展和物流行业的不断创新&#xff0c;疫苗和生物制品的运输要求变得越来越高。尤其是疫苗的冷链物流&#xff0c;温度、湿度等环境因素的控制直接关系到疫苗的质量和效力&#xff0c;因此高效、可靠的冷链监控系统显得尤为重要。冷…

JVM对象分配内存如何保证线程安全?

大家好&#xff0c;我是锋哥。今天分享关于【JVM对象分配内存如何保证线程安全?】面试题。希望对大家有帮助&#xff1b; JVM对象分配内存如何保证线程安全? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;对象的内存分配是通过堆内存进行的。…

移动光猫怎么自己改桥接模式?

环境&#xff1a; 型号H3-8s 问题描述&#xff1a; 家里宽带用的是H3-8s 光猫&#xff0c;想改桥接模式。 解决方案&#xff1a; 1.默认管理员账号和密码&#xff1a; 账号&#xff1a;CMCCAdmin 密码&#xff1a;aDm8H%MdAWEB页面我试了登陆不了&#xff0c;显示错误 …

大数据Hadoop入门3

第五部分&#xff08;Apache Hive DML语句和函数使用&#xff09; 1.课程内容大纲和学习目标 2.Hive SQL-DML-load加载数据操作 下面我们随机创建文件尝试一下 先创建一个hivedata文件夹 在这个文件夹中写一个1.txt文件 下面使用beeline创建一张表 只要将1.txt文件放在t_1文件…

2025.1.26机器学习笔记:C-RNN-GAN文献阅读

2025.1.26周报 文献阅读题目信息摘要Abstract创新点网络架构实验结论缺点以及后续展望 总结 文献阅读 题目信息 题目&#xff1a; C-RNN-GAN: Continuous recurrent neural networks with adversarial training会议期刊&#xff1a; NIPS作者&#xff1a; Olof Mogren发表时间…

基于物联网的火灾报警器设计与实现(论文+源码)

1 总体方案设计 本次基于物联网的火灾报警器&#xff0c;其系统总体架构如图2.1所示&#xff0c;采用STM32f103单片机作为控制器&#xff0c;通过DS18B20传感器实现温度检测&#xff1b;通过MQ-2烟雾传感器实现烟雾检测&#xff1b;.通过火焰传感器实现火焰检测&#xff0c;当…

ResNeSt: Split-Attention Networks论文学习笔记

这张图展示了一个名为“Split-Attention”的神经网络结构&#xff0c;该结构在一个基数组&#xff08;cardinal group&#xff09;内进行操作。基数组通常指的是在神经网络中处理的一组特征或通道。图中展示了如何通过一系列操作来实现对输入特征的注意力机制。 以下是图中各部…

模糊综合评价

模糊综合评价的特点主要体现在以下几个方面&#xff1a; 一、系统性强 模糊综合评价法能够综合考虑多种因素的影响&#xff0c;将定性指标和定量指标相结合&#xff0c;对评价对象进行全面、系统的分析。这种方法避免了单一指标评价的片面性&#xff0c;提高了评价的准确性和…

宫本茂的游戏设计思想:有趣与风格化

作为独立游戏开发者之一&#xff0c;看到任天堂宫本茂20年前的言论后&#xff0c;深感认同。 游戏研发思想&#xff0c;与企业战略是互为表里的&#xff0c;游戏是企业战略的具体战术体现&#xff0c;虚空理念的有形载体。 任天堂长盛不衰的关键就是靠简单有趣的游戏&#xf…

deepseek-r1 本地部署

deepseek 最近太火了 1&#xff1a;环境 win10 cpu 6c 内存 16G 2: 部署 1>首先下载ollama 官网&#xff1a;https://ollama.com ollama 安装在c盘 模型可以配置下载到其他盘 OLLAMA_MODELS D:\Ollama 2>下载模型并运行 ollama run deepseek-r1:<标签> 1.5b 7b 8…

electron typescript运行并设置eslint检测

目录 一、初始化package.json 二、安装依赖 1、安装electron 2、安装typescript依赖 3、安装eslint 三、项目结构 四、配置启动项 一、初始化package.json 我的&#xff1a;这里的"main"没太大影响&#xff0c;看后面的步骤。 {"name": "xlo…

每日一题-判断是否是平衡二叉树

判断是否是平衡二叉树 题目描述数据范围题解解题思路递归算法代码实现代码解析时间和空间复杂度分析示例示例 1示例 2 总结 ) 题目描述 输入一棵节点数为 n 的二叉树&#xff0c;判断该二叉树是否是平衡二叉树。平衡二叉树定义为&#xff1a; 它是一棵空树。或者它的左右子树…

WS2812 梳理和颜色表示方法的对比:RGB和HSV

WS2812 WS2812是一种可编程的LED灯&#xff0c;具有RGB显示效果&#xff0c;可显示的颜色数量为2^24。 常用颜色表示方法 表示方法&#xff1a; RGB 表示 加法混色原理&#xff1a;RGB 颜色模型基于加法混色原理&#xff0c;将红&#xff08;Red&#xff09;、绿&#xff08…