从零开始,学会上传,更新,维护github仓库

以下是一份从头到尾、覆盖安装、配置、创建仓库、上传项目到 GitHub 的完整教程。全程使用通用示例,不包含任何具体的仓库链接,仅供参考。


一、准备工作

1. 注册 GitHub 账号

  1. 打开浏览器,访问 GitHub 官网(输入 “GitHub” 即可找到)。

  2. 点击“Sign up”或“注册”按钮,按提示输入邮箱、用户名、密码,并完成邮箱验证。

  3. 登陆后,进入个人主页,即可进行后续操作。


二、安装并配置 Git

1. 在不同操作系统上安装 Git

  • Windows:

    1. 打开浏览器,搜索“Git Windows安装”并找到官网的下载页面。

    2. 下载最新版本的安装包(通常是以 .exe 结尾的文件),双击运行后一路“Next”完成安装。

    3. 安装过程中保持默认设置即可(除非你有特殊需求)。

  • macOS:

    1. 可以通过包管理器安装(推荐 Homebrew)。在终端中执行:

      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      brew install git
      

      如果不想使用 Homebrew,也可以直接下载 macOS 安装包,按照提示安装。

  • Linux(以 Ubuntu 为例):
    打开终端,执行:

    sudo apt update
    sudo apt install git -y
    

安装完成后,在任意终端(Windows 下可打开 Git Bash)里输入:

git --version

如果输出类似 git version 2.x.x,说明安装成功。

2. 全局配置 Git 用户信息

安装完成后,需要告诉 Git 是谁在提交代码。打开终端,依次执行:

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱@example.com"
  • user.name:填写你在 GitHub 上注册的用户名或昵称。

  • user.email:填写与你 GitHub 帐号绑定的邮箱地址。

配置完毕后,可以用下面命令检查:

git config --global --list

会看到类似:

user.name=你的用户名
user.email=你的邮箱@example.com

三、为安全验证配置 SSH(可选,但推荐)

使用 SSH 方式推送/拉取代码,可以避免每次输入用户名和密码(Token)。下面介绍 SSH 公钥的生成与添加。

1. 生成 SSH 密钥对

  1. 打开终端(或 Git Bash),执行:

    ssh-keygen -t ed25519 -C "你的邮箱@example.com"
    
    • 按提示一路回车即可,默认会在用户主目录下生成 .ssh/id_ed25519(私钥)和 .ssh/id_ed25519.pub(公钥)两个文件。

    • 如果提示 “文件已存在”,可选择覆盖或另存为其他文件名,也可以按提示输入一个新的名称。

  2. 生成完成后,执行以下命令查看公钥内容:

    cat ~/.ssh/id_ed25519.pub
    

    终端会输出一串以 ssh-ed25519 开头的字符串,这就是公钥。

2. 将 SSH 公钥添加到 GitHub

  1. 在浏览器中,登陆 GitHub,点击右上角头像,选择“Settings”(设置)。

  2. 在左侧栏中找到 SSH and GPG keys,点击进入。

  3. 点击 New SSH key(新增 SSH 密钥),在“Title”框里可以填写一个有意义的名字(例如 “My Laptop”),然后把刚才复制的公钥粘贴到下面的文本框中,最后点击 Add SSH key

  4. 如果 GitHub 要求你输入账号密码或两步验证码,按提示输入即可。

添加成功后,SSH 验证就设置完毕。可以测试连接:

ssh -T git@github.com

如果提示类似 “Hi <用户名>! You've successfully authenticated...” 则说明 SSH 验证配置正确。


四、在 GitHub 上创建一个空仓库

  1. 登陆 GitHub 后,点击右上角的 “+” 按钮,选择 New repository(新建仓库)。

  2. 在 “Create a new repository” 页面填写:

    • Repository name:为你的项目起个名字,例如 my-project

    • Description(可选):添加简短描述。

    • PublicPrivate:根据需要选择公开或私有。

    • Initialize this repository with a README:通常不勾选,否则会自动生成一个 README 文件,后续需要先拉取再推送。

  3. 点击下方的 Create repository(创建仓库),稍等片刻后就会进入新仓库页面。页面上会提供 HTTPS 和 SSH 两种地址,如:

    • HTTPS: https://github.com/你的用户名/my-project.git

    • SSH: git@github.com:你的用户名/my-project.git
      记住这两个地址中的一种,后续用来关联本地仓库。


五、将本地项目与远程仓库关联并上传

下面以一个已存在本地项目的目录为例,演示如何上传到 GitHub。假设本地项目文件夹路径为 ~/projects/my-project,且目录下已有若干源代码或资源文件。

1. 在本地初始化 Git 仓库

  1. 打开终端,切换到项目根目录:

    cd ~/projects/my-project
    
  2. 在该目录下执行:

    git init
    

    这会创建一个隐藏的 .git/ 文件夹,使该目录成为一个 Git 仓库。

  3. 你可以运行 ls -Agit status 来确认目录下已有普通文件,但 Git 还没追踪它们。

2. 将文件添加到暂存区并提交

  1. 查看当前状态(可选):

    git status
    

    这时 Git 会告诉你哪些文件是 “Untracked files”(未跟踪文件)。

  2. 把所有文件添加到暂存区

    git add .
    

    这样做会把当前目录(及子目录)下所有未被忽略的文件都纳入暂存区。

  3. 创建第一次提交

    git commit -m "首次提交:项目初始化"
    

    以上操作会在本地生成一个提交记录(commit),大多数情况下会默认在 master 分支上。如果想直接把主分支命名为 main,可以执行:

    git branch -M main
    

    这样以后本地仓库的主分支就是 main(与 GitHub 通用约定保持一致)。

3. 将本地仓库与远程仓库关联

  1. 在本地执行下面命令,将远程仓库地址添加为名为 origin 的远程源:

    • 使用 HTTPS(需要每次输入用户名/密码或 Token):

      git remote add origin https://github.com/你的用户名/my-project.git
      
    • 使用 SSH(已配置 SSH 密钥则无需输入密码):

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

    注意:命令开头务必是小写的 git,不要带任何隐藏字符或破折号。

  2. 添加成功后,可用下面命令确认:

    git remote -v
    

    你会看到类似:

    origin  https://github.com/你的用户名/my-project.git (fetch)
    origin  https://github.com/你的用户名/my-project.git (push)
    

    或者如果用的是 SSH,则显示:

    origin  git@github.com:你的用户名/my-project.git (fetch)
    origin  git@github.com:你的用户名/my-project.git (push)
    

4. 推送本地提交到远程仓库

  1. 如果当前分支是 main

    git push -u origin main
    

    如果当前分支是 master(没有重命名为 main),则:

    git push -u origin master
    
    • -u origin main 的含义是:把本地 main 分支推送到远程 origin,并建立跟踪关系。以后只需直接执行 git push 即可。

  2. 在推送过程中,如果使用 HTTPS,需要输入 GitHub 用户名和密码(如果启用了两步验证,则输入 Personal Access Token);如果使用 SSH,且 SSH key 已配置好,则不会再提示输入密码。

  3. 推送成功后,终端会显示类似:

    Enumerating objects: 10, done.
    Counting objects: 100% (10/10), done.
    Compressing objects: 100% (7/7), done.
    Writing objects: 100% (10/10), 1.23 KiB | 1.23 MiB/s, done.
    Total 10 (delta 0), reused 0 (delta 0)
    To https://github.com/你的用户名/my-project.git* [new branch]      main -> main
    branch 'main' set up to track 'origin/main'.
    
  4. 刷新浏览器,打开 GitHub 上该仓库页面,就能看到你刚才上传的所有文件。


六、后续开发与同步

项目上传成功后,后续只需按照下面步骤更新远程仓库即可。

1. 修改/新增文件后上传

  1. 在本地对文件进行修改或新增文件。

  2. 查看项目状态:

    git status
    

    可以看到哪些文件被修改、哪些是新文件。

  3. 添加改动到暂存区:

    • 如要一次添加所有改动:

      git add .
      
    • 如果只想添加某个文件:

      git add path/to/yourfile.ext
      
  4. 提交改动:

    git commit -m "本次更新:简要说明修改内容"
    
  5. 推送到远程:

    git push
    

    由于第一次已经用 -u origin main-u origin master 与远程分支建立了跟踪关系,后续直接 git push 即可。

2. 如果远程仓库有了新的提交(多人协作时常见)

  1. 在推送之前,可以先拉取远程更新:

    git pull --rebase origin main
    

    或者:

    git pull origin main
    
    • --rebase 可以保持提交历史线性;不带则会自动创建一个合并提交(Merge commit)。

  2. 如果出现冲突(Conflict),按提示打开冲突文件,手动保留、删除冲突标记(<<<<<<<=======>>>>>>>),然后执行:

    git add 冲突已解决的文件
    git rebase --continue   # 如果使用了 --rebase
    

    或者如果是普通 git pull

    git add 冲突已解决的文件
    git commit
    

    冲突解决完成后再执行 git push,即可把本地改动与远程最新内容同步。


七、常见问题与注意事项

  1. 命令前不要出现隐藏字符

    • 如果复制粘贴时前面多了不可见破折号(如 “–”)或空格,Git 会识别为非法命令,从而提示 “command not found”。遇到这种情况,请按几次退格键把前导的隐藏字符清除,然后再手动输入 git initgit add 等命令。

  2. .gitignore 文件

    • 在项目根目录创建一个名为 .gitignore 的文件,写入你不想跟踪(即不想上传到远程)的文件或文件夹规则。常见示例:

      node_modules/
      *.log
      .env
      .DS_Store
      build/
      *.pyc
      
    • 这样做可以避免把编译生成的临时文件、IDE 配置、依赖包等无关文件上传到仓库。

  3. 分支管理

    • 默认情况下,你会在 main(或 master)分支上工作。如果想开发新功能、修复 Bug,通常会新建分支:

      git checkout -b feature/新功能名称
      
    • 完成开发并测试通过后,切回 main 分支并合并:

      git checkout main
      git merge feature/新功能名称
      git branch -d feature/新功能名称
      
    • 合并完成后,再执行 git push 即可把合并后的结果推到远程。

  4. SSH 与 HTTPS

    • 如果长时间需要频繁推送,推荐使用 SSH 方式,只需在本地生成过一次 SSH 密钥,并把公钥添加到 GitHub,就不需要每次输入用户名/密码或 Token。

    • 如果安全要求较高或不方便配置 SSH,也可以继续使用 HTTPS,但每次推送时都可能需要输入 Token。

  5. Token 和安全

    • GitHub 已逐步弃用直接使用密码进行 HTTPS 验证,强制使用个人访问令牌(Personal Access Token)。

    • 在终端推送时,如果提示要求用户名和密码,你可以把用户名填为 GitHub 用户名,然后把个人访问令牌粘贴到密码处。访问令牌可以在 GitHub 个人设置里新建。

  6. 远程仓库已初始化 README 情况

    • 如果你在新建仓库时勾选了“初始化 README”,远程仓库就会自带一个提交记录。这时本地一开始是空的,如果你直接执行 git push 会被拒绝(提示需要先拉取远程更改)。解决方法是先执行:

      git pull --rebase origin main
      

      把远程的那次提交拉下来并合并到本地,然后再 git push


八、小结

  1. 安装 Git 并配置 user.nameuser.email

  2. (可选)配置 SSH 密钥,将公钥添加到 GitHub。

  3. 在 GitHub 上创建一个空仓库(不勾选初始化 README)。

  4. 在本地项目目录执行 git init,将项目转为 Git 仓库。

  5. 执行 git add .git commit -m "描述",完成首次提交。

  6. 使用 git remote add origin <远程仓库地址> 关联远程。

  7. 执行 git push -u origin main(或 master)将本地提交推送到 GitHub。

  8. 后续开发:用 git addgit commitgit push 完成更新。若需合并远程改动,先 git pull --rebasegit push

以上步骤涵盖了从安装软件到首次上传,再到后续代码同步的完整流程。只要每一步都按照说明并自己手动输入命令,就能顺利把项目上传并保持与 GitHub 的同步。

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

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

相关文章

使用 Docker Compose 从零部署 TeamCity + PostgreSQL(详细新手教程)

JetBrains TeamCity 是一款专业的持续集成&#xff08;CI&#xff09;服务器工具&#xff0c;支持各种编程语言和构建流程。本文将一步一步带你用 Docker 和 Docker Compose 快速部署 TeamCity&#xff0c;搭配 PostgreSQL 数据库&#xff0c;并确保 所有操作新手可跟着做。 一…

微软推出SQL Server 2025技术预览版,深化人工智能应用集成

在Build 2025 大会上&#xff0c;微软向开发者社区开放了SQL Server 2025的测试版本。该版本的技术改进主要涵盖人工智能功能集成、系统性能优化与开发工具链升级三个维度&#xff0c;展示了数据库管理系统在智能化演进方向上的重要进展。 智能数据处理功能更新 新版本的技术亮…

企业管理中,商业智能BI主要做哪些事情?

开门见山的告诉大家&#xff0c;在企业管理中商业智能BI 主要就做三件事&#xff1a;拉通数据、整合数据、数据可视化展现。 技术角度的商业智能BI 从技术的角度来讲&#xff0c;商业智能BI是一套完整的由数据仓库、查询报表、数据分析等组成的数据类技术解决方案。它有一个非…

openharmony5.0.0中kernel子系统编译构建流程概览(rk3568)

概述 在梳理openharmony对linux内核做了哪些更改时&#xff0c;简单梳理了下kernel部分的编译构建流程&#xff0c;并根据源码做了简单论证。分享出来&#xff0c;希望对大家有所帮助。 系统版本:openharmony5.0.0 开发板:dayu200 编译环境:ubuntu22 执行流程 在kernel\l…

考研系列—操作系统:冲刺笔记(4-5章)

目录 第四章 文件管理 1.真题总结文件管理方式 (1)目录文件的FCB就是“目录名-目录地址” (2)普通文件的FCB (3)区分索引文件、顺序文件、索引分配 (4)文件的物理结构 ①连续分配方式 ②链接分配 ③索引分配-使用索引表(一个文件对应一张索引表!!!) 计算考点:超级…

配置URDF模型,调整模型中部件的形状/尺寸,以及在ROS2的Rviz2中进行可视化。

配置URDF模型&#xff0c;调整模型中部件的形状/尺寸&#xff0c;以及在ROS2的Rviz2中进行可视化。 提问 在 ROS2 的rviz2 里面&#xff0c;urdf模型哪些部分选择可视化&#xff0c;哪些部分暂时不呈现在界面上&#xff0c;怎么在rviz2中操作&#xff1f; 回答 在 ROS2 的 …

基于SpringBoot+Vue2的租房售房二手房小程序

角色&#xff1a; 管理员、房东、租客/买家 技术&#xff1a; springbootvue2mysqlmybatispagehelper 核心功能&#xff1a; 租房售房小程序是一个专注于房屋租赁和销售的综合性平台&#xff0c;基于SpringBootVue2MySQLMyBatisPageHelper技术栈开发&#xff0c;为用户提供…

掌握子网划分:优化IP分配与管理

子网划分是通过调整子网掩码&#xff0c;将单一IP网络划分为多个逻辑子网的过程&#xff0c;其核心原理是借用主机位作为子网位以优化地址分配和管理。具体方法与原理如下&#xff1a; 一、子网划分基本原理 核心目的&#xff1a; 减少IP浪费&#xff1a;避免大块地址闲置&…

[原创](现代Delphi 12指南):[macOS 64bit App开发]: TTask创建多线程, 更简单, 更快捷.

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…

终极数据结构详解:从理论到实践

终极数据结构详解&#xff1a;从理论到实践 我将从 底层原理、时间复杂度、空间优化、实际应用 和 代码实现 五个维度&#xff0c;彻底解析数据结构。内容涵盖&#xff1a; 线性结构&#xff08;数组、链表、栈、队列&#xff09;非线性结构&#xff08;树、图&#xff09;高…

gvim比较两个文件不同并合并差异

使用 gvim 比较两个文件的不同&#xff1a; 方式一&#xff0c;使用 gvim 同时打开两个待比较的文件。 比较通用方式是采用 gvim -d 选项&#xff0c;具体命令&#xff0c;如下&#xff1a; gvim -d <file1> <file2>方式二&#xff0c;先用 gvim 打开一个文件&am…

15个基于场景的 DevOps 面试问题及答案

第一部分:持续集成和部署 (CI/CD) 场景 1:构建中断 “您的 CI 流水线突然出现‘找不到依赖项’的错误。您会如何处理这个问题?” 回答:首先,我会检查是否有新的依赖项被添加到需求文件中,但这些依赖项并未包含在需求文件中。我还会验证构建服务器是否可以访问互联网来下…

Linux随记(十八)

一、k8s的node节点磁盘 /data已使用率超过 85% , 出现disk pressure &#xff0c;驱逐pod现象 evicted &#xff0c; the node had condition:[DiskPressure] #修改/var/lib/kubelet/config.yaml ]# cat /var/lib/kubelet/config.yaml apiVersion: kubelet.config.k8s.io/v1…

利用Python 进行自动化操作: Pyautogui 库

目录 1. 前言 2. 安装 PyAutoGUI 3. 常见函数介绍 3.1 鼠标操作 3.2 键盘操作 3.3 截图与图像识别 4. 简单案例 5. 总结 1. 前言 我们常常需要与各种软件和系统交互&#xff0c;而人工操作往往耗时且容易出错。这时&#xff0c;PyAutoGUI 就可以帮我们解放双手&#…

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

oracle数据恢复—oracle数据库执行truncate命令后的怎么恢复数据?

oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下&#xff0c;oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况&#xff0c;例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致…

计算机二级Python考试的核心知识点总结

以下是计算机二级Python考试的核心知识点总结&#xff0c;结合高频考点和易错点分类整理&#xff1a; 1. **数据类型与运算** ▷ 不可变类型&#xff1a;int, float, str, tuple&#xff08;重点区分list与tuple&#xff09; ▷ 运算符优先级&#xff1a;** > * /…

Vue 组件库发布实战(含 TypeScript 支持)

整理不易&#xff0c;如果本文对你有帮助&#xff0c;欢迎点个【赞 &#x1f44d;】【收藏 ⭐】【关注 &#x1f9e1;】 &#x1f4e6;Vue 组件库发布实战&#xff08;含 TypeScript 支持&#xff09; 在上一篇中我们完成了一个基础 Vue 3 组件的 npm 发布流程。本文将升级内容…

新版双紫擒龙、紫紫红黄、动能二号源码指标源码公式讲解

双紫擒龙量化指标公式源码&#xff0c;双紫擒龙紫紫红黄2025升级版的量化指标龙头模型............ 实战举例&#xff0c;量化擒龙------副图源码&#xff0c;如下&#xff1a; DIF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIF,9); ABC2:REF(CLOSE,1); ABC3:IF((CLOSE-ABC2…

c++中锁类型对比与实战

C++中的锁类型对比与实战:std::lock_guard、std::unique_lock、std::shared_lock 在多线程编程中,合理地使用锁是保证数据一致性和线程安全的关键。C++标准库提供了多种锁类型,每种都有其适用场景和性能特性。本文将深入分析 std::lock_guard、std::unique_lock、std::shar…