VSCode远程连接服务器 同步代码到GitHub

在VS Code远程连接服务器的场景下,同步代码到GitHub的核心是:在服务器端配置Git和GitHub认证,然后通过VS Code的图形化界面或终端执行Git操作。以下是详细步骤:

一、准备工作

  1. VS Code已安装必要插件
    本地VS Code需安装:
    • Remote - SSH(用于远程连接服务器)
    • Git(基础Git支持,通常默认安装)

确保服务器已安装Git
远程服务器上执行以下命令,若有版本输出则已安装,否则需安装:

git --version # 未安装的话(Ubuntu/Debian):sudoapt-get update &&sudoapt-getinstall -y git

二、服务器端配置GitHub认证(关键)

服务器需要有权限访问你的GitHub仓库(读/写),推荐用SSH密钥(免密码,更方便),或HTTPS令牌(需输入令牌验证)。

方案1:SSH密钥认证(推荐,一次配置永久生效)
1. 服务器端生成SSH密钥

在远程服务器的终端(VS Code远程终端)执行:

ssh-keygen -t ed25519 -C "你的GitHub邮箱"# 按回车3次(无需设置密码)

生成的密钥在 ~/.ssh/ 目录下:私钥 id_ed25519,公钥 id_ed25519.pub

2. 复制公钥到GitHub
  • 登录GitHub → 右上角头像 → Settings → 左侧 SSH and GPG keysNew SSH key
    • Title 填服务器标识(如“我的远程服务器”)
    • Key 粘贴刚才复制的公钥字符串 → 点击 Add SSH key

服务器端查看公钥内容:

cat ~/.ssh/id_ed25519.pub 

复制输出的完整字符串(以 ssh-ed25519 开头,以你的邮箱结尾)。

3. 验证SSH连接

服务器端执行,测试是否能连接GitHub:

ssh -T [email protected] 

首次连接输入 yes,成功会显示 Hi 你的GitHub用户名! You've successfully authenticated...

方案2:HTTPS令牌认证(适合临时使用)

若不方便配置SSH,可使用GitHub个人访问令牌(PAT):

  1. 生成PAT:
    GitHub → SettingsDeveloper settingsPersonal access tokensTokens (classic)Generate new token
    • 勾选权限:repo(仓库读写权限) → 生成后立即复制令牌(只显示一次)。

服务器端Git配置记住令牌(避免每次输入):

git config --global credential.helper store # 永久保存凭据(服务器本地)

三、在VS Code中同步代码(两种场景)

场景1:服务器上已有代码,需关联到新的GitHub仓库
  1. 在GitHub创建新仓库
    登录GitHub → New repository → 填写仓库名(如 flasc-project),不勾选“Initialize this repository with a README” → 创建仓库。
    • 若用HTTPS,会提示输入用户名(GitHub用户名)和密码(之前生成的PAT)。

服务器端代码关联GitHub仓库
在VS Code远程终端(进入代码目录,如 /root/AAcode/flasc-main):

cd /root/AAcode/flasc-main # 进入你的代码目录git init # 初始化本地仓库gitadd.# 暂存所有文件git commit -m "首次提交代码"# 提交到本地仓库# 关联GitHub远程仓库(替换为你的仓库SSH/HTTPS地址)git remote add origin [email protected]:你的GitHub用户名/你的仓库名.git # SSH地址# 或 HTTPS地址:git remote add origin https://github.com/你的GitHub用户名/你的仓库名.gitgit push -u origin main # 推送到GitHub(首次推送加 -u,后续直接 git push)
场景2:服务器上克隆已有GitHub仓库(从零开始)
  1. 在VS Code中打开仓库
    点击VS Code左侧“资源管理器” → “打开文件夹” → 选择克隆的仓库目录 → 打开。

在VS Code远程终端克隆仓库

# 克隆仓库(SSH地址,需已配置SSH密钥)git clone [email protected]:你的GitHub用户名/你的仓库名.git # 或 HTTPS地址:git clone https://github.com/你的GitHub用户名/你的仓库名.gitcd 仓库名 # 进入克隆的目录

四、日常同步操作(VS Code图形化界面)

  1. 修改代码后提交到本地仓库
    • 左侧点击“源代码管理”图标(类似分支的图标) → 查看修改的文件。
    • 勾选要提交的文件(或点击“+”全部暂存) → 在“消息”框输入提交说明(如“修复xxx bug”) → 点击“√”提交。
  2. 推送到GitHub
    提交后,点击源代码管理面板顶部的“↑”(推送)按钮,代码会同步到GitHub远程仓库。
  3. 拉取GitHub最新代码(多人协作时)
    点击“↓”(拉取)按钮,获取远程仓库的最新更新,避免冲突。

五、常见问题解决

  1. 推送失败提示“权限不足”
    • 检查SSH密钥是否正确添加到GitHub(方案1步骤2),或HTTPS令牌是否有效。
    • 确认远程仓库地址正确:git remote -v 查看,错误则修改:git remote set-url origin 新地址
  2. VS Code不显示Git状态
    • 确保已在VS Code中打开仓库目录(而非父目录)。
    • Ctrl+Shift+P → 输入 Git: Initialize Repository 重新初始化。

提交时中文乱码
服务器端配置Git编码:

git config --global i18n.commitencoding utf-8 git config --global i18n.logoutputencoding utf-8 

通过以上步骤,即可在VS Code远程连接的服务器上无缝同步代码到GitHub,日常操作主要依赖VS Code的图形化界面,简单高效。

Read more

单双序列问题——动态规划

单双序列问题——动态规划

文章目录 * 一、最长递增子序列 * 二、等差数列划分II-子序列 * 三、最长公共子序列 * 四、正则表达式匹配 动态规划是解决复杂算法问题的利器,本文将聚焦于单序列与双序列两类经典问题,通过分析最长递增子序列、正则表达式匹配等典型案例,深入剖析动态规划的状态定义与转移方程构建思路。 在阅读该文章时最好对基础的动态规划有所了解,因为在此不会讲解动态规划基础的细节,大家可以通过阅读下文进行学习:基础dp——动态规划多状态dp——动态规划子数组问题——动态规划 单序列问题往往具备两个关键特征,使其特别适合用动态规划求解。 * 问题解决路径需拆解为多个步骤,每个步骤都存在多种选择,最终目标是计算可行解的总数,或是找到满足条件的最优解。 * 问题的输入数据通常呈现为序列形态,比如一维数组、字符串等典型的线性数据结构。 根据题目的特点找出该元素对应的最优解(或解的数目)和前面若干元素(通常是一个或两个)的最优解(或解的数目)的关系,并以此找出相应的状态转移方程。一旦找出了状态转移方程,只要注意避免不必要的重复计算,问题就能迎刃而解。 下面讲解两个适合运用动态规划的单序

By Ne0inhk
【算法】【优选算法】多源BFS

【算法】【优选算法】多源BFS

目录 * 一、多源BFS * 二、542.01 矩阵 * 三、1020.⻜地的数量 * 四、1765. 地图中的最⾼点 * 五、1162. 地图分析 一、多源BFS 单源最短路:只有一个起点到终点的最短路问题。 多源最短路问题:有多个起点到终点的最短路问题。 多源BFS:用BFS来解决边权相同的多源最短路问题。 解法: 1. 暴力解题,把多源最短路问题,转化为若干个单源最短路问题。 2. 把所有起点当成一个起点,问题就变成了单源最短路问题。 二、542.01 矩阵 题目链接:542.01 矩阵 题目描述: 题目解析: * 给一个只有0 1 的二维数组,计算其中每一个元素到0的最短距离,自己是0距离就是0,将距离存入一个相同规模二维数组的下标中。 法一:

By Ne0inhk
【LeetCode 经典题解】:队列与栈的双向模拟——从原理到代码详解

【LeetCode 经典题解】:队列与栈的双向模拟——从原理到代码详解

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:Java.数据结构 【前言】 数据结构中,栈(后进先出)和队列(先进先出)特性迥异。本系列聚焦LeetCode经典题:队列实现栈与栈实现队列,剖析如何突破结构限制,实现特性互模拟,助你深入理解两者本质。 文章目录: * 一、队列实现栈 * 1.思路分析 * 2.代码详解 * 2.1 push(int x) * 2.2 pop() * 2.3 top() * 二、栈实现队列 * 1.思路分析 * 2.代码分析 * 2.1 push(int

By Ne0inhk
《算法题讲解指南:优选算法-位运算》--35.两个整数之和,36.只出现一次的数字 ||,37.消失的两个数字

《算法题讲解指南:优选算法-位运算》--35.两个整数之和,36.只出现一次的数字 ||,37.消失的两个数字

🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》 《C++入门到进阶&自我学习过程记录》《算法题讲解指南》--从优选到贪心 ✨未择之路,不须回头 已择之路,纵是荆棘遍野,亦作花海遨游 目录 35.两个整数之和 题目链接: 题目描述: 题目示例: 解法(位运算): 算法思路: C++算法代码: 算法总结及流程解析: 36.只出现一次的数字 || 题目链接: 题目描述: 题目示例: 解法(比特位计数): 算法思路: C++算法代码: 算法总结及流程解析: 38. 消失的两个数字 题目链接: 题目描述: 题目示例: 解法(位运算): 算法思路: C++算法代码: 算法总结及流程解析: 结束语

By Ne0inhk