Windows 下 Git 仓库基本操作详解(保姆级教程)
作者:乐观者永远前行
日期:2026-08-03
标签:GitWindows版本控制教程CSDN
📌 前言
作为开发者,Git是日常工作中最必不可少的工具之一。但很多刚接触 Git 的同学,面对命令行总是一头雾水,尤其是Windows 环境下路径、换行符、权限等问题更让人抓狂。
本文将从零开始,手把手带你走完Git 在 Windows 下的完整使用流程,涵盖安装配置、仓库创建、日常提交、分支管理、远程同步、撤销回退等全部核心操作。每一步都附带实际命令和终端输出示例。
📋 目录
- 一、安装与配置
- 二、创建本地仓库
- 三、查看仓库状态
- 四、添加文件到暂存区
- 五、提交更改
- 六、查看提交历史
- 七、分支操作
- 八、远程仓库操作
- 九、撤销与回退
- 十、.gitignore 配置
- 🎯 总结
一、安装与配置
1.1 检查是否已安装 Git
打开PowerShell或CMD,输入:
git--version预期输出:
git version 2.43.0.windows.1💡 如果提示
"git" 不是内部或外部命令,说明 Git 未安装,需前往 git-scm.com 下载 Windows 安装包,安装时全部默认选项即可。
1.2 配置用户名和邮箱
Git 提交记录会带上你的身份信息,首次使用必须配置:
# 配置用户名(全局)gitconfig--globaluser.name"你的名字"# 配置邮箱(全局)gitconfig--globaluser.email"your@email.com"1.3 查看当前配置
gitconfig--list预期输出:
user.name=你的名字 user.email=your@email.com core.autocrlf=true⚠️Windows 注意:建议设置
core.autocrlf=true,Git 会自动处理换行符(LF↔CRLF),避免跨平台协作时出现满屏的^M符号。
二、创建本地仓库
创建 Git 仓库有两种方式:初始化新仓库或克隆远程仓库。
2.1 方式一:初始化新仓库
# 先进入你的项目文件夹(Windows 路径可用正斜杠或反斜杠)cdD:/Projects/MyProject# 初始化 Git 仓库gitinit预期输出:
Initialized empty Git repository in D:/Projects/MyProject/.git/执行后,项目目录下会生成一个隐藏的.git文件夹,这就是 Git 的版本库。
2.2 方式二:克隆远程仓库
# 从 GitHub / GitLab / Gitee 克隆已有仓库gitclone https://github.com/username/repo.git# 克隆到指定文件夹名gitclone https://github.com/username/repo.git my-folder预期输出:
Cloning into 'repo'... remote: Enumerating objects: 100, done. Receiving objects: 100% (100/100), done.⚠️注意:克隆私有仓库时,需要配置 SSH 密钥,或使用 HTTPS + Personal Access Token(Token 填在密码栏)。
三、查看仓库状态
随时了解哪些文件被修改、哪些已暂存、哪些未跟踪:
3.1 查看当前状态
gitstatus预期输出:
On branch main Changes not staged for commit: (use "git add <file>..." to update what will be committed) modified: README.md modified: src/main.py Untracked files: (use "git add <file>..." to include in what will be committed) new_file.txt3.2 简洁状态显示
gitstatus-s预期输出:
M README.md M src/main.py ?? new_file.txt💡 符号含义:
M= 修改,A= 新增,D= 删除,??= 未跟踪。
3.3 查看文件具体修改内容
gitdiff预期输出:
diff --git a/README.md b/README.md index 1234..5678 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -Hello +Hello World💡
git diff看的是工作区与暂存区的差异;想看暂存区与最新提交的差异,用git diff --staged。
四、添加文件到暂存区
把修改的文件放入"暂存区"(Stage),准备提交。
4.1 添加单个文件
gitaddREADME.md4.2 添加多个文件
gitaddREADME.md src/main.py4.3 添加当前目录所有改动
gitadd.4.4 添加所有修改(含删除)
gitadd-A💡
git add .只添加当前目录及子目录;git add -A包含整个仓库的所有改动(含删除)。
4.5 交互式选择添加
gitadd-p交互提示:
diff --git a/README.md b/README.md Stage this hunk [y,n,q,a,d,s,e,?]?⚠️如果不小心 add 错了,用
git restore --staged <文件名>取消暂存。
五、提交更改
将暂存区的内容保存到本地仓库,形成一条历史记录。
5.1 提交并写注释
gitcommit-m"修复了登录页面的bug"预期输出:
[main 3a4b5c6] 修复了登录页面的bug 2 files changed, 15 insertions(+), 3 deletions(-)5.2 添加并一步提交(仅对已跟踪文件)
gitcommit-am"更新文档"💡
-a参数会自动将所有已跟踪文件的改动加入暂存区并提交,省去git add步骤。但新文件仍需先git add。
5.3 修改最后一次提交
gitcommit--amend-m"修正后的提交信息"预期输出:
[main 7d8e9f0] 修正后的提交信息 Date: Mon Aug 3 14:30:00 2026 +0800 1 file changed, 1 insertion(+)⚠️警告:
git commit --amend会修改提交历史。如果已经push到远程仓库,不要 amend,否则会导致冲突!
5.4 提交信息规范建议
推荐格式:"类型: 简要描述"
| 类型 | 说明 |
|---|---|
feat | 新增功能 |
fix | 修复 bug |
docs | 文档更新 |
style | 代码格式调整 |
refactor | 重构 |
test | 测试相关 |
示例:
gitcommit-m"feat: 新增用户登录功能"gitcommit-m"fix: 修复空指针异常"六、查看提交历史
6.1 查看完整日志
gitlog预期输出:
commit 3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b Author: 你的名字 <your@email.com> Date: Mon Aug 3 14:30:00 2026 +0800 修复了登录页面的bug commit 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b Author: 你的名字 <your@email.com> Date: Mon Aug 3 10:15:00 2026 +0800 初始化项目6.2 简洁单行显示
gitlog--oneline预期输出:
3a4b5c6 修复了登录页面的bug 1a2b3c4 初始化项目6.3 图形化分支图
gitlog--oneline--graph--all预期输出:
* 3a4b5c6 修复了登录页面的bug | * 9f8e7d6 开发新功能 |/ * 1a2b3c4 初始化项目6.4 查看某文件的修改历史
gitlog-pREADME.md💡 按Q 键退出
git log查看界面(Git 使用less作为分页器)。
七、分支操作
分支是 Git 的核心特性,用于并行开发不同功能,互不影响。
7.1 查看所有分支
gitbranch-a预期输出:
* main dev remotes/origin/main7.2 创建新分支
gitbranch feature-login7.3 切换分支
# Git 2.23+ 推荐用法(语义更清晰)gitswitch feature-login# 旧版本用法(仍兼容)gitcheckout feature-login预期输出:
Switched to branch 'feature-login'7.4 创建并切换(推荐一步完成)
gitswitch-cfeature-login预期输出:
Switched to a new branch 'feature-login'7.5 合并分支到当前分支
# 先切换回 main 分支gitswitch main# 合并 feature-login 分支gitmerge feature-login预期输出:
Updating 1a2b3c4..3a4b5c6 Fast-forward src/login.py | 10 ++++++++++ 1 file changed, 10 insertions(+)⚠️ 如果合并出现冲突,Git 会标记冲突文件,手动解决后需再次
git add+git commit。
7.6 删除已合并的分支
gitbranch-dfeature-login预期输出:
Deleted branch feature-login (was 3a4b5c6).7.7 分支操作流程图
git switch -c feature-login ↓ 在分支上开发提交 ↓ git switch main ↓ git merge feature-login ↓ git branch -d feature-login八、远程仓库操作
将本地仓库与 GitHub / GitLab / Gitee 等远程仓库关联,实现代码同步。
8.1 查看远程仓库
gitremote-v预期输出:
origin https://github.com/username/repo.git (fetch) origin https://github.com/username/repo.git (push)8.2 添加远程仓库
gitremoteaddorigin https://github.com/username/repo.git8.3 首次推送到远程
gitpush-uorigin main预期输出:
Enumerating objects: 5, done. Writing objects: 100% (5/5), 450 bytes | 450.00 KiB/s, done. To https://github.com/username/repo.git * [new branch] main -> main Branch 'main' set up to track remote branch 'main' from 'origin'.💡
-u(--set-upstream)只需第一次push时加,后续直接git push即可。
8.4 后续推送
gitpush8.5 拉取远程更新
gitpull预期输出:
Updating 1a2b3c4..9f8e7d6 Fast-forward src/main.py | 5 +++++ 1 file changed, 5 insertions(+)8.6 抓取远程分支(不合并)
gitfetch origin⚠️Windows 注意:首次
push到 HTTPS 地址时可能需要输入用户名和 Token(密码栏填 Token)。建议配置 SSH 密钥实现免密推送:ssh-keygen-ted25519-C"your@email.com"然后将
~/.ssh/id_ed25519.pub的内容添加到 GitHub/GitLab 的 SSH Keys 中。
九、撤销与回退
改错了怎么办?Git 提供了多种撤销方式,对应不同场景。
9.1 撤销工作区修改(未 add)
gitrestore README.md旧版本用:
git checkout -- README.md
9.2 取消暂存(已 add 未 commit)
gitrestore--stagedREADME.md旧版本用:
git reset HEAD README.md
9.3 回退到指定版本(保留修改)
gitreset--softHEAD~1回退到上一个版本,但保留修改内容在暂存区。
9.4 回退到指定版本(丢弃修改)
gitreset--hard3a4b5c6预期输出:
HEAD is now at 3a4b5c6 修复了登录页面的bug⚠️警告:
git reset --hard会永久删除未提交的改动,执行前务必确认!
9.5 查看所有操作记录(用于找回)
gitreflog预期输出:
3a4b5c6 HEAD@{0}: commit: 修复了登录页面的bug 1a2b3c4 HEAD@{1}: commit: 初始化项目💡 即使
reset --hard了,只要没清理垃圾,用git reflog找到旧 commit ID,还能通过git reset --hard <ID>救回来!
9.6 撤销场景速查表
| 场景 | 命令 |
|---|---|
| 改错了文件(未 add) | git restore <文件> |
| add 错了文件 | git restore --staged <文件> |
| commit 信息写错了 | git commit --amend |
| commit 错了想回退 | git reset --soft HEAD~1 |
| 彻底回退到某版本 | git reset --hard <commit-id> |
| 误删了某个提交 | git reflog找回 +git cherry-pick |
十、.gitignore 配置
告诉 Git 哪些文件不需要跟踪,比如编译产物、依赖包、配置文件等。
10.1 创建 .gitignore 文件
Windows 资源管理器不能直接创建.gitignore(会提示输入文件名),推荐用命令行或编辑器:
notepad .gitignore10.2 常见规则示例
# 忽略所有 .log 文件 *.log # 忽略 node_modules 文件夹 node_modules/ # 忽略编译输出 dist/ build/ # 忽略 IDE 配置 .vscode/ .idea/ # 忽略敏感信息 .env config.ini # 但保留某个特定文件(前面加 ! 表示例外) !important.log10.3 提交 .gitignore
gitadd.gitignoregitcommit-m"chore: 添加 .gitignore 文件"⚠️注意:如果文件已经被 Git 跟踪,再添加到
.gitignore不会生效,需先执行:gitrm--cached<文件名>
💡 github.com/github/gitignore 有各语言的标准
.gitignore模板,直接复制用即可。
🎯 总结
本文完整梳理了 Windows 环境下 Git 仓库的核心操作流程:
安装配置 → 创建/克隆仓库 → 日常开发(修改 → add → commit) ↓ 分支管理(switch / merge)→ 远程同步(push / pull) ↓ 撤销回退(restore / reset / reflog)→ .gitignore 配置每日工作流速记
# 1. 开始工作前拉取最新代码gitpull# 2. 修改代码...# 3. 查看改了什么gitstatusgitdiff# 4. 把改动的文件加入暂存区gitadd.# 5. 提交到本地仓库gitcommit-m"feat: 完成了某某功能"# 6. 推送到远程gitpush如果本文对你有帮助,欢迎点赞 👍、收藏 ⭐、评论 💬!有任何问题欢迎在评论区留言交流。
📌相关阅读:
- Git 官方文档
- GitHub Git 备忘单