git

从 VS Code 创建项目并使用 SSH 推送到 GitHub

您可以完全在 Visual Studio Code (VS Code) 中完成项目的初始化,并将其通过更安全、更便捷的 SSH 方式推送到全新的 GitHub 仓库。

以下是详细的步骤指南,涵盖了从生成 SSH 密钥到最终代码推送的全过程。

第一步:配置 SSH 密钥(如果尚未配置)

要使用 SSH 协议,您的电脑需要一个 SSH 密钥对,并且需要将公钥添加到您的 GitHub 账户中。

  1. 检查现有 SSH 密钥
    打开终端(在 VS Code 中可以通过 Terminal > New Terminal 打开),输入以下命令检查是否已有 SSH 密钥:

    ls -al ~/.ssh
    

    如果列表中包含 id_rsa.pubid_ed25519.pub 等文件,说明您已经有密钥了,可以跳到第 3 步。

  2. 生成新的 SSH 密钥
    如果没有任何 .pub 文件,请运行以下命令生成新的密钥。建议使用 Ed25519 算法:

    ssh-keygen -t ed25519 -C "your_email@example.com"
    

    替换为您的 GitHub 邮箱地址。 系统会提示您保存文件(直接按 Enter 接受默认位置)和设置密码(可选,可直接按 Enter 跳过)。

  3. 将 SSH 公钥添加到 GitHub

    • 首先,复制您的公钥内容。在终端输入以下命令并复制其输出:
      cat ~/.ssh/id_ed25519.pub
      
    • 登录您的 GitHub 账户,进入 Settings > SSH and GPG keys
    • 点击 New SSH key,为密钥起一个标题(例如“My VS Code Mac”),然后将复制的公钥内容粘贴到 “Key” 文本框中,最后点击 Add SSH key
  4. 测试 SSH 连接
    在终端中运行以下命令,验证连接是否成功:

    ssh -T git@github.com
    

    如果看到 “Hi [Your Username]! You've successfully authenticated...”,则说明您的 SSH 配置成功。

第二步:在 VS Code 中初始化本地仓库

  1. 打开或创建项目文件夹
    在 VS Code 中,通过 File > Open Folder... 打开您的项目文件夹。如果是一个全新的项目,可以先创建一个空文件夹再打开它。

  2. 初始化 Git 仓库

    • 点击 VS Code 左侧活动栏的 Source Control (源代码管理) 图标。
    • 您会看到一个 Initialize Repository (初始化仓库) 的按钮,点击它。
    • 这将在您的项目文件夹中创建一个 .git 目录,标志着本地仓库创建成功。

第三步:在 GitHub 上创建新的远程仓库

  1. 登录 GitHub
    在浏览器中访问您的 GitHub 账户。

  2. 创建新仓库
    点击页面右上角的 + 号,选择 New repository

    • 为您的仓库命名(Repository name)。
    • 关键不要勾选初始化选项,如 Add a README file, Add .gitignore, 或 Choose a license。因为我们稍后会从本地推送这些文件。
    • 点击 Create repository
  3. 复制 SSH URL
    在仓库创建成功后的页面上,确保选择的是 SSH 协议,然后复制提供的仓库 URL。它应该看起来像 git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git

第四步:连接本地仓库并推送

  1. 添加远程仓库地址
    回到 VS Code 的终端,运行以下命令,将您刚才复制的 SSH URL 添加为名为 origin 的远程仓库:

    git remote add origin git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git
    
  2. 进行首次提交 (Commit)

    • Source Control 面板,您会看到项目中的所有文件都列在 “Changes” 下。
    • 在文件列表上方的输入框中填写您的首次提交信息,例如 “Initial commit”。
    • 点击复选标记 ✔️(Commit 按钮)来提交您的更改。
  3. 推送代码到 GitHub

    • 提交后,VS Code 左下角的状态栏可能会出现一个带有云和向上箭头的图标,点击它可以直接推送。
    • 或者,在终端中运行以下命令,将您的 main (或 master) 分支推送到远程的 origin 仓库:
      git push -u origin main
      
      (如果您的主分支是 master,请将 main 替换为 master

将当前项目的 Git 远程链接从 HTTPS 切换到 SSH

第一步:打开 VS Code 的集成终端

  • 使用快捷键 Ctrl+ ` (反引号键,通常在 Esc 键下方)。
  • 或者通过顶部菜单:Terminal -> New Terminal (终端 -> 新建终端)。

这会在 VS Code 的底部面板打开一个终端窗口。

第二步:检查当前的远程链接

在终端中,输入以下命令来查看当前配置的远程仓库地址。这一步是为了确认你当前确实正在使用 HTTPS。

git remote -v

你会看到类似下面这样的输出,URL 以 https:// 开头:

origin  https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git (push)

第三步:获取仓库的 SSH 链接

  1. 打开你的浏览器,访问你的 GitHub (或 GitLab, Bitbucket 等) 仓库页面。

  2. 点击绿色的 "< > Code" (代码) 按钮。

  3. 在弹出的窗口中,确保选择的是 "SSH" 标签页。

  4. 点击复制按钮,复制 SSH 格式的 URL。它看起来应该像这样:

    git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git
    

第四步:执行修改命令

回到 VS Code 的终端,使用 git remote set-url 命令来更新远程仓库 origin 的地址。

将下面命令中的 SSH URL 替换为你上一步刚刚复制的地址

git remote set-url origin git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git

按下 Enter 执行。这条命令会直接修改 origin 的链接,不会有任何多余的输出。

第五步:再次验证链接

为了确保修改成功,再次运行检查命令:

git remote -v

现在,你应该会看到输出已经变成了 SSH 格式:

origin  git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git (fetch)
origin  git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git (push)

前提条件

这个过程能顺利进行的前提是,你已经在你的电脑上生成了 SSH 密钥,并将其公钥添加到了你的 GitHub (或其他平台) 账户中


VS Code“默认使用 SSH”的设置选项:配置 Git 的 insteadOf (强烈推荐)

这是最强大、最彻底的方法。它的原理是告诉你的 Git:“以后凡是遇到 https://github.com/ 开头的链接,请在连接时自动把它替换成 git@github.com: 的 SSH 格式。

这样设置后,无论你是从命令行操作,还是 VS Code 的“发布到 GitHub”功能(它倾向于使用 HTTPS),Git 都会在底层自动帮你转换成 SSH 链接。

步骤 1: 打开 VS Code 的终端

使用快捷键 Ctrl+ ` 或通过菜单 Terminal -> New Terminal 打开终端。

步骤 2: 执行 Git 配置命令

在终端中,复制并粘贴以下命令,然后按 Enter 执行:

git config --global url."git@github.com:".insteadOf "https://github.com/"

命令解释:

  • --global: 表示这个设置对你电脑上所有的 Git 项目都生效。
  • url."git@github.com:".insteadOf: 设置一个 URL 替换规则。
  • "https://github.com/": 这是被替换的目标。

执行后,就大功告成了!

效果如何?

  • 对于发布新项目: 当你在 VS Code 中初始化一个新仓库并点击“Publish to GitHub”时,即使 VS Code 在后台尝试创建 HTTPS 远程链接,Git 也会自动将其转换为 SSH 链接来连接。
  • 对于克隆项目: 如果你从 GitHub 网站不小心复制了 HTTPS 链接并粘贴到 VS Code 的 Git: Clone 中,Git 同样会自动用 SSH 方式去克隆。

如何验证和撤销?

  • 验证配置:

    git config --global --get-regexp url
    

    如果能看到你刚才设置的规则,就说明成功了。

  • 撤销配置:

    git config --global --unset url."git@github.com:".insteadOf
    

最佳实践:克隆仓库时主动选择 SSH

虽然上面的 insteadOf 配置能帮你自动修正,但养成手动选择 SSH 链接的好习惯也非常重要。

当你需要克隆一个仓库时:

  1. 在 GitHub 仓库页面,点击绿色的 "< > Code" 按钮。
  2. 明确地点击 "SSH" 标签页
  3. 复制以 git@github.com:... 开头的链接。
  4. 在 VS Code 中,打开命令面板 (Ctrl+Shift+P),选择 Git: Clone,然后粘贴这个 SSH 链接。

这样可以从源头上就确保你使用的是 SSH 协议。

总结

场景 解决方案
发布新项目到 GitHub 使用 git config --global url...insteadOf... 命令。这是一劳永逸的方法。
克隆现有项目 主动复制 SSH 链接粘贴到 VS Code。如果忘了,insteadOf 配置会帮你兜底。

前提条件:以上所有方法都需要你已经正确配置好了本机的 SSH 密钥,并将其添加到了你的 GitHub 账户中。如果你还没做,请务必先完成这一步。


主项目-依赖项目

核心思想

我们将把 B, C, D 等项目,作为独立的子模块,添加到主项目 A 的一个特定文件夹(例如 baselines/)下。A 仓库本身不存储 B, C 的代码,只存储一个“指针”,指向它所依赖的 BC 的特定版本 (commit ID)。

第一步:准备所有本地项目(如果需要)

确保您本地的 project_A, project_B, project_C 等都已经是独立的 Git 仓库。如果不是,请先为它们分别初始化。

# 为每个项目(A, B, C...)执行一次
cd /path/to/project_X
git init
git add .
git commit -m "Initial commit for Project X"

第二步:将所有项目推送到远程服务器 (如 GitHub)

子模块机制依赖于远程 URL 来协同工作。所以,您需要为每个项目在 GitHub (或其他平台) 上创建一个对应的空仓库,然后将本地代码推送上去。

# 为每个项目(A, B, C...)执行一次
cd /path/to/project_X
git remote add origin git@github.com:USERNAME/project_X.git # 替换为您的远程 URL
git push -u origin main

第三步:在主项目 A 中添加其他项目作为子模块

这是整个流程的核心步骤。

  1. 进入 A 项目的根目录

    cd /path/to/project_A
    
  2. 逐一添加 B, C 等作为子模块
    我们将它们全部放在 Abaselines/ 目录下,并以它们自己的项目名命名。

    # 添加项目 B
    git submodule add git@github.com:USERNAME/project_B.git baselines/project_B
    
    # 添加项目 C
    git submodule add git@github.com:USERNAME/project_C.git baselines/project_C
    
    # 如果还有项目 D,继续添加...
    # git submodule add git@github.com:USERNAME/project_D.git baselines/project_D
    
    • 命令格式: git submodule add <远程仓库URL> <本地存放路径>
  3. 提交这些变更
    执行完上述命令后,A 项目中会多出一个 .gitmodules 文件,并且 baselines/ 目录下会多出 project_Bproject_C 的“链接”。现在,提交这些变更。

    git status # 你会看到 .gitmodules 和 baselines/ 目录下的新内容
    git add .
    git commit -m "feat: Integrate baseline projects B and C as submodules"
    git push
    

第四步:后续如何使用和协作

如何克隆一个包含多个子模块的项目?

这是您的同事或您自己在另一台电脑上需要做的。必须使用 --recurse-submodules 参数

git clone --recurse-submodules git@github.com:USERNAME/project_A.git

这条命令会先克隆 A,然后自动读取 .gitmodules 文件,并把 B, C 等所有子模块的代码也一并下载下来。

如果忘记加参数,已经克隆了 A,则需要额外两步来补全:

git submodule init
git submodule update
如何更新某个对比方案(例如 B)到最新版本?

假设 B 仓库自己有了新的开发进展,您想在 A 中同步这个最新版本。

  1. 进入子模块目录并更新

    cd baselines/project_B  # 进入 B 的目录
    git checkout main       # 确保在主分支上
    git pull                # 拉取 B 的最新代码
    
  2. 回到主项目 A 并提交更新

    cd ../..  # 回到 A 的根目录
    git status
    # 你会看到提示: "modified: baselines/project_B (new commits)"
    
    git add baselines/project_B
    git commit -m "chore: Update baseline B to the latest version"
    git push
    

    这一步是在告诉 A 仓库:“现在,请将你对 B 的依赖指针更新到我刚刚拉取的那个最新版本上。”

总结

使用 Git Submodule 是管理多个独立项目依赖的黄金标准。它能为您带来:

  • 清晰的边界:主项目 A 和对比方案 B, C 各自的历史完全独立,互不污染。
  • 版本锁定:主项目 A 精确地记录了它在某个时间点依赖的到底是哪个版本的 BC,非常有利于实验的可复现性。
  • 独立的开发:您可以随时在 BC 的目录中进行独立的开发和提交,而不会影响到 A

这个工作流非常适合您的实验对比需求。

posted @ 2025-10-21 00:05  tokirin994  阅读(15)  评论(0)    收藏  举报