尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Git常用命令实战指南:从安装配置到分支合并与历史修复

发布时间:2026/9/29 9:58:44

资讯中心
01
ARTICLE

Git常用命令实战指南:从安装配置到分支合并与历史修复

Git常用命令实战指南:从安装配置到分支合并与历史修复
简介这份 docx 文档面向刚接触版本控制的开发者与需要日常查阅 Git 命令的技术人员系统整理了 Git 常用命令及其解析帮助解决命令记不牢、分支与远程操作易出错等问题。资源包共 1 个文件为 docx 格式体积约 11KB轻量便于随查随用。内容按基本命令、远程仓库、代码管理、分支管理、代码查看、压缩解压等模块归类涵盖 git config、git status、git add、git commit、git log、git branch、git remote、git push、git pull、git reset、git clean、git checkout、git show、git blame、git cherry-pick、git revert 等高频命令并附 tar 压缩解压用法同时给出撤销 add、回退 commit、恢复误删文件、查看某行最后改动等典型场景的写法。目前已有 1748 人学习下载适合作为日常速查手册与入门练习参考。1. 从一份 git 常用命令.docx 说起为什么背命令救不了你我见过太多人把一份 git 常用命令.docx 打印出来贴在工位上结果真到合并冲突、误提交、推错分支的时候还是手忙脚乱。问题不在记性在于那份文档只给了命令没给场景。git reset和git revert都写在纸上可没人告诉你线上分支该用哪个git rebase看着很酷但团队协作里乱用就是灾难。这份文档真正该承载的不是一张命令清单而是一套「遇到什么局面敲什么命令敲完会发生什么」的决策路径。这篇笔记就按这个思路把 git 常用命令从安装配置一路拆到分支合并、历史修复和排错让新手能照着敲熟手能看清边界。git 安装、git 配置、git 分支合并这些热搜词背后其实是同一件事把版本控制变成肌肉记忆而不是每次翻文档。2. git 安装与初始配置把环境一次性配对2.1 各平台安装方式与验证命令git 安装本身不难难的是装完之后环境没配对导致后面 ssh 认证失败、提交作者信息错乱。Windows 上最常见的是去官网下载安装包安装时一路默认即可但有一个选项要注意默认编辑器建议选成你熟悉的比如 Vim 或 VS Code不然后面写 commit message 会卡住。macOS 上如果装了 Xcode Command Line Toolsgit 通常已经存在直接git --version就能看到没有的话用 Homebrew 装最省事。Linux 各发行版用包管理器即可Debian 系aptRedHat 系yum或dnf。# 检查是否已安装及版本 git --version # Debian/Ubuntu 系安装 sudo apt update sudo apt install git -y # RedHat/CentOS 系安装 sudo yum install git -y # macOS 用 Homebrew 安装 brew install git装完第一件事不是急着 clone而是配置身份。user.name和user.email会写进每一次提交写错了后面改历史很麻烦。邮箱建议用你代码托管平台绑定的那个否则提交记录不会关联到你的账号。# 全局配置用户名和邮箱 git config --global user.name 你的名字 git config --global user.email 你的邮箱example.com # 查看当前所有配置 git config --list # 设置默认分支名为 main避免每次新建仓库还是 master git config --global init.defaultBranch main参数说明--global表示对当前用户所有仓库生效如果某个仓库要用不同身份进到该仓库目录去掉--global再配一次即可。init.defaultBranch这个配置在 git 2.28 之后才支持老版本没有这个选项不影响使用只是新建仓库默认分支名不同。2.2 ssh 密钥配置与免密推送用 https 方式 clone 每次推送都要输账号密码效率低还容易触发认证失败。常见做法是配 ssh 密钥一次配置长期免密。先生成密钥对然后把公钥贴到代码托管平台的 ssh 设置里。# 生成 ed25519 类型密钥比 rsa 更短更安全 ssh-keygen -t ed25519 -C 你的邮箱example.com # 一路回车即可默认存在 ~/.ssh/id_ed25519 # 查看公钥内容复制整段 cat ~/.ssh/id_ed25519.pub # 测试连接不同平台域名不同 ssh -T gitgithub.com如果ssh -T返回权限拒绝或者一直提示输密码先检查公钥有没有贴对再检查~/.ssh/config里有没有为这个域名指定错误的私钥。另一个高频坑是公司网络限制了 22 端口这时候可以在~/.ssh/config里把 ssh 走 443 端口具体写法各平台文档都有这里不展开。配好之后 clone 用 ssh 地址推送就不再问密码了。3. 日常提交与查看把 add、commit、log 用顺3.1 工作区、暂存区、版本库的三层流转git 最核心的心智模型是三个区域工作区是你正在编辑的文件暂存区是准备提交的快照版本库是已经提交的历史。git add把工作区改动放进暂存区git commit把暂存区固化成一次提交。很多人搞不清为什么改了文件git status还提示未暂存就是因为没走 add 这一步。# 查看当前状态最常用的命令没有之一 git status # 添加单个文件到暂存区 git add README.md # 添加所有改动包括新增和修改但不包括删除 git add . # 添加所有改动包括删除 git add -A # 提交并写信息 git commit -m feat: 增加用户登录接口 # 提交时跳过暂存区直接把已跟踪文件的改动提交 git commit -am fix: 修正拼写错误git commit -am看着方便但它只对已经跟踪过的文件生效新建的文件不会被提交这是新手最容易翻车的地方之一。我一般建议老老实实git add再git commit多敲一行换来的是心里有数。3.2 log、diff、show 的排查组合拳提交完之后要能查。git log默认输出很啰嗦加参数才好看。git diff看的是工作区和暂存区的差异git diff --staged看的是暂存区和最后一次提交的差异这两个别搞混。# 单行简洁日志带分支图 git log --oneline --graph --all # 查看最近 3 次提交的详细改动 git log -p -3 # 查看某次提交改了什么 git show a1b2c3d # 查看工作区与暂存区差异 git diff # 查看暂存区与最后一次提交差异 git diff --staged参数说明--oneline把每次提交压成一行--graph画出分支合并线--all显示所有分支。排查「这个文件什么时候被改坏的」时git log -p -- 文件名能直接过滤出该文件的提交历史比翻整个日志快得多。git blame 文件名则能逐行显示最后修改人和提交号定位问题代码的引入者很有效但用的时候注意语气别拿去甩锅。4. 分支与合并从创建到冲突解决4.1 分支创建、切换与合并策略分支是 git 的杀手锏但用不好就是灾难。常见做法是主分支保持稳定功能开发开新分支做完合并回去。git switch是较新的命令比git checkout语义更清晰老版本可能没有用checkout也行。# 创建并切换到新分支 git switch -c feature/login # 查看本地分支 git branch # 查看所有分支包括远程 git branch -a # 切回主分支 git switch main # 把 feature/login 合并进当前分支 git merge feature/login # 删除已合并的分支 git branch -d feature/login合并分两种快进合并和三方合并。如果主分支在开分支后没有新提交git 默认直接移动指针这叫快进历史是一条直线。如果主分支也有新提交就会产生一个合并提交历史出现分叉。团队协作里更推荐用--no-ff强制产生合并提交这样能清楚看到哪些提交属于哪个功能分支。# 强制产生合并提交保留分支历史 git merge --no-ff feature/login4.2 冲突的识别与手动解决冲突不可怕可怕的是乱解决。当两个分支改了同一文件的同一区域合并时 git 会停下来在文件里插入冲突标记。 HEAD 当前分支的代码 要合并进来的分支的代码 feature/login解决步骤很固定打开冲突文件决定保留哪段或者怎么融合删掉、、这三行标记然后git add该文件最后git commit完成合并。如果中途想放弃git merge --abort可以回到合并前状态。# 查看冲突文件列表 git status # 手动编辑解决后标记为已解决 git add 冲突文件 # 完成合并提交 git commit # 放弃本次合并 git merge --abort一个血泪经验解决冲突前先git diff看清楚两边到底改了什么别上来就删标记。有时候冲突只是因为格式化差异用git merge -X ours或-X theirs可以自动偏向一边但这是把双刃剑用之前确认你真的不需要另一边的改动。5. 历史修复与远程协作reset、revert、rebase 怎么选5.1 撤销提交的三种姿势与适用边界误提交是家常便饭但撤销方式选错会把队友坑惨。git reset改的是本地历史git revert是新增一个反向提交来抵消git commit --amend是修改最后一次提交。核心判断标准这次提交推送到远程了没有别人有没有基于它继续开发。# 撤销最后一次提交保留改动在暂存区 git reset --soft HEAD~1 # 撤销最后一次提交保留改动在工作区 git reset --mixed HEAD~1 # 撤销最后一次提交丢弃所有改动危险 git reset --hard HEAD~1 # 新增一个提交来抵消指定提交安全用于已推送历史 git revert a1b2c3d # 修改最后一次提交的信息或内容 git commit --amendgit commit --amend这个热搜词很多人搜用法是如果只是改提交信息直接git commit --amend会打开编辑器如果漏了文件先git add再--amend。注意amend 会改变提交哈希如果已经推送到远程再推需要--force而 force push 到共享分支是团队协作大忌。5.2 远程仓库操作与 rebase 的正确打开方式远程操作就几个命令clone、fetch、pull、push。pull等于fetch加merge如果本地有未提交改动pull 可能失败先 commit 或 stash 再拉。# 克隆仓库 git clone gitgithub.com:user/repo.git # 拉取远程更新但不合并 git fetch origin # 拉取并合并 git pull origin main # 推送本地分支到远程 git push origin feature/login # 第一次推送并建立追踪关系 git push -u origin feature/logingit rebase的作用是把当前分支的提交搬到另一个基底上让历史变成一条直线。个人分支上用来整理提交很清爽但公共分支上千万别用因为会重写历史导致别人拉取时冲突。我一般只在推送到远程之前用git rebase -i把零碎提交合并成有意义的几个。# 交互式 rebase整理最近 3 次提交 git rebase -i HEAD~3 # 把当前分支变基到 main 最新提交上 git rebase main交互式 rebase 打开后把pick改成squash可以合并提交改成reword可以改信息改成drop可以删除。整理完再推送历史干净得像没犯过错。但记住已经推到远程让别人拉过的分支不要 rebase。6. 避坑与排查那些让 git 翻车的瞬间6.1 fatal: not a git repository 到底在说什么现象敲任何 git 命令都报fatal: not a git repository (or any of the parent directories): .git。原因很简单当前目录不是 git 仓库也没有任何父目录是。常见于刚打开终端默认在用户主目录或者 clone 完没 cd 进去。解决cd到正确目录或者git init初始化一个新仓库。如果确认目录没错检查.git文件夹是不是被误删了删了就找不回来了只能重新 clone。6.2 ssh 认证失败与免密失效现象git push提示Permission denied (publickey)或者一直让输密码。原因通常是公钥没配、配错账号、或者 ssh-agent 没加载私钥。解决先ssh -T git平台域名测试看返回的是不是你期望的账号。如果提示成功但账号不对说明~/.ssh/config里配了多个密钥需要指定IdentityFile。如果私钥有密码用ssh-add ~/.ssh/id_ed25519加载到 agent避免每次输。6.3 合并后代码丢失或文件被覆盖现象合并完发现某个文件的改动没了。原因多半是冲突解决时手滑删错了段或者用了-X ours自动偏向一边。解决先别慌git reflog能看到所有 HEAD 移动记录找到合并前的提交号git reset --hard 提交号回退重来。reflog 是 git 的后悔药默认保留 90 天只要没 gc 就能救回来。6.4 误提交大文件导致仓库臃肿现象不小心把几百兆的二进制文件提交了之后 clone 变得极慢。原因git 会保留所有历史版本删掉文件再提交也没用历史里还在。解决如果还没推送git reset --soft HEAD~1撤销提交把文件加进.gitignore再重新提交。如果已经推送需要用git filter-repo或 BFG 工具清理历史操作复杂且有风险建议先备份仓库再动手。预防办法是项目一开始就写好.gitignore。6.5 分支合并方向搞反现象本想把 feature 合进 main结果在 feature 分支上执行了git merge main把主分支代码拉进了功能分支。原因merge 是把参数分支合进当前分支当前分支是哪个很重要。解决如果只是本地操作git reset --hard回退到合并前即可。如果已经推送用git revert撤销合并提交。养成习惯merge 前先git branch确认当前分支。7. 把命令变成条件反射我的日常 git 工作流写了这么多命令最后落到一个具体技巧上给自己定一套固定动作减少临场决策。我每天开工第一件事是git status和git pull确认本地干净且和远程同步。开发时每完成一个小功能就git add加git commit提交信息用feat:、fix:、docs:这类前缀方便后面过滤。推送前用git log --oneline扫一眼零碎提交太多就git rebase -i整理一下。合并前先git fetch再git rebase main把冲突解决在本地而不是留到合并时。场景推荐命令避免使用撤销本地未推送提交git reset --softgit reset --hard撤销已推送提交git revertgit reset整理个人分支提交git rebase -i公共分支 rebase合并功能分支git merge --no-ff直接快进合并查看历史操作git reflog无验证方法很简单找一个小项目故意制造一次冲突、一次误提交、一次推错分支然后用上面的命令逐个解决。练过一遍比背十遍命令清单都管用。我自己的习惯是每换一台新机器先把 ssh 密钥配好再把init.defaultBranch设成 main最后 clone 一个练手仓库跑一遍完整流程。这套动作做了五六年现在敲 git 命令基本不用想手比脑子快。希望帮到你。本文还有配套的精品资源点击获取
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。