在 IDE 中提交代码到远程仓库的完整指南

# 在 IDE 中提交代码到远程仓库的完整指南

> 掌握在集成开发环境中使用 Git 的正确工作流程,避免常见错误,提高开发效率。

## 文章摘要
本文详细介绍了在 IDE 的图形界面下提交代码到远程仓库的完整操作流程,包括准备工作、暂存更改、提交到本地、推送到远程等关键步骤。同时提供了常见 IDE 的操作对比、最佳实践和故障排除方法。

## 目录
1. [完整操作流程概述](#完整操作流程概述)
2. [详细步骤(以 VS Code 为例)](#详细步骤以-vs-code-为例)
3. [常见 IDE 的 Git 操作对比](#常见-ide-的-git-操作对比)
4. [最佳实践指南](#最佳实践指南)
5. [故障排除与解决方案](#故障排除与解决方案)
6. [完整示例流程](#完整示例流程)
7. [重要提醒与总结](#重要提醒与总结)

## 完整操作流程概述

### 基本流程链
“`
[修改文件] → [保存文件] → [检查修改] → [暂存更改] → [提交到本地] → [推送到远程]
“`

### 关键概念区分
– **暂存 (Stage)**: 选择要提交的文件
– **提交 (Commit)**: 保存到**本地**仓库(你的电脑)
– **推送 (Push)**: 上传到**远程**仓库(服务器)

## 详细步骤(以 VS Code 为例)

### 步骤 1:修改并保存文件
1. 编辑项目文件
2. 按 `Ctrl+S` 保存更改
3. 文件会自动出现在”源代码管理”面板的”更改”列表中

### 步骤 2:查看和暂存更改
1. 点击左侧边栏的”源代码管理”图标(Git 图标)
2. 在”更改”列表中查看所有修改的文件
3. 点击文件名可以查看具体修改内容(绿色表示新增,红色表示删除)
4. 执行以下操作之一:
– 点击文件旁边的”+”号:暂存单个文件
– 点击”暂存所有更改”:暂存全部修改

### 步骤 3:提交到本地仓库
1. 在”消息”输入框中输入有意义的提交信息
2. **提交信息格式建议**:
“`
第一行:简短描述(50字以内)

详细说明:
– 做了什么修改
– 为什么需要这个修改
– 影响的范围和模块
“`
3. 点击”提交”按钮(✓图标)
4. 成功提交后,文件会从”暂存的更改”列表中消失

### 步骤 4:推送到远程仓库
1. 点击”同步更改”按钮(循环箭头图标)
2. 或者点击”…”菜单 → 选择”推送”
3. 等待推送操作完成
4. 查看状态栏的提示信息确认推送成功

## 常见 IDE 的 Git 操作对比

### Visual Studio Code
– **暂存更改**:点击文件旁边的”+”或”暂存所有更改”
– **提交更改**:输入消息后点击”提交”按钮
– **推送更改**:点击”同步更改”或”推送”
– **拉取更新**:点击”拉取”或”同步更改”

### IntelliJ IDEA
– **暂存更改**:右键文件 → “Git” → “Add”
– **提交更改**:`Ctrl+K` 或点击”Commit”
– **推送更改**:`Ctrl+Shift+K` 或点击”Push”
– **拉取更新**:`Ctrl+T` 或点击”Pull”

### Eclipse
– **暂存更改**:右键文件 → “Team” → “Add to Index”
– **提交更改**:右键项目 → “Team” → “Commit”
– **推送更改**:右键项目 → “Team” → “Push”
– **拉取更新**:右键项目 → “Team” → “Pull”

## 最佳实践指南

### 提交前检查清单
– ✅ 运行相关测试确保功能正常
– ✅ 检查代码格式和规范
– ✅ 查看差异对比确认修改正确
– ✅ 确认没有包含敏感信息(密码、密钥等)
– ✅ 删除不必要的调试代码

### 提交信息规范
“`markdown
# 好的提交信息示例

修复登录页面样式问题

– 调整登录表单的间距和对齐
– 修复移动端显示错位问题
– 优化按钮 hover 效果

相关任务:#JIRA-123
“`

### 推送前确认事项
– ✅ 本地提交成功完成
– ✅ 网络连接稳定正常
– ✅ 分支选择正确(通常是 master/main)
– ✅ 没有未解决的代码冲突
– ✅ 已拉取最新的远程更新

## 故障排除与解决方案

### 问题 1:提交后文件仍在”暂存的更改”中
**可能原因**:
– 文件被其他进程锁定
– 文件格式损坏
– IDE 缓存问题

**解决方案**:
1. 关闭所有编辑器标签页
2. 重启 IDE
3. 使用命令行检查状态:`git status`
4. 恢复文件:`git checkout — <文件名>`

### 问题 2:推送失败或超时
**可能原因**:
– 网络连接不稳定
– 存在代码冲突
– 远程仓库权限问题

**解决方案**:
1. 检查网络连接状态
2. 先拉取最新更新:`git pull`
3. 解决冲突后再尝试推送
4. 使用命令行查看详细错误信息

### 问题 3:看不到”推送”按钮
**可能原因**:
– 未配置远程仓库
– 未设置上游分支
– IDE 插件问题

**解决方案**:
1. 检查远程配置:`git remote -v`
2. 添加远程仓库:`git remote add origin <仓库地址>`
3. 设置上游分支:`git push -u origin master`
4. 重新加载 IDE 或重启

## 完整示例流程

### 场景:更新配置文件模板
“`markdown
1. 修改 `config.php.example` 文件
2. 保存文件(Ctrl+S)
3. 打开”源代码管理”面板
4. 看到 `config.php.example` 出现在”更改”列表中
5. 点击文件查看具体的修改内容
6. 点击”+”号暂存该文件
7. 输入提交信息:”更新配置文件模板说明”
8. 点击”提交”按钮
9. 点击”同步更改”按钮
10. 等待推送操作完成
11. 查看状态栏显示”已同步”
“`

## 重要提醒与总结

### 核心原则
**记住这个顺序永远不会错**:
“`
修改 → 保存 → 暂存 → 提交 → 推送
“`

### 关键区别理解
– **提交 (Commit)** = 保存到**本地**仓库(你的个人电脑)
– **推送 (Push)** = 上传到**远程**仓库(团队共享的服务器)

### 成功验证方法
1. **本地验证**:文件从”暂存的更改”列表中消失
2. **远程验证**:在代码托管平台(如 CodeArts、GitHub)上能看到新的提交记录

### 效率提升技巧
1. **小步提交**:不要一次性提交太多文件
2. **定期推送**:避免本地堆积大量未推送的提交
3. **及时拉取**:保持本地与远程同步
4. **使用命令行辅助**:当 GUI 出现问题时,用命令行工具诊断

## 结语

掌握在 IDE 中正确使用 Git 的工作流程,不仅能提高开发效率,还能避免许多常见的版本控制问题。记住,良好的版本控制习惯是团队协作和项目维护的基石。通过本文的指南,希望你能更加自信地在集成开发环境中管理代码变更。

**实践建议**:在实际项目中应用这些流程,逐渐形成肌肉记忆,让版本控制成为你开发过程中的自然习惯。


*本文基于实际开发经验总结,适用于大多数基于 Git 的版本控制工作流。具体操作可能因 IDE 版本和个人配置略有差异。*

**标签**:Git, 版本控制, IDE, 开发工具, 工作流程, 最佳实践
**分类**:开发工具, 编程技巧, 团队协作

排查 SSH 客户端无法绑定转发端口的问题(Windows)

问题现象

在 Windows 10 中,使用 Bitvise SSH Client 配置本地代理转发端口(127.0.0.1:10800)时失败,报错:

Could not enable SOCKS/HTTP proxy forwarding on 127.0.0.1:10800: Address is already in use; bind() failed: Windows error 10013

排查步骤与命令记录

1. 检查是否有进程监听 10800(无结果)
# PowerShell 方式
Get-NetTCPConnection -LocalPort 10800 | Select-Object OwningProcess

# 或使用 netstat(CMD/PowerShell 均可)
netstat -ano | findstr :10800

→ 无输出,说明没有常规 TCP 监听。

2. 检查是否有隐藏的端口转发规则
netsh interface portproxy show all

→ 无输出,排除 portproxy 占用。

3. 使用 Process Explorer 深度扫描(GUI 工具)
  • 下载 Process Explorer
  • 以管理员身份运行 → Ctrl+F → 搜索 10800
    → 未发现任何句柄或线程绑定。
4. 关键一步:检查 Windows “排除端口范围”
netsh int ipv4 show excludedportrange protocol=tcp

输出示例(问题存在时):

开始端口    结束端口
----------    --------
     10745       10844   ← 10800 被包含在此区间!
     10845       10944
     ...

结论:端口 10800 被 Windows NAT 服务动态保留,普通程序无法绑定。


解决方案:重启 winnat 服务重置端口预留

适用于个人开发机,不影响日常使用。若使用 WSL2/Docker,操作后可能需重启相关服务。

# 以管理员身份运行 PowerShell

# 停止 Windows NAT Driver
net stop winnat

# 启动 Windows NAT Driver(会重建排除范围,通常大幅缩小)
net start winnat
验证是否生效:
netsh int ipv4 show excludedportrange protocol=tcp

正常输出(问题解决后):

开始端口    结束端口
----------    --------
        80          80
      5357        5357
     50000       50059     *

10745–11144 的“端口块” 范围已消失,这样所需的 10800 就可用了!


验证
  1. 重新连接 SSH,并启用本地代理转发到 127.0.0.1:10800
  2. 成功启动,无报错!

总结

问题根源Windows 自动将一些 端口段 加入“排除端口范围”
表象报“Address already in use”,但 netstat 查不到
核心命令netsh int ipv4 show excludedportrange protocol=tcp
快速修复net stop winnat && net start winnat

(Qwen3-Max 帮助整理文档与格式)

Windows 10 简体中文补充字体 无法添加 0x80070490

最近系统持续多次出现,通知中心出现一个图标带“字”的通知,提示安装失败的通知。点击会打开设置,也不知道要作甚吗。一番查阅后才解决:

简体中文补充字体 (Chinese (Simplified) Supplemental Fonts) 安装失败的问题,验证,在 设置→系统→可选组件 中找不到简体中文补充字体。

  1. 先以管理员模式打开CMD命令行,进入 Powershell : powershell.
  2. 获取组件名称: Get-WindowsCapability -online -name *fonts* | ft Name, DisplayName, Description 可以得知名称为 Language.Fonts.Hans~~~und-HANS~0.0.1.0
  3. 再确认下该组件的状态: Get-WindowsCapability -online -name Language.Fonts.Hans~~~und-HANS~0.0.1.0 可得知状态是 Superseded (State : Superseded)
  4. 删除该组件: Remove-WindowsCapability -Online -Name Language.Fonts.Hans~~~und-HANS~0.0.1.0
  5. 重新安装该组件Add-WindowsCapability -Online -Name Language.Fonts.Hans~~~und-HANS~0.0.1.0

看到 State : Installed (已安装)

在 设置 → 系统→ 可选组件 中,可看到 “简体中文补充字体” 已添加。

重启系统完成。

Linux安装微软命令行文本编辑器-Microsoft Edit

微软干了一件好事!2025 年 5 月 18 日,Microsoft 发布了用 Rust 编程语言编写的编辑器的开源重建版本,简称为 Edit,适用于现代版本的 Windows。版本号未继续,重置从1.0.0开始,目前已经是1.2.0

Microsoft Edit 是 MS-DOS 的怀旧风格, 以widnows Dos 的操作习惯,解决了Linux shell 中编辑文本痛苦的大问题。

目前Microsoft Edit已支持包括FreeBSD在内的多种Unix-like系统,但Debian官方仓库尚未收录该软件包。只能通过下载安装文件的方式安装,安装过程中若遇到网络问题,可能需要配置合适的软件源镜像。

Linux 下安装脚本(Ubuntu、Debian 和 Linux Mint):

# 安装 Zstandard 
apt install zstd

# 下载软件包
wget https://github.com/microsoft/edit/releases/download/v1.2.0/edit-1.2.0-x86_64-linux-gnu.tar.zst

# 解压缩到用户的当前目录
tar xvf edit-1.2.0-x86_64-linux-gnu.tar.zst

# 将其移动到 bin 目录中以便随时访问,请相应调整路径
mv edit /usr/local/bin/edit

# 查看版本号
edit -v

# 启动编辑器
edit

终端输入edit命令即可启动编辑器

edit --version 查看版本

Windows 下 使用 winget 安装

winget install Microsoft.Edit

常用快捷键

New File:Ctrl+N
Open File:Ctrl+0
Save:Ctrl+s
Close Editor:Ctrl+W
Exit:Ctrl+Q
Undo:Ctrl+Z
Redo:Ctrl+Y
Cut:Ctrl+x
Copy:Ctrl+c
Paste:Ctrl+V
Find:Ctrl+F
Replace:Ctrl+R

解决 wsl 重启后 /etc/resolv.conf 中的DNS丢失

今天在wsl中不知道操作了什么,重启后apt更新报错,发现resolv.conf的DNS变成了“127.0.0.1”,然后用 echo 写入 DNS,重启后又是没有了。

按微软的文档,设置修改 /etc/wsl.conf

[network]
generateResolvConf = false

然后写入 DNS 到 resolv.conf

echo "nameserver 192.168.1.1" > /etc/resolv.conf
echo "nameserver 114.114.115.115" > /etc/resolv.conf

重启后,一样,添加的nameserver没有了。

在windows中,直接编辑 \wsl.localhost\Debian\etc\resolv.conf

提示“系统无法辨识文件名”,无法直接修改。

看了服务,猜测是不是某些服务控制修改的,如:resolvconf,rdnssd,systemd-resolved,先关闭启动:

systemctl disable --now resolvconf.service rdnssd.service systemd-resolved.service

再次 echo DNS 到 resolv.conf, 重启后,还是不行。。。

无奈,直接删除了resolv.conf: rm /etc/resolv.conf

再生成写入:

echo "nameserver 192.168.1.1" > /etc/resolv.conf
echo "nameserver 114.114.115.115" > /etc/resolv.conf

然后再设置只读:sudo chattr -f +i /etc/resolv.conf

再次重启,DNS没有丢失。

如果要在windows中直接修改,设置为属性可写:sudo chattr -i /etc/resolv.conf

不知道为什么必须要先删除,才再建resolv.conf,才可以修改成功。。。

【end】

解决WSL因盘符变更,系统找不到指定的路径

新加了一块硬盘(F), 将WSL存放的老盘(L)数据拷入新硬盘(F)

之后因盘符变更, 启动wsl时提示如下:

无法将磁盘“L:\WSL\Debian\ext4.vhdx”附加到 WSL2: 系统找不到指定的路径。
错误代码: Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_PATH_NOT_FOUND

[已退出进程,代码为 4294967295 (0xffffffff)]

问题是去哪里修改? 虚拟机调用镜像的设置保存在哪里?

找了篇微软文档参考: 如何查找 Linux 发行版的 .vhdx 文件和磁盘路径 https://learn.microsoft.com/zh-cn/windows/wsl/disk-space#how-to-locate-the-vhdx-file-and-disk-path-for-your-linux-distribution

.vhdx 文件和磁盘路径, 存储在注册表的以下地址中:

HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss

Lxss 下 类似 { guid } 的条目就是子系统条目, 有几个子系统会有几条。(我的有3个子系统 )

条目下数值项 “BasePath”,就是文件地址目录,直接修改盘符路径,重启wsl就可以了!

其他问题

如果修改注册表,wsl启动后,wsl提示:

<3>WSL (xxx) ERROR: UtilTranslatePathList:2852: Failed to translate” (之后跟着一个windows文件路径)

如我的提示:

<3>WSL (461) ERROR: UtilTranslatePathList:2852: Failed to translate L:\PHP\php-8.1.23-nts-Win32-vs16-x64

说明后面这个路径,是被设置在系统环境变量中,还是有由于盘符变动造成的问题。把系统环境变量的路径值修改了,就好了!

【end】

使用 HttpRepl 浏览、测试 Web API

The HTTP Read-Eval-Print Loop (REPL) 

  • 一种轻量级跨平台命令行工具,在所有支持的 .NET Core 的位置都可得到支持。
  • 用于发出 HTTP 请求以测试 ASP.NET Core Web API(和非 ASP.NET Core web API)并查看其结果。
  • 可以在任何环境下测试托管的 web API,包括 localhost 和 Azure 应用服务。

安装:dotnet tool install -g Microsoft.dotnet-httprepl

(视频)使用 HttpRepl 浏览 Web API:

https://learn.microsoft.com/zh-cn/shows/beginners-series-to-web-apis/exploring-web-apis-with-the-httprepl-16-of-18–beginners-series-to-web-apis

使用 HttpRepl 测试 Web API

https://learn.microsoft.com/zh-cn/aspnet/core/web-api/http-repl/?view=aspnetcore-8.0&tabs=windows

HttpRepl:用于与 RESTful HTTP 服务交互的命令行工具

https://devblogs.microsoft.com/dotnet/httprepl-a-command-line-tool-for-interacting-with-restful-http-services/#configure-visual-studio-for-windows-to-launch-httprepl-on-f5

HttpRepl GitHub 存储库https://github.com/dotnet/HttpRepl

powershell相关

查看别名

  • 使用Get-Command查看Alias的命令: Get-Command -CommandType Alias
  • 查看此Session中已经设定的所有别名:Get-Aliasgal
  • 查看某别名的原命令,如ls的原命令:Get-Alias ls
  • 查看某原命令的别名,如Get-ChildItem的别名:Get-Alias -Definition Get-ChildItem
  • 按属性获取别名:Get-Alias | Where-Object {$_.Options -Match "ReadOnly"}

Windows 中的兼容性别名

PowerShell 具有多个别名,使 UNIX 和 cmd.exe 用户可以在 Windows 中使用熟悉的命令。 下表显示了常用命令、相关的 PowerShell cmdlet 和 PowerShell 别名:

cmd.exe命令UNIX 命令PowerShell CmdletPowerShell 别名
cdchdircdSet-Locationslcdchdir
clsclearClear-Hostcls clear
copycpCopy-Itemcpicpcopy
deleraserdrmdirrmRemove-Itemrideleraserdrmrmdir
dirlsGet-ChildItemgcidirls
echoechoWrite-Outputwrite echo
mdmkdirNew-Itemni
movemvMove-Itemmimovemi
popdpopdPop-Locationpopd
pwdGet-Locationglpwd
pushdpushdPush-Locationpushd
renmvRename-Itemrniren
typecatGet-Contentgccattype

 备注

此表中的别名特定于 Windows。 某些别名在其他平台上不可用。 这是为了使本机命令能够在 PowerShell 会话中工作。 例如,未在 macOS 或 Linux 上将 ls 定义为 PowerShell 别名,以便运行本机命令而不是 Get-ChildItem

Windows 下GUI编辑工具 PowerShell ISE

单击“开始”,选择“Windows PowerShell”,然后单击“Windows PowerShell ISE”。 或者,可以在任何命令外壳或“运行”框中键入内容。powershell_ise.exe

Linux下安装 powershell

如果你已安装 .NET Core SDK,则可以轻松地安装 PowerShell 作为 .NET 全局工具

sh复制

dotnet tool install --global PowerShell

dotnet 工具安装程序将 ~/.dotnet/tools 添加到 PATH 环境变量中。 但是,当前运行的 shell 没有更新的 PATH。 应该可以通过键入 pwsh 从新 shell 启动 PowerShell。

尝试刷新 DNS 缓存的方法

当计算机首次访问网站时,它会将网站的DNS信息存储在缓存中,并且在下次访问同一网站时,它会在缓存中查找是否存在网站的信息以供使用。如果网站的 DNS 信息自上次访问计算机以来发生更改,则会打开旧版本的站点。

当 DNS指向IP 地址发生更改或缓存错误结果时,通过删除刷新DNS缓存中存储的数据,从而强制计算机查找网站的新 DNS 信息。这样做通常是为了加快该过程并最大限度地减少对相同主机名的请求。DNS缓存可以通过命令行或从浏览器清除。刷新主要操作系统和浏览器的 DNS 缓存,可以尝试以下的步骤:

在 Windows 10 中刷新 DNS
选项 1 – 命令提示符

要重置 DNS 解析程序缓存,请执行以下步骤:

  1. 点按按钮,然后键入Startcmd
  2. 右键单击 ,然后选择 。Command PromptRun as Administrator
  3. 键入,然后按 。(确保斜杠前有一个空格ipconfig /flushdnsEnter)

命令框将在屏幕上闪烁一瞬间,并清除 DNS 解析程序缓存。

此外,您可能还对其他一些相关命令感兴趣:

  • ipconfig /displaydns:它在Windows IP配置下显示您当前的DNS缓存。
  • ipconfig /registerdns:注册记录在主机文件中的 DNS 缓存。
  • ipconfig /release:释放当前的 IP 地址设置。
  • ipconfig /renew:重置并请求新的 IP 地址。
选项 2 – Windows PowerShell
  1. 选择按钮,然后键入Startpowershell
  2. 选择Windows PowerShell
  3. 键入以下命令,然后按 Enter 键:
  4. Clear-DnsClientCache
Chromium 内核浏览器

打开浏览器在地址栏中键入:

Chrome浏览器 chrome://net-internals/#dns

Edge浏览器 edge://net-internals/#dns

点击 Clear host cache 按钮,清理主机缓存

在地址栏中,键入:chrome://net-internals/#sockets

单击 ,然后单击 Close idle socketsFlush socket pools 按钮

解决windows下访问WSL文件拒绝访问

通过文件管理器直接访问 \\wsl$ 编辑linux子系统文件时提示文件拒绝访问。

原因是因为你启动linux的非管理员账号

解决方法
如果是这样的话,需要修改默认登录用户为root即可,修改方式如下:

C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps\debian.exe config --default-user root

修改完成后重启wsl,如下:

关闭wsl:wsl --shutdown
之后,在重新启动wsl