小白入门: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 远程仓库搭建步骤
  1. 注册 GitHub 账号访问 GitHub 官网 注册账号。
  1. 创建新仓库
    • 点击右上角 New repository → 填写仓库名(如 LM_Steer)→ 创建。
  1. 本地环境配置
    • 安装 Git:下载地址
    • 配置用户名和邮箱:

git config --global user.name "Your Name"

git config --global user.email "your_email@example.com"

三、Git 基本操作
  1. 本地仓库初始化

git init # 在项目目录初始化Git仓库

  1. 提交文件到本地仓库

git add . # 添加所有文件到暂存区

git commit -m "初始提交" # 提交到本地仓库

  1. 关联远程仓库

git remote add origin git@github.com:用户名/仓库名.git # 添加远程仓库

  1. 推送至远程仓库

git push -u origin main # 首次推送需指定上游分支

  1. 拉取远程更新

git pull origin main # 拉取并合并远程更新

  1. 分支 track(追踪分支)介绍

在 GitHub 协作开发中,追踪分支是连接本地分支与远程分支的桥梁。它具有两大核心优势:

  1. 自动同步更新:避免手动频繁拉取代码,执行git pull或git push命令时,本地分支会自动与追踪的远程分支交互。
  1. 明确关联关系:清晰展示本地与远程分支的对应关系,便于团队快速掌握代码同步状态。
创建方式

追踪分支的创建分为两种场景:

  • 新建分支时直接追踪:使用命令 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分支。
  1. 如何查看并删除远程关联的仓库
    • 查看远程仓库:在本地仓库的命令行中,输入 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. 问题 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 → 生成令牌,推送时用令牌替代密码。
  1. 问题 2:无法使用 ssh-keygen 命令
    • 原因:Windows 未安装 OpenSSH 客户端。
    • 解决方案

# 以管理员身份运行PowerShell

Add-WindowsCapability -Online -Name OpenSSH.Client~0.0.1.0

或安装 Git for Windows。

  1. 问题 3:推送被拒绝(non-fast-forward)
    • 原因:远程分支有新提交,本地历史落后。
    • 解决方案

git pull origin 分支名 # 先拉取合并

# 若有冲突,解决后再推送

  1. 问题 4:合并无关历史(refusing to merge unrelated histories)
    • 原因:本地与远程仓库无共同提交历史。
    • 解决方案

git pull origin 分支名 --allow-unrelated-histories # 强制合并

  1. 问题 5:修改 .gitignore 不生效
    • 原因:已跟踪的文件不受新规则影响。
    • 解决方案

git rm -r --cached . # 清除缓存

git add . # 重新添加

git commit -m "更新.gitignore

  1. 问题6:使用push命令时,它会推送本地仓库中所有未推送的commit。若不想将所有修改一次性推送,避免影响主分支稳定性,建议新建一个分支进行操作。具体可通过git branch new_branch_name创建新分支,再使用git checkout new_branch_name切换到新分支,在该分支上进行开发与提交,最后按需将分支合并到主分支。
五、分支管理
  1. 查看分支

git branch # 查看本地分支

git branch -r # 查看远程分支

git branch -a # 查看所有分支

  1. 创建与切换分支

git checkout -b 新分支名 # 创建并切换到新分支

  1. 合并分支

git checkout main # 切换到目标分支

git merge 源分支名 # 合并源分支到当前分支

六、最佳实践
  1. 保持 main 分支稳定:仅合并经过测试的代码。
  1. 使用分支开发新功能:避免影响主线。
  1. 定期同步远程分支

git fetch origin # 更新远程分支引用

  1. 通过 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 远程仓库的搭建与基本操作,解决常见问题,并建立规范的开发流程。

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

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

相关文章

[创业之路-370]:企业战略管理案例分析-10-战略制定-差距分析的案例之小米

战略制定-差距分析的案例之小米 在战略制定过程中&#xff0c;小米通过差距分析明确自身与市场机会之间的差距&#xff0c;并制定针对性战略&#xff0c;实现快速发展。以下以小米在智能手机市场的机会差距分析为例&#xff0c;说明其战略制定过程。 一、市场机会识别与差距分…

Index-AniSora模型论文速读:基于人工反馈的动漫视频生成

Aligning Anime Video Generation with Human Feedback 一、引言 论文开头指出&#xff0c;尽管视频生成模型不断涌现&#xff0c;但动漫视频生成面临动漫数据稀缺和运动模式异常的挑战&#xff0c;导致生成视频存在运动失真和闪烁伪影等问题&#xff0c;难以满足人类偏好。现…

第 4 章:网络与总线——CAN / Ethernet / USB-OTG

本章目标: 深入理解三种关键通信总线(CAN、Ethernet、USB-OTG)的协议架构、硬件接口与软件驱动 掌握 STM32(或同类 MCU)中各总线的寄存器配置、中断/DMA 驱动框架 通过实战案例,实现基于 CAN 总线的节点通信、基于 Ethernet 的 TCP/IP 通信,以及基于 USB-OTG 的虚拟串口…

数据结构-DAY05

一、栈的概念 1.栈是限定仅在表尾进行插入和删除操作的线性表。先进后出、后进先出 栈顶:允许操作的一端 栈底:不允许操作的一端入栈&#xff0c;出栈。 栈分为&#xff1a;顺序栈 链式栈 2.栈结构是在堆区创建的 3.优先级就是通过栈来解决的 先进后出…

leetcode 153. Find Minimum in Rotated Sorted Array

题目描述 分析 可以发现一个规律&#xff1a; 假如整个数组最后一个元素是x。 最小值左侧&#xff08;不含最小值自己&#xff09;的元素全部大于x。 最小值右侧&#xff08;包含最小值自己&#xff0c;不包含x&#xff09;的元素全部小于x。 如果整个数组是有序的&#x…

如何在 AOSP 中判断一个源文件属于哪个模块(以 CameraService 为例)

如何在 AOSP 中判断一个源文件属于哪个模块&#xff08;以 CameraService 为例&#xff09; 在 AOSP 开发中&#xff0c;经常需要修改底层 C 代码&#xff08;如 CameraService.cpp&#xff09;&#xff0c;但很多人会遇到一个问题&#xff1a; 我修改了某个 .cpp 文件&#x…

云原生主要架构模式

云原生(Cloud Native)是一种利用云计算的优势来构建和运行可扩展、弹性和高效应用程序的方法。它不仅仅是技术的集合,更是一种架构和设计理念。本文将围绕你提出的几部分,深入探讨云原生主要的架构模式,帮助你理解如何利用这些模式构建现代化的应用。 1. 服务化架构模式(…

深入理解MySQL结构与执行流程

标题&#xff1a;深入理解MySQL结构与执行流程 MySQL以其开源、灵活性和强大的功能成为了最受欢迎的关系型数据库管理系统之一。无论是初创公司还是大型企业&#xff0c;都广泛使用MySQL来存储和管理数据。为了帮助大家更好地理解和优化MySQL的性能&#xff0c;本文将详细讲解…

Python web 开发 Flask HTTP 服务

Flask 是一个轻量级的 Web 应用框架&#xff0c;它基于 Python 编写&#xff0c;特别适合构建简单的 Web 应用和 RESTful API。Flask 的设计理念是提供尽可能少的约定和配置&#xff0c;从而让开发者能够灵活地构建自己的 Web 应用。 https://andi.cn/page/622189.html

BMVC2023 | 多样化高层特征以提升对抗迁移性

Diversifying the High-level Features for better Adversarial Transferability 摘要-Abstract引言-Introduction相关工作-Related Work方法-Methodology实验-Experiments结论-Conclusion 论文链接 GitHub链接 本文 “Diversifying the High-level Features for better Adve…

虚幻引擎5-Unreal Engine笔记之摄像头camera

虚幻引擎5-Unreal Engine笔记之摄像头camera code review! 目录 第一部分&#xff1a;摄像头的基础概念 1.1 UE5 中摄像头的定义与作用1.2 UE5 中摄像头的类型与分类 第二部分&#xff1a;摄像头的代码结构与分类 2.1 摄像头是类还是组件&#xff1f;2.2 组件的本质&#xff…

【大数据】MapReduce 编程-- PageRank--网页排名算法,用于衡量网页“重要性”-排序网页

PageRank 是 Google 创始人拉里佩奇&#xff08;Larry Page&#xff09;和谢尔盖布林&#xff08;Sergey Brin&#xff09;在 1998 年提出的一种网页排名算法&#xff0c;用于衡量网页“重要性”的一种方式。它是搜索引擎中用于排序网页的一种基础算法 一个网页越是被其他重要…

React Flow 数据持久化:Django 后端存储与加载的最佳实践(含详细代码解析)

在构建 React Flow 应用时&#xff0c;前端呈现的节点与连线构成的可视化流程只是冰山一角&#xff0c;其背后的数据持久化与灵活调取才是确保应用稳定运行、支持用户数据回溯与协作的关键。因此&#xff0c;后端存储与加载 React Flow 信息的环节&#xff0c;就如同整个应用的…

深度学习中的归一化:提升模型性能的关键因素

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4-turbo模型辅助完成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认…

Pandas:Series和DataFrame的概念、常用属性和方法

本文目录&#xff1a; 一、Series和Dataframe的概念二、创建Series对象三、创建Dataframe对象&#xff08;一&#xff09;Series1.Series的常用属性总结如下&#xff1a;2.Series的常用方法总结如下&#xff1a; &#xff08;二&#xff09;Dataframe1.Dataframe的常用属性2.Da…

数据中心Overlay解决方案

文档围绕数据中心 Overlay 解决方案展开,指出数据中心向大集中、虚拟化、云业务演进,传统架构存在网络规划复杂、弹性不足、业务扩展受限等问题。Overlay 网络在物理网络上构建虚拟网络,实现名址分离、网络与物理解耦,支持业务灵活部署。方案采用VXLAN 技术(如 SDN 控制模…

SpringBoot 项目实现操作日志的记录(使用 AOP 注解模式)

本文是博主在做关于如何记录用户操作日志时做的记录&#xff0c;常见的项目中难免存在一些需要记录重要日志的部分&#xff0c;例如权限和角色设定&#xff0c;重要数据的操作等部分。 博主使用 Spring 中的 AOP 功能&#xff0c;结合注解的方式&#xff0c;对用户操作过的一些…

以太联 - Intellinet 闪耀台北 SecuTech 国际安全科技应用博览会

2025 年 5 月 7 日至 9 日&#xff0c;台北 SecuTech 国际安全科技应用博览会现场热闹非凡&#xff0c;以太联 - Intellinet 携旗下前沿产品与解决方案精彩亮相&#xff0c;成为展会上一道亮丽的风景线&#xff0c;吸引了众多业内人士的目光&#xff0c;收获了广泛关注与高度认…

【华为鸿蒙电脑】首款鸿蒙电脑发布:MateBook Fold 非凡大师 MateBook Pro,擎云星河计划启动

文章目录 前言一、HUAWEI MateBook Fold 非凡大师&#xff08;一&#xff09;非凡设计&#xff08;二&#xff09;非凡显示&#xff08;三&#xff09;非凡科技&#xff08;四&#xff09;非凡系统&#xff08;五&#xff09;非凡体验 二、HUAWEI MateBook Pro三、预热&#xf…

OSA快速上手

我第一次接触OSA&#xff0c;第一感觉就是庞杂&#xff0c;相关的文档和资料基本都是英文&#xff0c;运行下示例场景&#xff0c;效果和效率确实很香。本文仅针对初次接触OSA、望而却步的朋友们进行快速运用的引导。 首先&#xff0c;找个安装包&#xff0c;导入项目后&#…