代码管理——VS Code|Git
代码管理——VS Code|Git
VS Code 与 Git 的教程网上已有很多,这里结合自己使用经验,整理一下笔记,方便自用查阅,也给有需要的朋友参考。(小白友好篇)
1、配置密钥
说明:为什么要配置密钥呢(其实主要是公钥),假设现在是这样的场景,使用VS Code通过SSH连接上了服务器上的代码工程(或者是本机硬盘中的代码工程),想要和远程仓库(GitLab为例)进行交互,如
git push、git pull等涉及远程交互的操作时,如果没有在GitLab 上配置 SSH 公钥,则 Git 会要求输入 GitLab 的 用户名和密码 进行身份验证。
具体原因:Git 与远程仓库(如 GitLab)的身份验证方式(这里主要讲述基于SSH协议的连接方式,因为大多数情况下我们都是使用VS Code的Remote-SSH插件连接服务器,事实上还有基于HTTPS协议的连接),要求本地私钥与 GitLab 配置的公钥匹配进行验证,验证通过后,则无需每次输入密码(配置一次即可)。
为避免频繁输入密码,所以一般都在 GitLab 上配置 SSH 公钥,使用 SSH 协议连接远程仓库,一劳永逸解决身份验证问题。(如果之前配置过,则不需要重复再配置)
首先,进入VS Code 远程服务器的工程中,终端执行:
# 在服务器上生成 SSH 密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 例如
ssh-keygen -t rsa -b 4096 -C "123456789@qq.com"
-
ssh-keygen:生成 SSH 密钥的核心工具,是 OpenSSH 套件的一部分,几乎所有 Linux/Unix 系统(包括服务器)都预装。 -
-t rsa:指定密钥的加密算法为RSA(一种主流的非对称加密算法)。常见的算法还有ed25519(更安全高效,推荐优先使用)、dsa(已不安全,不建议)等。 -
-b 4096:指定密钥的长度为4096 位。位数越高,密钥安全性越强(破解难度越大),4096 位是目前的推荐标准(替代了传统的 2048 位)。 -
-C "your_email@example.com":给密钥添加一个注释(Comment),通常用邮箱或用户名,方便识别这个密钥的用途或归属(比如 “服务器 A 的登录密钥”“GitHub 账号绑定” 等),不影响密钥功能。
运行后,会出现交互提示:Enter file in which to save the key (/root/.ssh/id_rsa):

解释:
-
默认路径是当前用户的
.ssh目录(如/root/.ssh/,普通用户是/home/用户名/.ssh/),文件名默认是id_rsa(私钥)和id_rsa.pub(公钥)。 -
直接按回车使用默认路径;若想自定义(比如区分多个密钥),输入路径 + 文件名(如
/root/.ssh/server_key)。
对于保存密钥的位置,直接按回车键,接受默认位置(/root/.ssh/id_rsa)即可。
【注意】如果是docker使用的话,最好放置在/home下面,可持久化,避免重启docker丢失数据,如果更改了密钥地址,如放置在/home/.ssh/id_rsa,则需设置Git的SSH命令 git config core.sshCommand "ssh -i /home/.ssh/id_rsa"来配置SSH默认在/home/.ssh/目录下查找密钥。
这里直接回车后,显示:

对于密码短语(passphrase),可以直接按回车键设置为空(推荐,这样后续使用 git 时不需要每次输入密码),或者设置一个密码(如果需要更高的安全性)。
我这里直接回车,即密码为空

完成后,系统会生成:
-
私钥:/root/.ssh/
id_rsa,私钥(重要!妥善保管,不可泄露给他人,相当于 “钥匙”)。 -
公钥:/root/.ssh/
id_rsa.pub,公钥(可以公开,相当于 “锁”,用于配置到需要登录的目标服务器、代码仓库等)。
# 查看公钥内容cat ~/.ssh/id_rsa.pub
公钥内容,看起来类似于:
ssh-rsa AAAAB3NzaC1yc2E... your_email@example.com
生成密钥后,通常将公钥(id_rsa.pub)的内容添加到目标设备的授权列表中,例如:
-
免密码登录其他服务器:将公钥内容追加到目标服务器的
~/.ssh/authorized_keys文件中。 -
授权访问 GitHub/GitLab:将公钥内容添加到平台的 “SSH 密钥” 设置中。
复制显示的公钥内容,将这个公钥添加到自己的 GitLab 账号中:
-
登录 GitLab
-
进入 Settings(设置)
-
找到 SSH Keys
-
粘贴公钥内容并保存

完成这些步骤后,就可以通过 SSH 来访问 GitLab 仓库了。
2、配置用户
说明:Git 是一个分布式版本控制系统,核心功能之一是记录代码的每一次修改(即 “提交”)。每一次 git commit 操作都会生成一条提交记录,而 user.name 和 user.email 会被嵌入到这条记录中,作为 “谁提交了这次修改” 的标识。配置用户身份其实就是配置user.name 和 user.email,本质是为了明确代码提交的归属者,确保每一次代码变更都能追溯到具体的提交人。
例如,当我们执行 git log 查看提交历史时,会看到类似这样的信息:
commit a1b2c3d4e5f6...
Author: Your Name <your_email@example.com>
Date: Thu Nov 6 10:00:00 2025 +0800修复了XX功能的bug
这里的 Author 信息就来自于 git config 配置的 user.name 和 user.email。
配置用户方式,可以分为全局Git身份和按仓库单独配置身份。
2.1 服务器配置全局Git用户身份
在服务器上配置 Git 全局设置(如果还没有配置):
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
Your Name 是在 GitLab 上的用户名称,这个名字会显示在代码提交记录中,可以按以下步骤在 GitLab 中查看自己的用户名:
-
登录到 GitLab
-
点击右上角头像
-
查看个人资料(Profile)
在 GitLab 中,可以看到两个相关的名字:
-
Username:登录用户名
-
Name:显示名称
通常,我们在 git config 中设置的 user.name 应该使用显示名称(Name),这样在代码提交历史中会更容易识别。
例如,如果在 GitLab 中的显示名称是 “Zhang San”,那么可以这样配置:
git config --global user.name "Zhang San"
git config --global user.email "your_email@example.com"
可以通过以下命令验证设置:
# 查看当前的 git 配置
git config --global --list
提示:
-
user.name 可以是中文名也可以是英文名。
-
user.email 应该使用在 GitLab 注册时使用的邮箱。
-
这个设置是为了标识代码提交者的身份,建议使用真实姓名,这样团队协作时更容易识别。
2.1 按仓库单独配置身份
git config --global 配置的是当前用户(在服务器上通常是 root 或某个共享用户)的全局 Git 身份,这会导致所有通过该用户提交的代码都显示为同一个名字和邮箱,无法区分实际提交者,确实不适合多人共用的服务器环境。
其实更合理的做法是 不设置全局身份,而是在每个 Git 仓库中单独配置提交者信息,确保不同开发者提交的代码能正确显示各自的身份。
操作步骤:
- 清除服务器上的全局 Git 身份(如果已配置),使用
unset
git config --global --unset user.name
git config --global --unset user.email
- 进入具体的 Git 仓库,单独配置当前仓库的提交者信息
每个开发者在服务器上操作自己的仓库时,先进入仓库目录,设置自己的身份:
# 进入仓库目录
cd /path/to/your/repo# 配置当前仓库的提交者姓名(替换为实际姓名)
git config user.name "张三"# 配置当前仓库的提交者邮箱(替换为实际邮箱)
git config user.email "zhangsan@example.com"
这样,该仓库的所有提交都会使用这里配置的身份,不影响其他仓库。
3、关联远程仓库及提交
3.1 关联
初始化本地仓库并关联远程仓库:
# 进入项目目录,例如
cd /home/Projects/my_pro# 初始化 Git 仓库(如果还没有初始化),会在工程目录中出现.git
git init# 添加远程仓库,例如
git remote add origin ssh://git@192.11.22.33:44/a/b.git# 确认远程仓库已添加
git remote -v
关联作用:告诉Git远程仓库的位置,后续可以推送和拉取代码。
指令解释:
-
git remote add <名称> <URL>: 添加远程仓库 -
origin: 远程仓库的默认名称(可以自定义) -
可用
git remote -v查看已配置的远程仓库
3.2 .gitignore文件创建(可选)
一般情况下,我们的工程根目录下可能会存在一些测试用的文件(如视频、图像等)或者内存占用较大的文件(模型等),在管理或提交Git时,我们是不想将这类文件上传至远端的,故会通过.gitignore文件排除这些文件类型。
例如:
-
Python缓存:
__pycache__/,*.pyc -
日志文件:
logs/,*.log -
大型数据文件:
*.tif,*.jpg,*.png,*.gif,*.mp4 -
临时文件:
tmp/,*.tmp -
环境文件:
.env,venv/ -
IDE文件:
.vscode/,.idea/
示例.gitignore
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST# PyTorch models and weights
*.pth
*.pt
*.bin
*.safetensors
*.ckpt
*.model# Model directories
clip_algorithms/weights/
vlm_algorithm/Qwen2-VL-2B-Instruct/
match_algorithms/XFeat/weights/
scd_algorithm/weights/
scd_algorithm/src/segment_anything/sam_vit_h_4b8939.pth
docs/
cache_results/# Large data files
*.tif
*.tiff
*.jpg
*.jpeg
*.png
*.gif
*.mp4
*.avi
*.mov
*.pdf
*.md# Logs
logs/
*.log# IDE
.vscode/
.idea/
*.swp
*.swo
*~# OS
.DS_Store
Thumbs.db# Temporary files
tmp/
temp/
*.tmp# Environment
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/# Jupyter Notebook
.ipynb_checkpoints
4.3 代码提交
首先是使用 git add . 和 git commit -m "..." 这两步操作,将代码变更提交到本地的版本历史中,但不会自动推送到远程的 GitLab 仓库。
# 将所有文件添加到暂存区(.gitignore会自动排除不需要的文件)
git add .
# 作用:准备要提交的文件,Git会跟踪这些文件的变化# 提交代码到本地仓库,-m参数指定提交信息
git commit -m "Initial commit: 填你的改动信息用于日志记录"
指令解释:
-
git add .: 添加当前目录下所有文件到暂存区 -
git add <文件名>: 添加指定文件到暂存区 -
git commit -m "信息": 提交暂存区的文件到本地仓库 -
提交信息应该清晰描述本次修改的内容。
接着,将本地提交推送到远程 GitLab,执行:
git push origin <分支名>
其中, origin 是远程仓库的默认别名(初始化仓库时通过 git remote add origin <远程地址> 设置)。
<分支名> 通常是我们当前工作的分支(如 main 或 master,多人协作时可能是 feature 分支)。
例如,我这里执行:
git push -u origin master
其中的 -u 是因为第一次推送该分支到远程,需要加上 -u 参数关联分支(后续推送可省略),完成推送。
【注意】因为是第一次提交,这里需要确保远程仓库(GitLab)的 master 分支为空,或者和本地代码一样,为空的话,会直接提交成功,不为空的话,若master 分支存在本地没有的更新,此时 Git 会拒绝推送,防止覆盖远程的变更,此时就需要执行 git pull 命令,将远程 master 分支的更新拉到本地,并自动合并到你的本地 master 分支:git pull origin master --allow-unrelated-histories(其中的--allow-unrelated-histories是用于强制合并两个 “无关联历史” 的仓库,避免两者没有共同的历史提交,或者本地和远程的仓库起源不同,如本地是全新仓库,远程是另一个独立仓库),如果合并过程中出现 冲突(Conflict),终端会提示哪些文件有冲突。此时需要打开这些文件,找到类似 <<<<<<< HEAD、=======、>>>>>>> origin/master 的标记,手动编辑保留正确的代码,然后保存文件。解决冲突后,需要手动提交合并结果:
git add . # 暂存冲突文件
git commit -m "解决合并冲突,整合远程更新" # 提交合并
接着再次推送本地代码,重新执行推送命令即可:
git push -u origin master
习惯使用VS Code后,这些操作都可以在源代码管理界面中点击对应按钮来完成,无需手动输入命令。
4、Git使用
本地工程关联远程仓库之后,就可以执行Git相关的操作了。为了保持知识完整,这里补充一下Git相关知识和操作指令等。
4.1 Git概念
概念性的东西了解一下即可,不断使用的过程中才能逐步加深理解。
Git是一个分布式版本控制系统,用于跟踪文件的变化历史,支持多人协作开发。
Git有几个核心概念:
-
仓库(Repository): 存储项目文件和版本历史的地方。
-
提交(Commit): 保存文件变化的快照。
-
分支(Branch): 独立的开发线,默认分支通常是
master或main。 -
远程仓库(Remote): 托管在服务器上的仓库,用于团队协作。
-
克隆(Clone): 从远程仓库复制到本地。
-
推送(Push): 将本地提交上传到远程仓库。
-
拉取(Pull): 从远程仓库下载最新变化。
还有三个区域概念:
-
工作区(Working Directory): 你直接编辑的文件。
-
暂存区(Staging Area):
git add后文件存放的地方。 -
本地仓库(Repository):
git commit后文件存放的地方。
4.2 Git操作一般流程
1、初始化项目流程:
创建项目 → 初始化Git → 添加文件 → 提交 → 连接远程仓库 → 推送
操作总结:
1、初始化本地git
git init
2、将工程文件添加到暂存区
git add .
3、提交本地代码,提交暂存区文件到本地仓库:
git commit -m "初始化项目提交" # 引号内为提交说明,可自定义
4、在GitLab上创建新项目,创建后,复制项目的HTTPS或SSH地址(如:https://gitlab.com/用户名/项目名.git)
5、关联本地仓库与GitLab远程仓库
在 VS Code 终端中执行:
git remote add origin 你复制的GitLab仓库地址
(如果提示remote origin already exists,可先执行git remote rm origin删除旧关联)
6、推送本地代码到 GitLab
首次推送需指定分支(默认主分支为main或master):
git push -u origin main # 若分支是master则替换为git push -u origin master,第一次关联需要加-u
此时会提示输入 GitLab 的账号密码(或 SSH 密钥验证)。
另外,需确保远端仓库为空或者远端与要推送的代码无变更,否则Git会拒绝推送,防止覆盖远程的变更。
解决方法:先拉取远程的最新代码,合并到本地后再推送。
7、验证配置成功
刷新 GitLab 项目页面,若能看到本地工程文件,说明配置完成
后续开发时,只需通过 VS Code 左侧的 "源代码管理" 图标(或快捷键Ctrl+Shift+G)进行提交、拉取、推送等操作即可。
2、日常开发流程:
拉取最新代码 → 修改文件 → 添加到暂存区 → 提交 → 推送到远程
3、团队协作流程:
克隆仓库 → 创建分支 → 开发功能 → 提交 → 推送分支 → 合并请求
4.3 常用Git指令
1、查看状态和历史
git status # 查看工作区状态
git log # 查看提交历史
git log --oneline # 简洁的提交历史
git diff # 查看工作区与暂存区的差异
git diff --cached # 查看暂存区与仓库的差异
2、分支操作
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支
git checkout -b 新分支名 # 创建并切换到新分支
git checkout 分支名 # 切换分支
git merge 分支名 # 合并分支
3、撤销操作
git checkout -- 文件名 # 撤销工作区修改
git reset HEAD 文件名 # 撤销暂存区修改
git reset --hard HEAD~1 # 撤销最近一次提交
4、远程仓库操作
git remote -v # 查看远程仓库
git fetch origin # 获取远程更新(不合并)
git pull origin master # 拉取并合并远程更新
git push origin master # 推送到远程仓库
4.4 VSCode中使用Git
-
VSCode 远程 SSH 连接后(或者直接使用本机本地代码工程),会自动识别项目中的 Git 仓库
-
在左侧活动栏中点击 “源代码管理” 图标(分支图标)
-
可以直接在 VSCode 中:
-
查看文件变更
-
暂存更改
-
提交代码
-
推送/拉取代码
-
切换分支
-
查看历史记录等等
-

4.5 实用Git插件
-
Git History
-
Git Graph
4.6 常见问题
1、执行 git push -u origin master 时报错,错误关键字包含类似 “Connection closed by GitLab的IP port”的错误,导致无法连接远程仓库,通常是 SSH 密钥认证失败 或 服务器配置限制 导致的,可以:
- 重新查看本地公钥(确保复制完整),
cat ~/.ssh/id_rsa.pub,确保公钥从 ssh-rsa 开头到 邮箱 结尾的全部内容粘贴至GitLab的“Add key” 中并保存。 - 手动测试与 GitLab 服务器的 SSH 连接,确认是否能成功认证,例如出现 Connection closed by 192.000.111.22 port 7022 错误,可以输入
ssh -T -p 7022 git@192.000.111.22来确认(如果改过密钥地址,则加-i参数来指定其地址,例如ssh -i /home/.ssh/id_rsa -T -p 7022 git@192.000.111.22),正常情况下,成功会提示:Welcome to GitLab, @你的GitLab用户名!。 - 检查仓库成员权限,确认被添加到仓库成员中,且权限级别允许推送代码。
2、如果原本GitLab的<远程地址>本来就存在代码,而我们第一次要推送的代码存在更新,则需要先拉取远程的最新代码,合并到本地后再推送。
3、如果更改了密钥地址,如放置在/home/.ssh/id_rsa,则需设置Git的SSH命令 git config core.sshCommand "ssh -i /home/.ssh/id_rsa"来配置SSH默认在/home/.ssh/目录下查找密钥。
