【Git】使用笔记总结

目录

  • 概述
  • 安装Git
  • 注册GitHub
  • 配置Git
  • 常用命令
  • 常见场景
    • [1. 修改文件](#1. 修改文件)
    • [2. 版本回退](#2. 版本回退)
    • [3. 分支管理](#3. 分支管理)
  • 常见问题
    • [1. git add 中文文件夹 无法显示中文问题](#1. git add [中文文件夹] 无法显示中文问题)
    • [2. git add 文件夹 文件名中含有空格](#2. git add [文件夹] 文件名中含有空格)
    • [3. git add 触发 LF 回车换行警告](#3. git add 触发 LF 回车换行警告)
    • [4. git push 提示不存在 Origin 仓库](#4. git push 提示不存在 Origin 仓库)
    • [5. Git与GitHub中默认分支不一致问题](#5. Git与GitHub中默认分支不一致问题)
    • [6. git pull 提示无法合并无关联仓库](#6. git pull 提示无法合并无关联仓库)

概述

Git 是一个开源的分布式版本控制系统 ,用于追踪计算机文件的修改,尤其适用于源代码管理。

分布式 是指每个开发者的机器上都拥有整个代码库的副本 ,即使离线也可以继续工作并进行版本控制。

版本管理 是指 Git 允许用户对文件进行版本控制 ,任何时候都可以查看文件的历史版本 ,并支持回滚到某个特定的历史状态。


安装Git

Git 是跨平台的,官方下载网址。

安装完毕后,桌面右键可打开Git Bash命令行窗口。输入以下命令检查 Git 版本。

bash 复制代码
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是公钥,可用于身份认证。

    bash 复制代码
    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连接

    bash 复制代码
    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

可查看配置清单。

bash 复制代码
git config --list

初次使用需要配置用户名 和邮箱

bash 复制代码
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

常用命令

在需要进行版本管理 的项目文件夹 中,初始化 Git 仓库 。Git 会在当前目录 下创建一个隐藏 的.git文件夹,这是 Git 仓库的核心。

bash 复制代码
# 初始化一个新的 Git 仓库,并指定初始分支为 main
git init --initial-branch=main

可以克隆 一个现有的远程仓库。

仓库 (repository):又称版本库 ,这个目录里面的所有文件都可以被 Git 管理。

  • 工作区 :即项目文件目录 ,可以添加、删除、修改文件。
  • 暂存区 :add将文件 保存在暂存区。
  • 本地仓库 :commit是将暂存区 中的文件一次性提交给本地仓库。
  • 远程仓库 :通常使用GitHub 作为远程仓库。
bash 复制代码
git clone https://github.com/username/repository.git

将文件添加到暂存区

bash 复制代码
# 添加文件
git add LED篇1.1 点亮第一个LED
# 添加所有更改
git add .

# 查看当前仓库文件状态(未添加的,添加至暂存区的)
git status

提交 暂存区的更改至本地仓库

bash 复制代码
# 附加本次提交的说明
git commit -m "Commit message"
# 查看提交历史,按 q 退出
git log
# 单行显示
git log --pretty=oneline

关联本地仓库 与远程仓库

bash 复制代码
# origin:远程仓库默认命名
# username:GitHub用户名
# repository:新建GitHub仓库名
git remote add origin git@github.com:username/repository.git
# 列出所有存在的远程仓库
git remote

从远程仓库 获取最新代码 并合并到本地仓库。

先拉取 后推送 可以避免合并冲突

bash 复制代码
# 拉取代码
git pull origin main
# 合并不同历史
git pull origin main --allow-unrelated-histories

推送至远程仓库

bash 复制代码
# 首次推送,-u使得本地分支和远程分支建立关联
git push -u origin main
# 后续推送
git push origin main

常见场景

1. 修改文件

情景1 :针对于已添加至暂存区 或已提交至本地仓库 的文件,git status可以查看哪些文件发生了改动,git diff可以跟踪文件中的具体改动内容。

bash 复制代码
# git diff [filename]
git diff main.c

确认修改内容无误 后即可git add并git commit提交修改后的文件。

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

bash 复制代码
# 可以丢弃工作区的修改
git checkout -- filename

分两种情况

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

2. 版本回退

针对于已提交至本地仓库 的文件,假设想要放弃本地的修改 ,可通过以下方式进行版本回退 (本质是移动HEAD指针 )。回退后git log不再显示后面的记录。

bash 复制代码
# 回退至上个版本
git reset --hard HEAD^
# 回退至上上个版本
git reset --hard HEAD^^
# 回退至前100个版本
git reset --hard HEAD~100

假设回退后不满意,又想重新回退至之前的版本,可以通过以下方式。

bash 复制代码
# git reset --hard 版本号,版本号写前几位即可
git reset --hard 19da72
# 查询版本号,会记录所有版本的更替
git reflog

3. 分支管理

为了同时推进多个任务 , 可以为每个任务创建单独的分支 (副本 )。在副本 上的操作不会影响主分支,大大提高了开发效率。

查看分支

bash 复制代码
git branch -v

创建分支 ,对当前主分支 创建一个副本。

bash 复制代码
# test为分支名
git branch test

切换分支

bash 复制代码
git checkout test

在分支上完成修改后,即可合并至主分支 。如果两个分支 在某处存在不同的修改 ,则会产生冲突,必须人为决定。

bash 复制代码
# 先切换至主分支
git merge test

删除分支

bash 复制代码
# 先切换至主分支
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的文件

bash 复制代码
git add my" "file

3. git add 触发 LF 回车换行警告

完整警告日志如下

bash 复制代码
 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 中,默认开启换行符自动转换 。可以通过关闭自动转换 来消除警告。

bash 复制代码
git config --global core.autocrlf false

但不建议关闭,在跨平台开发时,该功能可以避免意外错误。建议忽略该警告。


4. git push 提示不存在 Origin 仓库

在执行git push origin master命令时,git 警告如下

bash 复制代码
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

这是由于本地仓库未关联远程仓库。

bash 复制代码
# 列出所有存在的远程仓库
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

bash 复制代码
# 重命名本地分支
# git branch -m [旧分支名] [新分支名]
git branch -m master main

6. git pull 提示无法合并无关联仓库

执行 git pull origin main时,报错信息如下

bash 复制代码
fatal: refusing to merge unrelated histories

Git 默认不允许将两个没有共同历史的仓库合并,以避免冲突或丢失数据。可采用以下命令强制合并。

bash 复制代码
git pull origin main --allow-unrelated-histories
相关推荐
BIBI204910 小时前
换 Git 托管平台怎么做?基于 TortoiseGit 的跨平台迁移教程
windows·git·tortoisegit·问题解决·版本控制·最佳实践
一木 之林11 小时前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
箓维16 小时前
TCP Socket的进阶实现
网络·笔记·tcp/ip
二哈赛车手16 小时前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript
星恒随风17 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
echome88818 小时前
Git 日常救急:撤销提交、找回误删文件和解决冲突
git·版本控制
智学AI19 小时前
AI博主写作素材管理方法分享:资料归集、笔记关联与文档归档
人工智能·笔记
叼烟扛炮19 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
weixin_4481199419 小时前
Datawhale Jev Cookbook 202610 笔记5
笔记
一木 之林19 小时前
Dify学习笔记 04 · 检索底座:Embedding、Rerank与向量数据库(第46-54集)
笔记·学习·embedding·dify