创建 GitHub 私人仓库并上传本地项目的完整步骤

一、准备工作

1. 安装 Git

(1)访问 Git 官网 下载并安装 Git。
(2)安装完成后,打开终端(Windows 可使用 Git Bash 或 CMD),输入以下命令验证安装成功:

git--version

2. 拥有 GitHub 账号

如果没有账号,前往 GitHub 注册一个免费账号。

二、在 GitHub 上创建私人仓库

  1. 登录 GitHub,点击页面右上角的 + 号,选择 New repository
  2. Repository name 栏输入仓库名称(例如 my-private-project)。
  3. 可选:添加描述(Description)。
  4. Visibility 部分选择 Private(私人仓库)。
  5. 不要勾选 “Initialize this repository with a README” —— 因为我们后续会从本地推送已有项目,保持仓库为空。
  6. 点击 Create repository 完成创建。

创建后,你会看到一个页面,其中包含远程仓库的地址(HTTPS 或 SSH)。请复制该地址,稍后使用。


三、在本地项目中初始化 Git 仓库

假设你的项目文件夹位于 ~/projects/my-project,进入该目录:

cd ~/projects/my-project 

如果该目录尚未被 Git 管理,执行:

git init 

这会创建一个 .git 隐藏文件夹,用于版本控制。


四、配置用户信息(首次使用 Git 时需要)

git config --global user.name "你的用户名"git config --global user.email "你的邮箱"

五、添加项目文件并提交

1. 查看当前状态

git status 

会显示哪些文件未被追踪。

2. 将项目所有内容添加到暂存区

gitadd.
  • . 表示添加当前目录下所有文件(包括子目录)。你也可以单独指定文件或使用 git add -A 添加所有变更。

3. 提交到本地仓库

git commit -m"Initial commit"

请填写有意义的提交信息。


六、关联远程仓库

使用之前复制的 GitHub 仓库地址,添加为远程仓库(通常命名为 origin):

方式一:使用 HTTPS 地址

git remote add origin https://github.com/你的用户名/my-private-project.git 

方式二:使用 SSH 地址(推荐,免重复输入密码)

git remote add origin [email protected]:你的用户名/my-private-project.git 

如果你选择 SSH,需确保已经配置好 SSH 密钥(参见下文“附录:配置 SSH 密钥”)。


七、推送代码到 GitHub 私人仓库

1. 推送主分支(默认分支名可能是 mastermain

首先查看当前分支名:

git branch 

输出如 * master* main

然后执行推送:

git push -u origin 分支名 

例如:

git push -u origin master 
  • -u 表示将本地分支与远程分支关联,之后只需 git push 即可。

2. 输入认证信息(HTTPS 方式)

  • 如果使用 HTTPS,Git 会提示输入用户名和密码。但 GitHub 已于 2021 年 8 月 13 日停止支持密码认证,你需要使用 个人访问令牌(Personal Access Token)
    1. 在 GitHub 上,点击头像 → SettingsDeveloper settingsPersonal access tokensTokens (classic)Generate new token (classic)
    2. 为令牌起名,勾选 repo 权限(私有仓库需要),生成后复制令牌。
    3. 当 Git 提示输入密码时,粘贴令牌作为密码(用户名仍用你的 GitHub 用户名)。

或者,你可以提前配置 Git 凭证缓存以避免重复输入:

git config --global credential.helper cache 

如果使用 SSH 方式且已正确配置密钥,则无需输入密码。


八、验证上传成功

  1. 刷新 GitHub 仓库页面,应看到所有文件都已上传。
  2. 检查仓库是否显示为 Private(私有)。
  3. 可以尝试从另一台设备克隆仓库来确认权限:
    git clone 仓库地址

附录:配置 SSH 密钥(推荐)

使用 SSH 可以避免每次推送输入密码,也更安全。

  1. 将公钥添加到 GitHub
    • 复制输出的内容。
    • 在 GitHub 上,点击头像 → SettingsSSH and GPG keysNew SSH key,粘贴公钥并保存。
  2. 之后使用 SSH 地址添加远程仓库即可

测试连接

ssh-T [email protected] 

如果看到 “Hi 用户名! You’ve successfully authenticated…”,说明配置成功。

查看公钥内容:

cat ~/.ssh/id_ed25519.pub 

生成 SSH 密钥(如果已有可跳过):

ssh-keygen -t ed25519 -C"你的邮箱"

一路回车使用默认路径,设置密码(可选)。


附录:创建 .gitignore 文件

如果你希望某些文件(如编译产物、本地配置、依赖目录等)不被上传,可以在项目根目录创建 .gitignore 文件,写入要忽略的文件模式。例如:

node_modules/ .env *.log .DS_Store 

然后再执行 git add .,这些文件就不会被加入版本控制。


常见问题解决

  • 权限不足:检查你是否拥有仓库的写入权限,私人仓库只有你和被邀请的协作者能推送。
  • 提交记录中缺少文件:确认执行了 git add .git commit,并且没有因 .gitignore 误忽略重要文件。

推送被拒绝(non-fast-forward):说明远程仓库已有提交(例如你初始化时勾选了 README)。解决办法是先拉取合并:

git pull origin 分支名 --rebase

然后再次推送。

Read more

华为OD机试双机位C卷-压缩日志查询(Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷-压缩日志查询(Py/Java/C/C++/Js/Go)

压缩日志查询 华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解 题目描述 某设备需要记录每分钟检测到的指标值。为了节约存储空间,将连续相同指标值的记录合并。 压缩之前: 202411231000,11 202411231001,11 202411231002,12 202411231003,12 202411231004,10 202411231005,17 202411231006,17 202411231007,17 压缩之后: 202411231000,202411231001,11 202411231002,202411231003,12 202411231004,202411231004,10 202411231005,202411231007,17 查询时,根据输入的时间范围进行查询,需要返回回时间范围内记录的每分钟的指标值,如果某个时间点没有记录值,则此条记录忽略不返回。 输入描述 第一行为查询的时间范围,

By Ne0inhk
[C++从零实现Json-Rpc框架]第二弹——使用JsonCpp库并封装Json工具类

[C++从零实现Json-Rpc框架]第二弹——使用JsonCpp库并封装Json工具类

目录 一、前言 二、JsonCpp库 1. Json数据格式 2. JsonCpp介绍 3. JsonCpp 使用 4. 封装Jaon工具类 三、结语 一、前言         在本篇博文中,博主将为大家带来【C++从零实现Json-Rpc框架】的第二弹,即使用JsonCpp库,并通过这个库来封装Json工具类方便我们后续网络通信的序列化和反序列。 二、JsonCpp库 1. Json数据格式 Json 是⼀种数据交换格式,它采⽤完全独立于编程语言的文本格式来存储和表示数据。 例如:我们想表示⼀个同学的学⽣信息 ●C 代码表⽰ char *name = "xx"; int age = 18; float score[

By Ne0inhk
【C++:异常】C++ 异常处理完全指南:从理论到实践,深入理解栈展开与最佳实践

【C++:异常】C++ 异常处理完全指南:从理论到实践,深入理解栈展开与最佳实践

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 🎬 艾莉丝的C++专栏简介: 文章目录 * C++学习阶段的三个参考文档 * 1 ~> 异常的概念 * 2 ~> 异常的使用层 * 2.1 异常的抛出和捕获 * 2.2 栈展开 * 2.2.1 理论 * 2.2.2 最佳实践 * 2.3 查找匹配的处理代码 * 2.3.

By Ne0inhk
8. C++ explicit 关键字

8. C++ explicit 关键字

一、explicit 关键字的核心定义 explicit 是C++中的修饰符关键字,唯一的作用场景是修饰类的构造函数,它的核心功能是:禁止编译器对被修饰的构造函数执行「隐式类型转换 / 隐式构造」行为。 二、前置知识:什么是「隐式类型转换/隐式构造」? 要理解explicit,必须先理解它要禁止的行为是什么。 触发隐式构造的前提 一个类的构造函数满足以下条件时,编译器就具备了「隐式转换」的能力: ✅ 构造函数是单参数构造函数(只有1个入参); ✅ 或,多参数构造函数,但除第一个参数外,其余参数都有默认值(本质等价于「可单参数调用」的构造函数)。 隐式构造的本质 编译器会自动将「单个入参的值」转换为「当前类的临时对象」,这个转换过程是编译器偷偷完成的,不需要程序员手动写构造代码,所以叫「隐式」。 三、无 explicit 时:隐式构造生效(反面示例) 下面的代码是不加explicit的情况,可以直观看到隐式构造的效果,

By Ne0inhk