news 2026/7/19 22:39:54

Git 常用命令全总结|从入门到进阶,一篇搞定开发所有场景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git 常用命令全总结|从入门到进阶,一篇搞定开发所有场景

作为开发者,Git 是日常工作中必不可少的版本控制工具。不管是单人开发还是团队协作,熟练掌握 Git 命令都能大幅提升工作效率,避免版本冲突、代码丢失等问题。本文将按使用场景分类,总结 Git 核心命令、进阶命令及避坑技巧,新手可入门,老手可速查。

一、仓库初始化与远程仓库关联(基础入门)

这部分是 Git 操作的起点,主要用于新建仓库、关联远程仓库,适用于项目初始化阶段。

1. 本地仓库初始化

git init:在当前目录创建一个新的 Git 仓库,生成隐藏的 .git 文件夹,包含版本控制所需的所有文件。

示例:打开项目文件夹,执行git init,即可将当前目录变为 Git 可管理的仓库。

注意:一个项目只需要初始化一次,重复执行不会覆盖现有仓库,只会更新 .git 文件夹。

2. 克隆远程仓库

git clone <远程仓库URL>:将远程仓库完整克隆到本地,包括所有分支、提交历史和文件。

常用示例:

- 基础克隆:git clone https://github.com/username/project.git

- 克隆到指定文件夹:git clone https://github.com/username/project.git my-project

- 克隆指定分支:git clone -b dev https://github.com/username/project.git(直接克隆 dev 分支,避免默认克隆主分支)

3. 关联远程仓库

本地仓库初始化后,需关联远程仓库才能实现代码推送和拉取,常用命令如下:

-git remote add <远程仓库别名> <远程仓库URL>:为本地仓库添加远程仓库关联,别名通常设为 origin(默认)。

示例:git remote add origin https://github.com/username/project.git

-git remote -v:查看本地已关联的远程仓库信息,包括别名和对应的 URL。

-git remote rm <远程仓库别名>:删除指定的远程仓库关联。

示例:git remote rm origin(取消本地与 origin 远程仓库的关联)

二、日常开发核心命令(高频使用)

这部分命令是日常开发中使用频率最高的,涵盖文件状态查看、暂存、提交、拉取、推送等基础操作。

1. 查看文件状态

git status:查看当前工作区、暂存区的文件状态,包括已修改、已暂存、未跟踪、已忽略的文件。

这是排查问题的第一步,每次提交代码前建议先执行该命令,确认文件状态无误。执行后会清晰显示哪些文件需要暂存,哪些文件有未提交的修改。

2. 暂存文件(工作区 → 暂存区)

Git 的版本控制分为工作区、暂存区、版本库三个区域,暂存文件是提交前的必要步骤。

-git add <文件路径>:将指定文件从工作区添加到暂存区,准备提交。

示例:git add index.html(暂存单个文件)、git add src/(暂存整个 src 文件夹)

-git add .:将工作区所有已修改、未跟踪的文件(除了 .gitignore 忽略的文件)全部添加到暂存区,适合一次性暂存多个文件。

-git add --all:与 git add . 功能类似,但会包含已删除的文件,建议优先使用。

3. 提交文件(暂存区 → 版本库)

提交是将暂存区的文件保存到版本库,生成新的提交记录,每个提交都有唯一的 commit ID,用于版本回溯。

-git commit -m "提交说明":将暂存区的文件提交到版本库,-m 后面跟提交说明,必须清晰描述本次提交的内容(如“修复登录页样式问题”“新增用户列表功能”)。

示例:git commit -m "新增首页轮播图功能"

-git commit -am "提交说明":跳过暂存步骤,直接将工作区已跟踪的文件(已提交过的文件)提交到版本库,适合快速提交修改,未跟踪的文件无法用该命令提交。

示例:git commit -am "修改首页标题文案"

-git commit --amend:修改最近一次的提交说明,或补充暂存的文件到最近一次提交(避免生成多余的提交记录)。

示例:执行git commit --amend -m "修改首页标题文案(补充说明)",即可替换最近一次的提交说明。

4. 拉取远程代码(远程 → 本地)

团队协作时,需定期拉取远程仓库的最新代码,避免与他人代码冲突。

-git pull <远程仓库别名> <远程分支名>:从远程仓库拉取指定分支的最新代码,并合并到本地当前分支。

示例:git pull origin main(拉取远程 main 分支的最新代码并合并到本地 main 分支)

-git pull --rebase <远程仓库别名> <远程分支名>:拉取远程代码并以变基的方式合并,避免生成多余的合并提交记录,让提交历史更整洁。

示例:git pull --rebase origin dev

5. 推送本地代码(本地 → 远程)

本地提交后,需将代码推送到远程仓库,供团队成员查看和使用。

-git push <远程仓库别名> <本地分支名>:将本地指定分支的提交推送到远程仓库对应的分支。

示例:git push origin main(将本地 main 分支的提交推送到远程 main 分支)

-git push -u <远程仓库别名> <本地分支名>:首次推送时使用,-u 表示关联本地分支和远程分支,后续推送可直接执行git push,无需指定别名和分支。

示例:git push -u origin dev(首次推送 dev 分支,关联远程 dev 分支)

-git push --force:强制推送本地代码到远程仓库,覆盖远程仓库的提交记录(谨慎使用!团队协作中容易覆盖他人代码,仅在本地修改提交历史后使用)。

三、分支管理命令(团队协作核心)

分支是 Git 的核心优势之一,用于实现并行开发、功能开发、bug 修复等场景,避免影响主分支代码。常用分支管理命令如下:

1. 查看分支

-git branch:查看本地所有分支,当前所在分支前会有 * 标记。

-git branch -r:查看远程所有分支。

-git branch -a:查看本地和远程所有分支。

-git branch -v:查看本地分支的最新提交记录和提交说明。

2. 创建分支

-git branch <分支名>:基于当前分支,创建一个新的本地分支,创建后仍停留在当前分支。

示例:git branch feature/login(基于当前分支创建 feature/login 功能分支)

-git checkout -b <分支名>:创建新分支并立即切换到该分支,是日常开发中最常用的创建分支方式。

示例:git checkout -b bugfix/order(创建 bugfix/order 修复分支并切换到该分支)

-git checkout -b <本地分支名> <远程仓库别名>/<远程分支名>:基于远程分支创建本地分支,并关联远程分支。

示例:git checkout -b dev origin/dev(基于远程 dev 分支创建本地 dev 分支并关联)

3. 切换分支

-git checkout <分支名>:切换到指定本地分支。

示例:git checkout main(切换到 main 分支)

-git switch <分支名>:Git 2.23 版本新增命令,功能与 git checkout 一致,更直观,用于切换分支。

示例:git switch dev(切换到 dev 分支)

4. 合并分支

将一个分支的代码合并到当前分支,常用于功能开发完成后合并到主分支,或 bug 修复完成后合并到开发分支。

-git merge <分支名>:将指定分支的代码合并到当前分支,默认生成合并提交记录。

示例:切换到 main 分支后,执行git merge feature/login(将 feature/login 分支的代码合并到 main 分支)

注意:合并前需确保当前分支和待合并分支都已拉取最新代码,避免冲突。若出现冲突,需先解决冲突,再提交合并。

-git rebase <分支名>:以变基的方式合并指定分支的代码到当前分支,与 merge 不同,rebase 会将当前分支的提交记录“移到”待合并分支的最新提交之后,让提交历史更线性、整洁。

示例:切换到 feature/login 分支后,执行git rebase main(将 main 分支的最新代码合并到 feature/login 分支,以变基方式)

5. 删除分支

分支开发完成、合并后,可删除多余分支,保持仓库整洁。

-git branch -d <分支名>:删除指定本地分支,前提是该分支的代码已合并到其他分支,未合并则无法删除。

示例:git branch -d feature/login(删除 feature/login 本地分支)

-git branch -D <分支名>:强制删除指定本地分支,即使该分支代码未合并(谨慎使用,避免代码丢失)。

-git push <远程仓库别名> --delete <远程分支名>:删除远程仓库的指定分支。

示例:git push origin --delete feature/login(删除远程 origin 仓库的 feature/login 分支)

四、撤销与回退命令(避坑必备)

开发中难免会出现错误提交、误修改文件等情况,掌握撤销与回退命令,可快速恢复代码,减少损失。

1. 撤销工作区修改

git restore <文件路径>:撤销工作区指定文件的修改,恢复到最近一次提交或暂存的状态(Git 2.23 版本新增,替代旧命令 git checkout -- <文件路径>)。

示例:git restore index.html(撤销 index.html 文件的工作区修改)

旧命令:git checkout -- index.html(功能一致,建议使用新命令)

2. 撤销暂存区修改(暂存区 → 工作区)

git restore --staged <文件路径>:将指定文件从暂存区撤销到工作区,保留工作区的修改(Git 2.23 版本新增,替代旧命令 git reset HEAD <文件路径>)。

示例:git restore --staged index.html(将 index.html 从暂存区撤销到工作区)

旧命令:git reset HEAD index.html(功能一致,建议使用新命令)

3. 版本回退

回退到指定的提交版本,适用于错误提交后恢复代码,常用三种参数:--soft、--mixed、--hard。

-git reset --soft <commit ID>:回退到指定提交版本,保留工作区和暂存区的修改,仅撤销提交记录,适合重新提交。

示例:git reset --soft 1a2b3c4(回退到 commit ID 为 1a2b3c4 的版本,保留修改)

-git reset --mixed <commit ID>:默认参数,回退到指定提交版本,保留工作区修改,撤销暂存区和提交记录,适合重新暂存、提交。

示例:git reset --mixed 1a2b3c4(可简写为 git reset 1a2b3c4)

-git reset --hard <commit ID>:强制回退到指定提交版本,撤销工作区、暂存区和提交记录的所有修改,恢复到指定版本的状态(谨慎使用!会丢失未提交的修改,无法恢复)。

示例:git reset --hard 1a2b3c4

注意:回退远程分支的提交记录,需配合git push --force强制推送,但团队协作中需提前告知成员,避免覆盖他人代码。

4. 撤销已推送的提交

若已将错误提交推送到远程仓库,可使用git revert <commit ID>撤销指定提交,该命令会生成一个新的提交记录,保留原提交历史,比 reset 更安全,适合团队协作场景。

示例:git revert 1a2b3c4(撤销 commit ID 为 1a2b3c4 的提交,生成新的提交记录)

五、进阶命令(提升效率)

这部分命令不常用,但在特定场景下能大幅提升效率,适合有一定基础的开发者掌握。

1. 暂存工作进度(git stash)

适用于当前分支工作未完成,需要切换到其他分支处理紧急任务的场景,可暂存当前工作区的修改,切换分支后再恢复。

-git stash:暂存当前工作区的所有修改,保存为一个临时记录。

-git stash save "暂存说明":暂存时添加说明,方便后续识别。

示例:git stash save "未完成的首页轮播图修改"

-git stash list:查看所有暂存的记录。

-git stash pop:恢复最近一次的暂存记录,并删除该暂存记录。

-git stash apply <暂存记录编号>:恢复指定的暂存记录,不删除暂存记录(编号可通过 git stash list 查看)。

示例:git stash apply stash@{0}(恢复第一条暂存记录)

-git stash drop <暂存记录编号>:删除指定的暂存记录。

-git stash clear:删除所有暂存记录。

2. 查看提交历史

-git log:查看本地分支的提交历史,按时间倒序排列,显示 commit ID、提交人、提交时间、提交说明。

-git log --oneline:简洁显示提交历史,一行一个提交,只显示 commit ID(前7位)和提交说明,便于快速查看。

-git log --graph:以图形化方式显示提交历史,清晰展示分支合并、变基的过程。

-git log --author="用户名":查看指定用户的提交历史。

示例:git log --author="zhangsan"(查看张三的所有提交)

-git log --since="2026-01-01":查看指定日期之后的提交历史。

3. 拣选提交(git cherry-pick)

将其他分支的指定提交记录,复制到当前分支,适用于将 bug 修复提交复制到多个分支,避免重复开发。

示例:git cherry-pick 1a2b3c4(将 commit ID 为 1a2b3c4 的提交复制到当前分支)

4. 子模块管理(git submodule)

适用于项目中引用其他 Git 仓库(如公共组件库)的场景,可将其他仓库作为子模块嵌入当前项目。

-git submodule add <远程仓库URL> <本地路径>:添加子模块。

示例:git submodule add https://github.com/username/common-components.git src/components/common

-git submodule init:初始化子模块(克隆项目后首次使用子模块时执行)。

-git submodule update:拉取子模块的最新代码。

-git clone --recurse-submodules <远程仓库URL>:克隆包含子模块的项目时,同时拉取子模块的代码。

六、常用配置与避坑技巧

1. 基础配置

首次使用 Git 时,需配置用户名和邮箱,用于标识提交人信息。

- 全局配置(所有项目生效):

git config --global user.name "你的用户名"

git config --global user.email "你的邮箱"

- 局部配置(仅当前项目生效):进入项目目录后,执行上述命令,去掉 --global 参数即可。

- 查看配置:git config --list(查看所有 Git 配置)

2. 避坑技巧

1. 提交说明要清晰:避免使用“修复bug”“修改代码”等模糊描述,应明确说明修改内容和原因,便于后续追溯。

2. 避免强制推送:团队协作中,非必要不使用git push --force,若必须使用,需提前告知团队成员,避免覆盖他人代码。

3. 处理冲突要谨慎:合并分支或拉取代码时出现冲突,需仔细对比冲突代码,保留正确内容,删除冲突标记(<<<<<<<、=======、>>>>>>>),再提交合并。

4. 定期拉取远程代码:团队协作中,每天开发前先执行git pull,拉取远程最新代码,减少冲突概率。

5. 分支命名规范:建议采用“功能类型/功能名称”的命名方式,如 feature/login(功能分支)、bugfix/order(bug修复分支)、release/v1.0(发布分支),便于团队识别分支用途。

七、总结

本文总结了 Git 从入门到进阶的常用命令,按使用场景分类,结合示例和注意事项,覆盖了仓库初始化、日常开发、分支管理、撤销回退、进阶操作等所有核心场景。对于新手来说,建议先掌握日常开发核心命令和基础分支管理命令,再逐步学习进阶命令;对于老手来说,可将本文作为速查手册,遇到问题快速查阅。

Git 的核心是版本控制,熟练掌握命令的同时,更要理解其工作原理(工作区、暂存区、版本库的关系),才能灵活应对各种开发场景,避免不必要的错误。希望本文能帮助大家提升 Git 使用效率,让版本控制成为开发的助力而非负担。

最后,建议大家在实际开发中多实践,遇到问题多查阅官方文档或本文,逐步形成自己的 Git 使用习惯。如果有遗漏的常用命令,欢迎在评论区补充交流~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 22:39:51

如何轻松批量下载B站视频?BilibiliDown完整使用指南

如何轻松批量下载B站视频&#xff1f;BilibiliDown完整使用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/…

作者头像 李华
网站建设 2026/7/19 22:39:13

SRWE窗口编辑器:5分钟掌握专业级窗口分辨率自定义技术

SRWE窗口编辑器&#xff1a;5分钟掌握专业级窗口分辨率自定义技术 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE SRWE窗口编辑器是一款革命性的开源工具&#xff0c;专为游戏玩家、内容创作者和效率追求者设计…

作者头像 李华
网站建设 2026/7/19 22:37:04

FreeRTOS xTaskCreate 最后一个参数传地址与NULL的区别详解

前言 初学 FreeRTOS 创建任务时&#xff0c;很容易遇到一段代码&#xff1a;部分任务创建时第六个参数传入任务句柄变量地址&#xff0c;另一部分直接填写 NULL&#xff0c;二者写法都能正常创建任务&#xff0c;但底层用途完全不同。 先一句话说清区别&#xff1a;第六个参数…

作者头像 李华
网站建设 2026/7/19 22:35:16

如何在8GB显卡上轻松生成AI视频:ComfyUI-FramePackWrapper完整教程

如何在8GB显卡上轻松生成AI视频&#xff1a;ComfyUI-FramePackWrapper完整教程 【免费下载链接】ComfyUI-FramePackWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-FramePackWrapper 想要在普通显卡上生成高清AI视频却总是遇到显存不足&#xff1f;Comf…

作者头像 李华