简单实用:手把手教你将代码上传到GitHub

简单实用:手把手教你将代码上传到GitHub

快速引导

# 初始化 Git 仓库(如果尚未初始化) git init # 将本地仓库与远程仓库关联 git remote add origin https://github.com/your-username/your-repository.git # 添加文件到暂存区 git add . # 提交更改 git commit -m "Initial commit" # 推送代码到远程仓库(适用于 master分支) git push -u origin master #后续上传单个文件 git pull origin master # 将特定文件的更改添加到暂存区 git add <你要更新的文件名> # 或者,添加所有更改的文件(包括你修改的那个) # git add . # 将更改正式提交,并附上清晰的说明 git commit -m "更新说明:例如‘修复了XX功能的Bug’" git push origin master # or如果想强制推送到远程仓库(覆盖所有内容) git push -f origin master

准备工作

1. 注册GitHub账号

访问 github.com 点击“Sign up”注册一个新账号。建议:

  • 使用专业化的用户名(与你的技术身份相关)
  • 验证邮箱地址,确保账户安全

2. 安装Git工具

Git是GitHub的底层版本控制系统,你需要先在本地安装

3. 配置Git身份信息

打开终端(或Git Bash)配置你的身份信息:注册github时用到的信息

bash

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

 或者后面步骤4中git add *之后,去.git文件中找config,编辑[user]

这些信息将记录在你的每一次提交中。

核心操作:上传代码到GitHub

方式一:从零开始创建新仓库

步骤1:在GitHub上创建仓库
  1. 登录GitHub,点击右上角“+”图标,选择“New repository”
  2. 填写仓库信息:
    • Repository name: 仓库名称(建议使用小写字母和连字符)
    • Description: 项目描述(可选但建议填写)
    • Public/Private: 选择公开或私有
    • Initialize this repository with: 建议不要勾选,我们从本地初始化
步骤2:本地初始化Git仓库

进入你要上传的文件夹,右击点击Open Git Bash here接着在bash输入,创建一个初始文件夹来存放。

bash

git init

步骤3:连接远程仓库

将本地仓库与GitHub上的远程仓库关联:地址从github新建仓库那里复制过来就行

bash

git remote add origin https://github.com/你的用户名/仓库名.git

步骤4:添加并提交代码

bash

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

# 提交更改,附上有意义的提交信息 git commit -m "初次提交:项目初始化"

步骤5:推送到GitHub

bash

# 首次推送需要设置上游分支 git push -u origin main

# 后续推送只需 git push

已经上传成功了:

方式二:上传现有项目到新仓库

如果你已经有一个正在开发的项目:

bash

cd existing-project git init git add . git commit -m "初始提交:上传现有项目" git branch -M main #将当前分支重命名为main(可选) git remote add origin https://github.com/username/repo-name.git git push -u origin main

常见问题解决

将本地项目作为子目录上传到已有的远程仓库

  • 保留远程仓库已有内容,同时将本地项目作为子目录上传。
# 创建子目录并移动本地项目 mkdir new-subdirectory mv * new-subdirectory mv .* new-subdirectory 2>/dev/null # 拉取远程仓库,允许不同历史合并 git pull origin main --allow-unrelated-histories # 提交更改 git add . git commit -m "Add new project as subdirectory" git push -u origin main

解决Git报错:fatal: detected dubious ownership in repository at

 git add . 后,报错:fatal: detected dubious ownership in repository at

这是因为该项目的所有者与现在的用户不一致
比如说: 该项目的所有者是 Administrator,而当前用户是 qiuye, 那么就会导致上面的错误

git config --global --add safe.directory "*"

Git :错误:src refspec main does not match any

  • 本地分支没有名为 main 的分支,或者没有任何提交记录。
# 查看当前分支 git branch # 如果当前分支是 master,重命名为 main git branch -m master main # 提交更改 git add . git commit -m "Initial commit" # 推送到远程 main 分支 git push -u origin main # 或者将 master 分支推送到 main git push -u origin master:main

git 报错 “fatal: unable to access ‘https://github.com/.../.git‘: Recv failure Connection was rese

在终端输入以下命令,设置 Git 使用本地代理:

git config --global http.proxy http://127.0.0.1:7890

git push 出现fatal: the remote end hung up unexpectedlyEverything up-to-date

如果你之前没有提交过文件,而你在git push的时候出现Everything up-to-date,并且文件也没有提交上去.可能是因为你没有git add 和 git commit.
需要重新执行:

git add .
git commit -m "message"
git push origin master

大文件超了 GitHub 的 100MB 单文件限制。立即重试:

bash

# 清理并重新推送 git gc --aggressive --prune=now git repack -a -d --depth=250 --window=250 # 分段推送大提交 git push --no-thin origin master

还不行,立即解决方案:从本次提交中移除大文件

bash

# 1. 重置到推送前的状态(保留本地修改) git reset HEAD~1 --soft # 2. 从暂存区移除大文件 git rm --cached best-sts-b-model.pt#大文件1 git rm --cached models/bert-base-chinese/pytorch_model.bin#大文件2 # 3. 重新提交(不带大文件) git commit -m "Remove large model files exceeding GitHub limit" # 4. 重新推送 git push origin master

还不行:使用 git filter-repo(亲测可行)

pip install git-filter-repo

# 注意:这会直接修改你当前工作仓库的历史 git filter-repo --strip-blobs-bigger-than 100M --force # 执行后,同样需要强制推送 git push origin --force --all

长期解决方案:使用 Git LFS (推荐)

Git LFS 是 GitHub 推荐的大文件管理工具:

原始仓库结构:                   使用 Git LFS 后的结构:
[实际大文件 100MB]               [指针文件 130字节]
├── model.pt (100MB)             ├── model.pt (指针)
├── code.py (1KB)                ├── code.py (1KB)
└── data.bin (200MB)             └── data.bin (指针)

bash

# 1. 安装 Git LFS # 下载地址:https://git-lfs.github.com/ # 2. 初始化 Git LFS(每个用户只需要做一次) git lfs install # 3. 跟踪大文件类型 git lfs track "*.pt" git lfs track "*.bin" git lfs track "models/**" # 4. 查看生成的 .gitattributes 文件 cat .gitattributes # 5. 提交 .gitattributes git add .gitattributes git commit -m "Add Git LFS tracking" # 6. 重新添加大文件到 LFS git add best-sts-b-model.pt#大文件1 git add models/bert-base-chinese/pytorch_model.bin#大文件2 git commit -m "Add model files via Git LFS" # 7. 推送(LFS 会拦截处理大文件) git push origin master

修改github默认分支

去setting里面change

删除远程仓库中的多余文件夹或文件

# 删除本地不需要的文件或文件夹 rm -r path/to/folder # 更新 Git 索引 git add -u git commit -m "Remove unnecessary folder or file" # 推送到远程仓库 git push
方法二:直接在 GitHub 界面删除
  1. 进入 GitHub 仓库。
  2. 找到需要删除的文件或文件夹。
  3. 点击右上角的垃圾桶图标删除。
  4. 提交删除更改。

总结

Git 常用命令速查表
场景                 命令

初始化仓库    git init
关联远程仓库    git remote add origin <URL>
检查远程仓库    git remote -v
添加文件到暂存区    git add . 或 git add <file>
提交代码    git commit -m "message"
拉取远程代码    git pull origin main
推送代码到远程仓库    git push origin main
强制推送    git push --force
检查当前分支    git branch
查看状态    git status
解决合并冲突    git merge --abort 或手动修改冲突文件
删除远程文件    rm -r path && git add -u && git commit

将代码上传到GitHub只是开始,真正的价值在于:

  1. 版本控制:完整记录每一次代码变更
  2. 协作开发:多人协作,高效管理
  3. 代码展示:建立个人技术品牌
  4. 持续学习:参与开源项目,学习他人代码

记住,提交频率比单次提交的完美更重要。养成频繁提交的习惯,让你的开发过程有迹可循。


行动起来:现在就选择一个小项目,按照上面的步骤把它推送到GitHub吧!每完成一步,你都在向成为更好的开发者迈进。如果在操作中遇到问题,欢迎在评论区留言讨论。

Happy coding! 🚀

Read more

【哈希表封装实现】—— 我与C++的不解之缘(二十九)

【哈希表封装实现】—— 我与C++的不解之缘(二十九)

前言 我们知道unordered_set和unordered_map的底层是哈希表,那现在我们就是使用我们自己实现的HashTable来封装实现出简单的unordered_set和unordered_map。 一、了解源码 在SGL-STL30版本之前源代码中是没有unordered_set和unordered_map的 unordered_set和unordered_map是C++11之后才更新的;SGL-STL30是C++11之前的版本 但是想SGL-STL30中实现了哈希表,但容器的名字叫做hash_map和hash_set(它是作为非标准的容器出现的) 源代码在hash_map/hash_set/stl_hash_map/stl_hash_map/stl_hash_set/stl_hashtable.h中 这里截取其中的一部分来看一下: // stl_hash_settemplate<classValue,classHashFcn= hash<Value>

By Ne0inhk
特殊类的设计----《Hello C++ Wrold!》(28)--(C/C++)

特殊类的设计----《Hello C++ Wrold!》(28)--(C/C++)

文章目录 * 前言 * 设计一个不能被拷贝的类 * 设计一个只能在堆上创建对象的类 * 设计一个只能在栈上创建对象的类 * 设计一个不能被继承的类 * 设计一个只能创建一个对象的类(也叫做单例模式) * 单例模式的两种实现方法 * 饿汉模式 * 懒汉模式 前言 在 C++ 面向对象编程体系中,类是封装数据与行为的核心单元,其设计直接关系到程序的安全性、可维护性与性能表现。除了支撑常规业务逻辑的普通类,实际开发中常需面对具有特殊约束的场景:例如防止对象拷贝以规避资源重复释放风险,限定对象创建位置(仅堆或仅栈)以规范内存管理,禁止类被继承以保障核心逻辑不被篡改,或是确保类仅存在一个实例以实现全局资源统一调度 —— 这些需求的实现,正是特殊类设计的核心范畴。 本文聚焦 “特殊类设计” 这一主题,系统拆解五种典型特殊类的实现逻辑与技术细节。从 “不能被拷贝的类” 对拷贝构造函数、赋值运算符的管控,到 “只能在堆 / 栈上创建对象的类” 对构造函数与内存分配接口的限制;从 “不能被继承的类” 基于构造函数私有化(C++98)与final关键字(

By Ne0inhk
嘿嘿 解决了Dev C++ 中文乱码(有效版)

嘿嘿 解决了Dev C++ 中文乱码(有效版)

这是博主第一篇博客!记录一下博主的小小小小解决史! 很早就下载用了Dev c++ ,但现在隔了很长时间没去用过了再次打开发现出现中文乱码的现象!在网站上翻阅了许久!终于解决了问题!困扰了许久! ——————————————————————— 这个中文乱码看着是真烦得慌!!! tips:不要急不要急,事情慢慢都能解决掉滴! 还有不要保存在C盘哦!最好都保存在D盘内!本博客示范的未命名1.c 保存于C盘桌面上是为了演示方便! ———————————————————————————  图1 这是我们原来出现中文乱码的界面 编译的时候会出现这个窗口   图一 (再说一遍!这个中文乱码在之前没解决掉问题的时候一看到这个就很烦! ) 图二是编译过后(中文乱码版) 图二          ————————————————————————— 第一种方法(也是博主强推亲测有效法) ·第一步         请点击左上角<控制台界面>左上角                选中<默认值D> 图三   操作第一步     ·第二步          将下方“使用旧版本

By Ne0inhk

C++中的策略模式进阶

1、非修改序列算法 这些算法不会改变它们所操作的容器中的元素。 1.1 find 和 find_if * find(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。 * find_if(begin, end, predicate):查找第一个满足谓词的元素。 * find_end(begin, end, sub_begin, sub_end):查找子序列最后一次出现的位置。 vector<int> nums = {1, 3, 5, 7, 9}; // 查找值为5的元素 auto it = find(nums.begin(

By Ne0inhk