小白入门:GitHub 远程仓库使用全攻略
一、Git 核心概念
1. 三个工作区域
- 工作区(Working Directory):实际编辑文件的地方。
- 暂存区(Staging Area):准备提交的文件集合(使用git add操作)。
- 本地仓库(Local Repository):已提交的内容(通过git commit提交)。
- 远程仓库(Remote Repository):如 GitHub 等托管平台上的仓库。
2. 分支
在 Git 版本控制系统中,分支(Branch) 是指从主分支(如main或master)分离出来的独立开发线路,每个分支都有独立的提交历史,允许开发者并行开展不同的开发任务。例如,当开发新功能、修复特定 Bug 或进行实验性开发时,都可以创建独立分支。
分支的核心优势在于代码隔离与并行开发:
- 功能隔离:以main(或master)作为默认分支,新功能开发可在独立分支上进行,避免直接修改主线代码。例如,开发电商网站的「直播带货」功能时,可创建feature/live-selling分支,确保核心购物流程(main分支)不受影响。
- 版本管理:不同分支可对应不同版本迭代,便于团队分工协作。如dev分支用于日常开发,release分支用于预发布测试,hotfix分支用于紧急修复线上问题。
- 风险可控:若分支开发中出现错误,可随时丢弃或回滚,不会破坏主分支稳定性,降低对整个项目的影响。
二、GitHub 远程仓库搭建步骤
- 注册 GitHub 账号访问 GitHub 官网 注册账号。
- 创建新仓库
-
- 点击右上角 New repository → 填写仓库名(如 LM_Steer)→ 创建。
- 本地环境配置
-
- 安装 Git:下载地址
-
- 配置用户名和邮箱:
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
三、Git 基本操作
- 本地仓库初始化
git init # 在项目目录初始化Git仓库
- 提交文件到本地仓库
git add . # 添加所有文件到暂存区
git commit -m "初始提交" # 提交到本地仓库
- 关联远程仓库
git remote add origin git@github.com:用户名/仓库名.git # 添加远程仓库
- 推送至远程仓库
git push -u origin main # 首次推送需指定上游分支
- 拉取远程更新
git pull origin main # 拉取并合并远程更新
-
分支 track(追踪分支)介绍
在 GitHub 协作开发中,追踪分支是连接本地分支与远程分支的桥梁。它具有两大核心优势:
- 自动同步更新:避免手动频繁拉取代码,执行git pull或git push命令时,本地分支会自动与追踪的远程分支交互。
- 明确关联关系:清晰展示本地与远程分支的对应关系,便于团队快速掌握代码同步状态。
创建方式
追踪分支的创建分为两种场景:
- 新建分支时直接追踪:使用命令 git checkout -b feature/xxx origin/feature/xxx,在创建本地feature/xxx分支的同时,直接设置为追踪远程origin/feature/xxx分支。
- 已有分支设置追踪:通过命令 git branch --set-upstream-to=origin/xxx local_xxx,将现有本地分支local_xxx关联至远程origin/xxx分支。
- 如何查看并删除远程关联的仓库:
-
- 查看远程仓库:在本地仓库的命令行中,输入 git remote -v 命令,即可列出所有已关联的远程仓库及其对应的 URL 地址。例如,输出可能类似 origin https://github.com/yourusername/yourrepository.git (fetch) 和 origin https://github.com/yourusername/yourrepository.git (push),其中 origin 是默认的远程仓库别名。
-
- 删除远程仓库:若要删除某个远程仓库关联,使用 git remote remove <远程仓库别名> 命令,如 git remote remove origin 即可删除别名为 origin 的远程仓库关联。也可以使用 git remote rm <远程仓库别名> 达到同样效果 。
四、典型问题与解决方案
- 问题 1:认证失败(Authentication failed)
-
- 原因:用户名 / 密码错误,或 GitHub 已禁用密码认证。
-
- 解决方案:
-
-
- 生成 SSH 密钥:打开终端(Windows 用户可使用 Git Bash),输入ssh-keygen -t ed25519 -C "your_email@example.com",其中邮箱地址替换为你的 GitHub 注册邮箱,按三次回车键完成密钥生成。密钥文件默认存储在用户主目录的.ssh文件夹下。注意添加环境变量,否则可能无法使用ssh-keygen
-
-
-
- 添加公钥到 GitHub:找到生成的公钥文件(后缀为.pub),使用文本编辑器打开,复制全部内容。登录 GitHub,进入Settings -> SSH and GPG keys,点击New SSH key,粘贴公钥内容并添加。
-
-
-
- 测试 SSH 连接:在终端输入ssh -T git@github.com,首次连接会提示确认,输入yes。若出现Hi [你的用户名]! You've successfully authenticated, but GitHub does not provide shell access.,则表示 SSH 密钥配置成功,后续可通过 SSH 协议安全高效地操作远程仓库 。
-
ssh-keygen -t ed25519 -C "your_email@example.com" # 生成密钥
# 将公钥(~/.ssh/id_ed25519.pub)添加到GitHub
-
-
- 使用个人访问令牌(PAT):GitHub Settings → Developer settings → Personal access tokens → 生成令牌,推送时用令牌替代密码。
-
- 问题 2:无法使用 ssh-keygen 命令
-
- 原因:Windows 未安装 OpenSSH 客户端。
-
- 解决方案:
# 以管理员身份运行PowerShell
Add-WindowsCapability -Online -Name OpenSSH.Client~0.0.1.0
或安装 Git for Windows。
- 问题 3:推送被拒绝(non-fast-forward)
-
- 原因:远程分支有新提交,本地历史落后。
-
- 解决方案:
git pull origin 分支名 # 先拉取合并
# 若有冲突,解决后再推送
- 问题 4:合并无关历史(refusing to merge unrelated histories)
-
- 原因:本地与远程仓库无共同提交历史。
-
- 解决方案:
git pull origin 分支名 --allow-unrelated-histories # 强制合并
- 问题 5:修改 .gitignore 不生效
-
- 原因:已跟踪的文件不受新规则影响。
-
- 解决方案:
git rm -r --cached . # 清除缓存
git add . # 重新添加
git commit -m "更新.gitignore
- 问题6:使用push命令时,它会推送本地仓库中所有未推送的commit。若不想将所有修改一次性推送,避免影响主分支稳定性,建议新建一个分支进行操作。具体可通过git branch new_branch_name创建新分支,再使用git checkout new_branch_name切换到新分支,在该分支上进行开发与提交,最后按需将分支合并到主分支。
五、分支管理
- 查看分支
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支
- 创建与切换分支
git checkout -b 新分支名 # 创建并切换到新分支
- 合并分支
git checkout main # 切换到目标分支
git merge 源分支名 # 合并源分支到当前分支
六、最佳实践
- 保持 main 分支稳定:仅合并经过测试的代码。
- 使用分支开发新功能:避免影响主线。
- 定期同步远程分支:
git fetch origin # 更新远程分支引用
- 通过 Pull Request 合并代码:便于代码审查。
七、常见命令速查表
操作 | 命令 |
初始化仓库 | git init |
添加文件到暂存区 | git add <文件> |
提交到本地仓库 | git commit -m "描述" |
查看状态 | git status |
查看提交历史 | git log |
拉取远程更新 | git pull origin 分支名 |
推送至远程 | git push origin 分支名 |
创建并切换分支 | git checkout -b 分支名 |
切换分支 | git checkout 分支名 |
合并分支 | git merge 分支名 |
删除分支 | git branch -d 分支名 |
通过以上步骤,你可以完成 GitHub 远程仓库的搭建与基本操作,解决常见问题,并建立规范的开发流程。
相关文章:
小白入门:GitHub 远程仓库使用全攻略
一、Git 核心概念 1. 三个工作区域 工作区(Working Directory):实际编辑文件的地方。 暂存区(Staging Area):准备提交的文件集合(使用git add操作)。 本地仓库(Local…...

RPC与SOAP的区别
一.RPC(远程过程调用)和SOAP(简单对象访问协议)均用于实现分布式系统中的远程通信,但两者在设计理念、协议实现及应用场景上存在显著差异。 二.对比 1.设计理念 2.协议规范 3.技术特性 4.典型应用场景 5.总结 三.总结…...

Day11-苍穹外卖(数据统计篇)
前言: 今天写day11的内容,主要讲了四个统计接口的制作。看起来内容较多,其实代码逻辑都是相似的,这里我们过一遍。 今日所学: Apache ECharts营业额统计用户统计订单统计销量排行统计 1. Apache ECharts 1.1 介绍 A…...

Tomcat简述介绍
文章目录 Web服务器Tomcat的作用Tomcat分析目录结构 Web服务器 Web服务器的作用是接收客户端的请求,给客户端作出响应。 知名Java Web服务器 Tomcat(Apache):用来开发学习使用;免费,开源JBoss࿰…...

《从零开始:Spring Cloud Eureka 配置与服务注册全流程》
关于Eureka的学习,主要学习如何搭建Eureka,将order-service和product-service都注册到Eureka。 1.为什么使用Eureka? 我在实现一个查询订单功能时,希望可以根据订单中productId去获取对应商品的详细信息,但是产品服务和订单服…...
如何保证RabbitMQ消息的顺序性?
保证RabbitMQ消息的顺序性是一个常见的需求,尤其是在处理需要严格顺序的消息时。然而,默认情况下,RabbitMQ不保证消息的全局顺序,因为消息可能会通过不同的路径(例如不同的网络连接或线程)到达队列…...

FPGA学习知识(汇总)
1. wire与reg理解,阻塞与非阻塞 2. 时序取值,时钟触发沿向左看 3. ip核/setup debug 添加 ila 一、ila使用小技巧 二、同步复位、异步复位和异步复位同步释放 设计复位设计,尽量使用 异步复位同步释放;尽管该方法仍然对毛刺敏感…...
c语言 写一个五子棋
c语言 IsWin判赢 display 画 10 x 10 的棋盘 判断落子的坐标是否已有棋子 判断落子坐标范围是否超出范围 // 五子棋 #include <stdio.h> #include <stdlib.h>// 画棋盘 10 x 10的棋盘,len为行数 void display(char map[][10], int len) {system(&q…...

Redisson分布式锁-锁的可重入、可重试、WatchDog超时续约、multLock联锁(一文全讲透,超详细!!!)
本文涉及到使用Redis实现基础分布式锁以及Lua脚本的内容,如有需要可以先参考博主的上一篇文章:Redis实现-优惠卷秒杀(基础版本) 一、功能介绍 (1)前面分布式锁存在的问题 在JDK当中就存在一种可重入锁ReentrantLock,可重入指的是在同一线…...
Python爬虫实战:研究源码还原技术,实现逆向解密
1. 引言 在网络爬虫技术实际应用中,目标网站常采用各种加密手段保护数据传输和业务逻辑。传统逆向解密方法依赖人工分析和调试,效率低下且易出错。随着 Web 应用复杂度提升,特别是 JavaScript 混淆技术广泛应用,传统方法面临更大挑战。 本文提出基于源码还原的逆向解密方法…...
WordPress Relevanssi插件时间型SQL注入漏洞(CVE-2025-4396)
免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...
Adobe Illustrator学习备忘
1.移动画板:需按住空格键加鼠标一块才能拖动 2.放大缩小画板:按住Alt键加鼠标滚轮 3.撤回:CtrlZ 4.钢笔练习网站:The Bzier Game...
C#中的dynamic与var:看似相似却迥然不同
在C#编程的世界里,var和dynamic这两个关键字常常让初学者感到困惑。它们看起来都在定义变量时省略了显式类型声明,但实际上它们的工作方式和应用场景有着天壤之别。今天,让我们一起揭开这两个关键字的神秘面纱。 var:编译时的类型…...
求职困境:开发、AI、运维、自动化
文章目录 问:我的技术栈是web全栈(js,css,html,react,typscript),C开发,python开发,音视频图像开发,神经网络深度学习开发,运维&#…...

语言模型:AM-Thinking-v1 能和大参数语言模型媲美的 32B 单卡推理模型
介绍 a-m-team 是北科 (Ke.com) 的一个内部团队,致力于探索 AGI 技术。这是一个专注于增强推理能力的 32B 密集语言模型。 a-m-team / AM-Thinking-v1 是其旗下的一个语言模型,采用低成本的方式能实现和大参数模型媲美。 DeepSe…...

ChatGPT:OpenAI Codex—一款基于云的软件工程 AI 代理,赋能 ChatGPT,革新软件开发模式
ChatGPT:OpenAI Codex—一款基于云的软件工程 AI 代理,赋能 ChatGPT,革新软件开发模式 导读:2025年5月16日,OpenAI 发布了 Codex,一个基于云的软件工程 AI 代理,它集成在 ChatGPT 中,…...
docker compose up -d 是一个用于 通过 Docker Compose 在后台启动多容器应用 的命令
docker compose 表示调用 Docker Compose 工具,用于管理基于 YAML 文件定义的多容器应用。 up 核心指令,作用是根据 docker-compose.yml 文件中的配置,创建并启动所有定义的服务、网络、卷等资源。 如果容器未创建,会先构建镜像&…...

智能视觉检测技术:制造业质量管控的“隐形守护者”
在工业4.0浪潮的推动下,制造业正经历一场以智能化为核心的变革。传统人工质检模式因效率低、误差率高、成本高昂等问题,逐渐难以满足现代生产对高精度、高速度的需求。智能视觉检测技术作为人工智能与机器视觉融合的产物,正成为制造业质量管控…...

利用html制作简历网页和求职信息网页
前言 大家好,我是maybe。今天下午初步学习了html的基础知识。做了两个小网页,一个网页是简历网页,一个网页是求职信息填写网页。跟大家分享一波~ 说明:我不打算上传图片。所以如果有朋友按照我的代码运行网页,会出现一个没有图片…...
Problem E: List练习
1.题目描述 运用List完成下面的要求: 1) 创建一个List,在List中增加三个工人,基本信息如下: 姓名 年龄 工资 Tom 18 3000 Peter 25 3500 Mark 22 3200 2) 插入一个工人,信息为:姓名:Robert࿰…...

卷积神经网络进阶:转置卷积与棋盘效应详解
【内容摘要】 本文深入解析卷积神经网络中的转置卷积(反卷积)技术,重点阐述标准卷积与转置卷积的计算过程、转置卷积的上采样作用,以及其常见问题——棋盘效应的产生原因与解决方法,为图像分割、超分辨率等任务提供理论…...
用 Kotlin 脚本(KTS)重塑 Android 工程效能:2000 字终极实践指南
一、KTS 核心优势解码 1.1 类型安全革命 对比 Groovy 的动态类型缺陷,KTS 的静态类型系统能在 编译期拦截 90% 的配置错误: // Groovy 的危险操作(运行时才会报错) dependencies {implementation "com.squareup.retrofit:…...

2025年5月13日第一轮
1.百词斩 2.安全状态和死锁 3.银行家算法和状态图 4.Vue运行 5.英语听力 6.词汇 7.英语 长篇:数学竞赛 8.数学 间断点类型和数量 The rapid development of artificial intelligence has led to widerspareasd concreasns about job displacemant.As AI technology conti…...
HarmonyOs开发之———使用HTTP访问网络资源
谢谢关注!! 前言:上一篇文章主要介绍HarmonyOs开发之———Video组件的使用:HarmonyOs开发之———Video组件的使用_华为 video标签查看-CSDN博客 HarmonyOS 网络开发入门:使用 HTTP 访问网络资源 HarmonyOS 作为新一代智能终端…...

小结:Android系统架构
https://developer.android.com/topic/architecture?hlzh-cn Android系统的架构,分为四个主要层次:应用程序层、应用框架层、库和运行时层以及Linux内核层。: 1. 应用程序层(Applications) 功能:这一层包…...
单物理机上部署多个TaskManager与调优 Flink 集群
单物理机上如何高效部署与调优 Flink 集群 一、硬件环境概述 单物理机,4CPU,16G 内存,旨在充分利用硬件资源,部署 Apache Flink 集群,实现高效的分布式流处理任务。 二、Flink 集群配置 (一)配置文件说明 进入$FLINK_HOME/conf目录。备份原始配置文件:cp flink-con…...

基于C#的MQTT通信实战:从EMQX搭建到发布订阅全解析
MQTT(Message Queueing Telemetry Transport) 消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点。 它被设计用于低带宽,不稳定或高延迟的…...
VUE3_ref和useTemplateRef获取组件实例,ref获取dom对象
旧写法 ref的字符串需要跟js中ref定义的变量名称一样 类型丢失,无法获取到ref定义的title类型 <template><div><h1 ref"title">Hello Vue3.5</h1></div> </template><script setup>import { ref, onMounted } …...

ISP中拖影问题的处理
有时候会出现如下的阴影问题该如何处理呢?本文将提供几个思路。 1、降低曝光时间 如果曝光时间过大,会统计整个曝光时间内的图像信息,就会导致拖影的产生,这个时候可以考虑降低一下曝光时间。 2、时域降噪过大 只要明白时域降噪…...
C++.备考知识点
C++备考知识点 1. 循环结构与等差数列求和1.1 逐天累加实现方法1.2 等差数列求和公式优化2.1 数字转字符串方法2.2 首尾字符交换实现2.3 去除前导零技巧3.1 异或运算基本性质3.2 找出出现奇数次的数问题分析示例代码输出结果扩展应用4.1 字符位移量计算问题分析示例代码输出结果…...