Windows 下 Git 仓库基本操作详解(保姆级教程

📅 2026/8/4 7:16:27 👁️ 阅读次数 📝 编程学习
Windows 下 Git 仓库基本操作详解(保姆级教程

Windows 下 Git 仓库基本操作详解(保姆级教程)

作者:乐观者永远前行
日期:2026-08-03
标签GitWindows版本控制教程CSDN


📌 前言

作为开发者,Git是日常工作中最必不可少的工具之一。但很多刚接触 Git 的同学,面对命令行总是一头雾水,尤其是Windows 环境下路径、换行符、权限等问题更让人抓狂。

本文将从零开始,手把手带你走完Git 在 Windows 下的完整使用流程,涵盖安装配置、仓库创建、日常提交、分支管理、远程同步、撤销回退等全部核心操作。每一步都附带实际命令和终端输出示例


📋 目录

  • 一、安装与配置
  • 二、创建本地仓库
  • 三、查看仓库状态
  • 四、添加文件到暂存区
  • 五、提交更改
  • 六、查看提交历史
  • 七、分支操作
  • 八、远程仓库操作
  • 九、撤销与回退
  • 十、.gitignore 配置
  • 🎯 总结

一、安装与配置

1.1 检查是否已安装 Git

打开PowerShellCMD,输入:

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 会自动处理换行符(LFCRLF),避免跨平台协作时出现满屏的^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.txt

3.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.md

4.2 添加多个文件

gitaddREADME.md src/main.py

4.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/main

7.2 创建新分支

gitbranch feature-login

7.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.git

8.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 后续推送

gitpush

8.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 .gitignore

10.2 常见规则示例

# 忽略所有 .log 文件 *.log # 忽略 node_modules 文件夹 node_modules/ # 忽略编译输出 dist/ build/ # 忽略 IDE 配置 .vscode/ .idea/ # 忽略敏感信息 .env config.ini # 但保留某个特定文件(前面加 ! 表示例外) !important.log

10.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 备忘单