把本地项目上传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 来拉取最新代码,以避免冲突。
相关推荐
lazy H1 小时前
从入门到日常开发,一篇文章掌握 Git 核心操作
git·后端·学习·github
zzqssliu9 小时前
煤炉自动代拍系统的队列设计与超时控制机制
git·github
fthux11 小时前
“装闭”,让装修套路“装”不下去
人工智能·ai·开源·github·open source
用户849137175471614 小时前
想做护眼工具却脑子一片空白?我用 OpenSpec 把模糊想法聊成了 v0.1
github·vibecoding
wangruofeng15 小时前
git-filter-repo 把 .git 从 112MB 砍到 1.4MB,但漏推 tag 让 clone 又胖回来
github·devops
峰向AI16 小时前
Block 放出大招!Buzz:一个中继统一代码、聊天、CI 全流程
github
dong_junshuai16 小时前
每天一个开源项目#47 4.4K Stars 的 LikeC4:让架构图随代码进化
github
独立开阀者_FwtCoder18 小时前
最近做了一个健身小程序:智形健身助手,健身的佬们来提点意见
前端·javascript·github
夕夕木各1 天前
从第一个 PR 到 Vite 官方中文文档维护者
github·vite
隔窗听雨眠1 天前
GitHub Actions自动化运维实战:从零构建一体化CI/CD流水线
运维·自动化·github