git
从 VS Code 创建项目并使用 SSH 推送到 GitHub
您可以完全在 Visual Studio Code (VS Code) 中完成项目的初始化,并将其通过更安全、更便捷的 SSH 方式推送到全新的 GitHub 仓库。
以下是详细的步骤指南,涵盖了从生成 SSH 密钥到最终代码推送的全过程。
第一步:配置 SSH 密钥(如果尚未配置)
要使用 SSH 协议,您的电脑需要一个 SSH 密钥对,并且需要将公钥添加到您的 GitHub 账户中。
-
检查现有 SSH 密钥:
打开终端(在 VS Code 中可以通过Terminal>New Terminal打开),输入以下命令检查是否已有 SSH 密钥:ls -al ~/.ssh如果列表中包含
id_rsa.pub或id_ed25519.pub等文件,说明您已经有密钥了,可以跳到第 3 步。 -
生成新的 SSH 密钥:
如果没有任何.pub文件,请运行以下命令生成新的密钥。建议使用 Ed25519 算法:ssh-keygen -t ed25519 -C "your_email@example.com"替换为您的 GitHub 邮箱地址。 系统会提示您保存文件(直接按 Enter 接受默认位置)和设置密码(可选,可直接按 Enter 跳过)。
-
将 SSH 公钥添加到 GitHub:
- 首先,复制您的公钥内容。在终端输入以下命令并复制其输出:
cat ~/.ssh/id_ed25519.pub - 登录您的 GitHub 账户,进入 Settings > SSH and GPG keys。
- 点击 New SSH key,为密钥起一个标题(例如“My VS Code Mac”),然后将复制的公钥内容粘贴到 “Key” 文本框中,最后点击 Add SSH key。
- 首先,复制您的公钥内容。在终端输入以下命令并复制其输出:
-
测试 SSH 连接:
在终端中运行以下命令,验证连接是否成功:ssh -T git@github.com如果看到 “Hi [Your Username]! You've successfully authenticated...”,则说明您的 SSH 配置成功。
第二步:在 VS Code 中初始化本地仓库
-
打开或创建项目文件夹:
在 VS Code 中,通过File>Open Folder...打开您的项目文件夹。如果是一个全新的项目,可以先创建一个空文件夹再打开它。 -
初始化 Git 仓库:
- 点击 VS Code 左侧活动栏的 Source Control (源代码管理) 图标。
- 您会看到一个 Initialize Repository (初始化仓库) 的按钮,点击它。
- 这将在您的项目文件夹中创建一个
.git目录,标志着本地仓库创建成功。
第三步:在 GitHub 上创建新的远程仓库
-
登录 GitHub:
在浏览器中访问您的 GitHub 账户。 -
创建新仓库:
点击页面右上角的+号,选择 New repository。- 为您的仓库命名(Repository name)。
- 关键:不要勾选初始化选项,如
Add a README file,Add .gitignore, 或Choose a license。因为我们稍后会从本地推送这些文件。 - 点击 Create repository。
-
复制 SSH URL:
在仓库创建成功后的页面上,确保选择的是 SSH 协议,然后复制提供的仓库 URL。它应该看起来像git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git。
第四步:连接本地仓库并推送
-
添加远程仓库地址:
回到 VS Code 的终端,运行以下命令,将您刚才复制的 SSH URL 添加为名为origin的远程仓库:git remote add origin git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git -
进行首次提交 (Commit):
- 在 Source Control 面板,您会看到项目中的所有文件都列在 “Changes” 下。
- 在文件列表上方的输入框中填写您的首次提交信息,例如 “Initial commit”。
- 点击复选标记 ✔️(Commit 按钮)来提交您的更改。
-
推送代码到 GitHub:
- 提交后,VS Code 左下角的状态栏可能会出现一个带有云和向上箭头的图标,点击它可以直接推送。
- 或者,在终端中运行以下命令,将您的
main(或master) 分支推送到远程的origin仓库:
(如果您的主分支是git push -u origin mainmaster,请将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 链接
-
打开你的浏览器,访问你的 GitHub (或 GitLab, Bitbucket 等) 仓库页面。
-
点击绿色的 "< > Code" (代码) 按钮。
-
在弹出的窗口中,确保选择的是 "SSH" 标签页。
-
点击复制按钮,复制 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 链接的好习惯也非常重要。
当你需要克隆一个仓库时:
- 在 GitHub 仓库页面,点击绿色的 "< > Code" 按钮。
- 明确地点击 "SSH" 标签页。
- 复制以
git@github.com:...开头的链接。 - 在 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 的代码,只存储一个“指针”,指向它所依赖的 B 和 C 的特定版本 (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 中添加其他项目作为子模块
这是整个流程的核心步骤。
-
进入
A项目的根目录。cd /path/to/project_A -
逐一添加
B,C等作为子模块。
我们将它们全部放在A的baselines/目录下,并以它们自己的项目名命名。# 添加项目 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> <本地存放路径>
- 命令格式:
-
提交这些变更。
执行完上述命令后,A项目中会多出一个.gitmodules文件,并且baselines/目录下会多出project_B和project_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 中同步这个最新版本。
-
进入子模块目录并更新。
cd baselines/project_B # 进入 B 的目录 git checkout main # 确保在主分支上 git pull # 拉取 B 的最新代码 -
回到主项目
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精确地记录了它在某个时间点依赖的到底是哪个版本的B和C,非常有利于实验的可复现性。 - 独立的开发:您可以随时在
B或C的目录中进行独立的开发和提交,而不会影响到A。
这个工作流非常适合您的实验对比需求。
浙公网安备 33010602011771号