当前位置: 首页 > ops >正文

把本地项目上传github上

把现有项目上传到 GitHub 主要有两种情况:

  1. 项目还没有进行过版本控制(没有 .git 文件夹)
  2. 项目已经进行过版本控制(有 .git 文件夹)

下面我将详细介绍这两种情况的操作步骤:


情况一:项目还没有进行过版本控制(没有 .git 文件夹)

这是最常见的情况。你需要初始化 Git 仓库,然后上传。

步骤:

  1. 在 GitHub 上创建新的仓库 (Repository)

    • 登录你的 GitHub 账号。
    • 点击页面右上角的 + 号,选择 New repository
    • 填写 Repository name (仓库名称,建议与你的项目文件夹名称相同)。
    • 选择 Public (公开) 或 Private (私有)。
    • 不要勾选 Add a README fileAdd .gitignoreChoose a license。我们稍后会在本地添加这些文件。
    • 点击 Create repository
    • 创建成功后,GitHub 会显示一些指令,其中会包含一个 ...or push an existing repository from the command line 的部分。请保留这个页面,我们稍后会用到它上面的命令。
  2. 在本地项目文件夹中初始化 Git 仓库

    • 打开你的终端 (Terminal) 或 Git Bash (如果你是 Windows 用户)。
    • 使用 cd 命令进入你的项目文件夹。例如: Bash

      cd /path/to/your/project
      
    • 初始化 Git 仓库: Bash

      git init
      
      这会在你的项目文件夹中创建一个隐藏的 .git 文件夹。
  3. 添加项目文件到 Git 暂存区

    • 将所有项目文件添加到 Git 暂存区。. 表示当前目录下的所有文件。 Bash

      git add .
      
      如果你想忽略某些文件(如编译生成的文件、IDE 配置文件等),可以在项目根目录下创建一个 .gitignore 文件,并在其中列出要忽略的文件或文件夹模式。例如:
      # .gitignore 示例
      *.log
      build/
      .idea/
      node_modules/
      
      然后在执行 git add .
  4. 提交到本地仓库

    • 提交暂存区的文件到本地 Git 仓库,并添加提交信息。 Bash

      git commit -m "Initial commit"
      
      "Initial commit" 是你的提交信息,你可以根据需要修改。
  5. 关联远程 GitHub 仓库

    • 回到你在 GitHub 上创建仓库后显示的页面。复制 ...or push an existing repository from the command line 下面的第一行命令,它看起来像这样: Bash

      git remote add origin https://github.com/your-username/your-repository-name.git
      
      your-username 替换为你的 GitHub 用户名,your-repository-name 替换为你的仓库名称。
    • 在你的终端中执行这条命令。
  6. 推送本地分支到远程仓库

    • 将本地的 main (或 master) 分支推送到远程的 origin 仓库。 Bash

      git branch -M main # 如果你本地是 master 分支,可以先将其重命名为 main
      git push -u origin main
      
      • git branch -M main:如果你本地默认是 master 分支,GitHub 现在倾向于使用 main 作为默认分支名,所以建议将其重命名。如果你的本地分支已经是 main,则可以跳过此步。
      • git push -u origin main-u 参数会在首次推送时建立本地分支和远程分支的跟踪关系,这样以后你只需要使用 git push 即可。
  7. 完成

    • 刷新你的 GitHub 仓库页面,你就可以看到你的项目文件已经成功上传了。

情况二:项目已经进行过版本控制(有 .git 文件夹)

这意味着你的项目已经是一个 Git 仓库了,你只需要将它关联到远程 GitHub 仓库并推送。

步骤:

  1. 在 GitHub 上创建新的仓库 (Repository)

    • 登录你的 GitHub 账号。
    • 点击页面右上角的 + 号,选择 New repository
    • 填写 Repository name (仓库名称,建议与你的项目文件夹名称相同)。
    • 选择 Public (公开) 或 Private (私有)。
    • 不要勾选 Add a README fileAdd .gitignoreChoose a license
    • 点击 Create repository
    • 创建成功后,GitHub 会显示一些指令,其中会包含一个 ...or push an existing repository from the command line 的部分。请保留这个页面,我们稍后会用到它上面的命令。
  2. 在本地项目文件夹中操作

    • 打开你的终端 (Terminal) 或 Git Bash。
    • 使用 cd 命令进入你的项目文件夹。
  3. 检查并清理现有的远程连接(如果存在)

    • 如果你之前已经将这个项目关联到其他远程仓库,或者想确保没有冲突,可以先检查: Bash

      git remote -v
      
    • 如果显示了远程连接(例如 origin),并且你确定要将其更改为新的 GitHub 仓库,可以先移除旧的远程连接: Bash

      git remote remove origin
      
      如果你是第一次关联,或者确定没有其他远程连接,则跳过此步。
  4. 关联远程 GitHub 仓库

    • 回到你在 GitHub 上创建仓库后显示的页面。复制 ...or push an existing repository from the command line 下面的第一行命令,它看起来像这样: Bash

      git remote add origin https://github.com/your-username/your-repository-name.git
      
      your-username 替换为你的 GitHub 用户名,your-repository-name 替换为你的仓库名称。
    • 在你的终端中执行这条命令。
  5. 推送本地分支到远程仓库

    • 将本地的 main (或 master) 分支推送到远程的 origin 仓库。 Bash

      git branch -M main # 如果你本地是 master 分支,可以先将其重命名为 main
      git push -u origin main
      
      • git branch -M main:如果你本地默认是 master 分支,GitHub 现在倾向于使用 main 作为默认分支名,所以建议将其重命名。如果你的本地分支已经是 main,则可以跳过此步。
      • git push -u origin main-u 参数会在首次推送时建立本地分支和远程分支的跟踪关系,这样以后你只需要使用 git push 即可。
  6. 完成

    • 刷新你的 GitHub 仓库页面,你就可以看到你的项目文件已经成功上传了。

常见问题与技巧:

  • SSH 和 HTTPS: 上述示例使用的是 HTTPS 方式进行推送。如果你配置了 SSH Key,也可以使用 SSH 方式,它的 URL 格式是 git@github.com:your-username/your-repository-name.git。SSH 方式在每次推送时不需要输入用户名和密码。
  • Git 凭据管理器 (Credential Manager): 如果你经常使用 HTTPS 方式,可以配置 Git 凭据管理器,这样就不用每次都输入用户名和密码了。
  • .gitignore 文件: 强烈建议在项目根目录下创建 .gitignore 文件,用来忽略不必要上传到 Git 仓库的文件和文件夹(例如:编译生成的文件、IDE 配置文件、日志文件、敏感信息等)。
  • 分支管理: 默认情况下,你会推送到 mainmaster 分支。在实际开发中,你可能需要创建新的分支(如 devfeature-x),在新的分支上进行开发,然后合并到 main 分支。
  • 拉取 (Pull): 如果有其他人也修改了远程仓库,在推送之前,你可能需要先使用 git pull origin main 来拉取最新代码,以避免冲突。
http://www.xdnf.cn/news/8755.html

相关文章:

  • 前端绘图基础——SVG详解
  • SprigBoot整合rocketmq-v5-client-spring-boot
  • Kafka Broker 总体工作流程
  • c++总结-04-智能指针
  • 嵌入式学习笔记 - freeRTOS 列表,链表,节点跟任务之间关系
  • 深度图数据增强方案-随机增加ROI区域的深度
  • 制造业主要管理哪些主数据范围
  • 云迹机器人底盘调用
  • 从AD9361 到 ADSY1100 ,中间的迭代产品历史
  • 软考 系统架构设计师系列知识点之杂项集萃(73)
  • 【MPC控制 - 从ACC到自动驾驶】5. 融会贯通:MPC在ACC中的优势总结与知识体系构建
  • 云手机是什么?哪个云手机便宜好用,掌派云手机流畅不卡顿
  • 前端垫片chimp
  • 贪心算法应用:Ford-Fulkerson最大流问题详解
  • 【C语言干货】free细节
  • 弦序参量(SOP)
  • 【MySQL】第10节|MySQL全局优化与Mysql 8.0新增特性详解
  • 【图像大模型】ControlNet:深度条件控制的生成模型架构解析
  • 如何确定是不是一个bug?
  • 深入理解Istio:全面解析与实践指南
  • Java 学习笔记:注解、泛型与 IO 流
  • 线性代数之张量计算,支撑AI算法的数学原理
  • 神经正切核推导(2)
  • DeepSeek联网Google搜索引擎
  • Windows端的C函数setlocale、printf与wprintf打印中文字符谜局小解
  • 深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第六篇:AXI4-Lite桥接设计
  • 金众诚业财一体化解决方案如何提升项目盈利能力?
  • 国际荐酒师(香港)协会亮相新西兰葡萄酒巡展深度参与赵凤仪大师班
  • 《数据结构》系列笔记|附扫描手写笔记 1.0开篇-数据结构在学什么?
  • 【八股战神篇】操作系统高频面试题