visual studio 创建 git 项目核心是先有项目再初始化仓库;vs 2022 17.12+ 支持新建时一键初始化并推送到 github/azure devops,而旧版需手动通过“git > 创建 git 存储库”初始化本地仓库,注意路径对齐、.gitignore 配置及解决方案位置决定仓库根目录。

Visual Studio 创建 Git 项目,核心在于「先有项目,再初始化仓库」——不是所有版本都支持新建项目时直接勾选 Git,且 VS 2022 17.12+ 起才真正把 GitHub/Azure DevOps 远程创建和本地初始化揉进一个流程里。直接上手前,先确认你用的是 VS 2019 16.8+ 或 VS 2022(推荐 17.12+),否则会卡在 SSH 推送失败、无远程创建选项、或 .gitignore 模板不生效等地方。
VS 2022 17.12+:新建项目时一键初始化并推送到 GitHub/Azure DevOps
这是目前最顺的路径,但仅限新项目(不能用于已有文件夹):
- 选择「文件 > 新建 > 项目」,搜索模板(如
C# Console App、Python Application),填写名称和位置 - 关键一步:勾选「将解决方案添加到源代码管理」→ 自动弹出「创建 Git 存储库」对话框
- 在「推送到新的远程存储库」中选
GitHub或Azure DevOps,登录账户、填仓库名、选可见性(Public/Private/Internal) - 下方「初始化本地 Git 存储库」里务必点开
.gitignore模板下拉菜单,选对应语言(如VisualStudio+Python),否则生成大量.suo、__pycache__等垃圾文件 - 点击「创建和推送」,VS 会自动:
git init→git add .→git commit -m "Initial commit"→git remote add origin <url></url>→git push -u origin main
注意:如果没看到「将解决方案添加到源代码管理」复选框,说明你正在打开已有项目或用了旧版模板(比如某些 .NET Framework 模板)。此时得走手动初始化流程。
对已有项目/文件夹:用「Git > 创建 Git 存储库」菜单初始化
适用于三种场景:刚建好但没勾选 Git 的项目、从别处拷来的代码、空文件夹想搭新仓库。操作简单,但容易漏掉关键配置:
使用约定式提交信息暂存、提交和推送git更改。当用户想要提交和推送更改、提到推送到远程、或要求保存并推送工作时触发。也适用于用户说“推送更改”、“提交并推送”、“推送这个”、“推送到github”或类似git工作流程请求时。
- 确保解决方案已加载(即「解决方案资源管理器」里能看到项目),然后点击顶部菜单「Git > 创建 Git 存储库」
- 弹窗中「本地存储库路径」默认是当前解决方案根目录,不要手改——改错会导致
.git和项目文件不在同一级,后续提交全失效 - 勾选「使用 .gitignore 模板」,选对应语言;不勾选的话,VS 不会自动生成
.gitignore,你得手动补,否则bin/、obj/、.vs/全进仓库 - 「推送到新的远程存储库」部分可留空(只建本地库),也可立刻选 GitHub/Azure DevOps 填信息——但若网络不稳定或账号权限不足,这步失败不会回滚本地初始化,需自己删
.git重来 - 初始化完成后,右下角状态栏会显示分支名(如
main),文件图标旁出现「+」表示未暂存,此时必须先「Git > 提交」才能真正入库
常见错误:git status 显示「nothing to commit」但文件没被跟踪?大概率是 .git 初始化在父目录,而项目实际在子文件夹里——检查路径是否对齐。
命令行补位:当 VS 图形界面卡住或需要精细控制时
VS 的 Git UI 是封装层,底层仍是 git 命令。遇到推送 403、无法切换分支、或者想跳过 VS 的暂存区直提(比如小修改懒得点两下),就得切终端:
- 在解决方案目录下打开「开发者命令提示符」或「Git Bash」,执行
git init后,立刻运行git add .(别漏点) - 若要关联远程,用
git remote add origin https://github.com/user/repo.git,而不是依赖 VS 的「发布」按钮——后者有时静默失败且不报错 - VS 默认用 HTTPS 推送,若你配了 SSH key 却仍 403,说明 VS 没读取到 key;此时改用命令行
git push git@github.com:user/repo.git main验证是否真通 - 误删了
.git?VS 不会自动重建,必须手动git init+git add .+git commit,再重新配 remote
特别注意:git commit 在 VS 里叫「全部提交」,但它只提交已暂存的文件;而命令行 git commit -a -m "msg" 会跳过 git add 直接提交所有已跟踪文件的修改——这个差异常导致你以为“点了提交”,其实啥都没进历史。
最易被忽略的一点:VS 的 Git 功能高度依赖解决方案(.sln)文件的位置。它把整个 .sln 所在目录当仓库根,哪怕你只打开了一个 .csproj。如果项目结构是 /src/MyApp/MyApp.csproj,但 .sln 在 / 根下,那 .git 就在 /,所有 /docs、/scripts 全被纳入——这种跨层级污染,比忘了写 .gitignore 更难排查。










