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

Git常用命令速查手册:从配置提交到分支回退与远程协作避坑指南

发布时间:2026/9/29 2:34:34

资讯中心
01
ARTICLE

Git常用命令速查手册:从配置提交到分支回退与远程协作避坑指南

Git常用命令速查手册:从配置提交到分支回退与远程协作避坑指南
简介这份 docx 文档面向刚接触版本控制或需要随手查阅命令的开发者系统整理了 Git 日常使用中的高频命令及解析覆盖基本操作、远程仓库、代码管理、分支管理、代码查看以及压缩解压等场景适合作为入门速查手册或工作台上的备查清单。资源包内共 1 个 docx 文件约 11KB体积轻巧便于本地保存与随时检索。内容按功能分类罗列既有 git config、git status、git add、git commit、git log 等基础命令也包含 git reset --hard、git clean -df、git cherry-pick、git blame、git revert 等进阶用法并附带 tar 压缩解压相关命令方便在提交、回滚、分支切换与文件清理时快速定位写法。目前已有 1748 人学习下载说明其在同类速查资料中具备一定参考价值适合希望减少记忆负担、提升日常协作效率的开发者收藏使用。1. 从一份 git 常用命令速查文档说起它到底能解决什么刚接手一个多人协作项目代码推到远程发现分支乱了想回退又怕把别人的提交冲掉本地改了一堆文件想丢弃结果git checkout .和git reset --hard用混了工作区直接清空。这类场景几乎每个用 Git 的人都遇到过而手边往往缺一份能直接查、直接抄的命令清单。这份 git 常用命令文档就是干这个的它把配置、提交、分支、回退、日志、远程同步、压缩打包这些高频操作按用途归好类每条命令后面跟一句说明遇到具体问题能快速定位到该敲哪一行。它适合刚接触 Git 的新手照着走一遍流程也适合用了几年但某些边界命令记不牢的老手当速查表。文档本身不依赖特定平台Windows、Linux、macOS 上的 Git Bash 或终端都能直接套用核心价值在于把散落在各处的命令按真实工作流串了起来。2. 配置、提交与状态查看把日常操作串成一条线2.1 先搞清楚配置和身份信息Git 装好之后第一件事不是急着提交而是确认身份和配置。文档里git config --list用来检查已有配置git config --global user.name和git config --global user.email分别设置用户名和邮箱。这两项决定了每次提交记录里显示的是谁团队协作时如果配错git blame查出来的责任人就是错的。# 查看当前所有配置包括用户名、邮箱、别名等 git config --list # 设置全局用户名和邮箱提交记录会带上这些信息 git config --global user.name zhangsan git config --global user.email 123456789qq.com # 查看版本确认环境没问题 git --version--global表示对当前用户所有仓库生效如果只想对某个仓库单独设置去掉--global在仓库目录下执行即可。git config --list输出内容较多时可以配合git config --list | grep user只看用户相关项。常见做法是装完 Git 先跑一遍这三条确认身份没问题再开始干活。2.2 工作区、暂存区、提交这条链路日常开发绕不开三个区域工作区是你能看到的文件暂存区是git add之后准备提交的内容本地仓库是git commit之后存下来的版本。文档里git status查看当前分支状态git status -s输出精简格式git add把文件加入暂存区git commit -m 注释说明完成提交。# 查看当前状态哪些改了、哪些已暂存 git status git status -s # 精简输出适合脚本里用 # 添加文件到暂存区 git add . # 提交所有变化包括新文件但不包括被删除的文件 git add -u # 只处理已修改或已删除的文件不处理新建文件 git add -A # 上面两个的合集新文件、修改、删除都管 # 提交并写说明 git commit -m 修复登录接口超时问题这里有个容易翻车的点git add .和git add -u和git add -A行为不一样。git add .会监控工作区状态树把文件内容修改和新文件都提交到暂存区但不包括被删除的文件git add -u仅监控已经被 add 过的文件也就是 tracked file把修改和删除提交到暂存区但不会提交新文件git add -A是两者的合集。我一般日常用git add -A避免漏掉删除操作。提交说明尽量写清楚改了什么后面git log查起来才不费劲。2.3 日志查看与提交历史定位提交多了之后查历史是高频操作。文档里给了不少git log的变体从简单到复杂都有。# 显示最近 1 行日志-n 可以指定行数 git log -1 # 单行显示适合快速浏览 git log --prettyoneline # 带作者、日期、提交说明的格式化输出 git log --prettyformat:%h %an %ad: %s # 图形化显示分支合并情况 git log --graph --oneline # 查看某个文件的修改历史 git log -p [file] # 查看某个人提交的代码 git log --authorxxxx # 根据修改内容查找 commit比如找哪次提交删了某段代码 git log -Sdelete from # 查看每次提交的文件变更统计 git log --stat--prettyformat里的占位符%h是短 commit 号%an是作者名%ad是作者日期%s是提交说明。git log -Sstring这个很实用当你想知道某段代码是什么时候被删掉或加进来的直接搜内容比翻提交说明快得多。git log --graph --oneline在分支多的时候能一眼看出合并关系。如果要把日志导出来给别人看git log --prettyformat:%h%an%ad%s log.txt生成的文件可以用 Excel 打开再分列文档里也提到了这个用法。3. 分支、远程与回退协作里最容易出事的几块3.1 分支的建立、切换与删除分支是 Git 协作的核心。文档里git branch dddd建立本地分支git branch查看当前分支git branch -r显示所有远程分支git branch -a显示本地和远程所有分支git branch -D xxx删除分支git checkout aa切换到 aa 分支。# 查看本地分支当前分支前面有 * 号 git branch # 查看远程分支 git branch -r # 查看本地和远程所有分支 git branch -a # 建立本地分支 git branch dddd # 切换到 aa 分支 git checkout aa # 以 b1 为源创建分支 fromb1 并切换过去 git checkout -b fromb1 # 删除 xxx 分支-D 是强制删除 git branch -D xxx # 显示本地分支和服务器分支的映射关系 git branch -vvgit branch -vv这个命令值得单独说它能显示本地分支和远程分支的追踪关系以及本地分支领先或落后远程多少个提交。多人协作时经常遇到本地分支和远程不同步的情况先跑这个命令看清楚状态再决定 pull 还是 push。删除分支前确认自己不在那个分支上否则会报错。3.2 远程仓库操作与同步远程操作是协作里最容易出问题的环节。文档里git remote -v查看远程服务器地址和仓库名称git remote show origin查看远程仓库状态git push origin puppis提交到远程分支git pull --rebase origin 分支名更新到与服务器同步。# 查看远程仓库地址 git remote -v # 查看远程仓库详细状态包括分支追踪情况 git remote show origin # 推送本地分支到远程 git push origin puppis # 推送并设置追踪关系之后可以直接 git push git push -f -u origin branchname # 拉取远程更新并变基保持提交历史线性 git pull --rebase origin 分支名 # 清除已删除的远程分支引用 git remote prune origin # 删除远程分支 git push origin --delete branchNamegit pull --rebase和直接git pull的区别在于--rebase会把本地提交“搬”到远程最新提交之后避免产生多余的合并提交。团队里如果约定用线性历史这个命令要养成习惯。git remote prune origin用来清理那些远程已经删掉但本地还留着的分支引用跑完git branch -r就干净了。git push -f是强制推送会覆盖远程历史用之前一定确认没有别人的提交会被冲掉这是血泪经验。3.3 回退、撤销与恢复的边界回退操作是文档里篇幅最大的部分也是实际工作中最容易出事的区域。git reset --hard HEAD清空工作目录中所有未提交的内容git reset --hard commitid本地代码回到指定 commitgit reset HEAD恢复本地提交git reset 路径名撤销 add 时多添加的文件git checkout -- .取消本地所有修改git checkout HEAD .清除工作区和暂存区中未提交的改动。# 清空工作目录所有未提交内容危险操作 git reset --hard HEAD # 本地代码回到指定 commit git reset --hard commitid # 恢复本地提交把暂存区内容退回工作区 git reset HEAD # 撤销 add 时多添加的文件 git reset 路径名 # 取消本地所有修改注意最后的点 git checkout -- . # 清除工作区和暂存区中未提交的改动 git checkout HEAD . # 清除工作区和暂存区中未提交的改动指定文件 git checkout HEAD 文件路径 # 恢复到和服务器一样 git checkout -f 要恢复的文件 # 丢弃工作区中文件尚未提交的修改 git checkout -- filegit reset --hard会直接丢弃工作区和暂存区的改动执行前确认没有未保存的内容。git checkout -- .和git checkout .效果类似都是取消本地未提交的修改注意命令最后那个点不能漏。git checkout HEAD .比git checkout -- .更彻底它同时清除工作区和暂存区的改动。如果只是想撤销某个文件的修改把点换成具体文件路径就行。文档里还提到git clean -df清除未跟踪的文件git clean -nxfd先预览会删掉哪些文件git clean -xfd连编译产物一起删。-n参数是 dry-run先看再删防止重要文件被误删。3.4 cherry-pick 与 revert 的适用场景跨分支摘提交和反转提交是两个特定场景下的命令。git cherry-pick -x commit号当其他分支有改过的 bug 而你的分支也需要时可以直接摘过来不需要重新改。git cherry-pick --abort取消摘取。git revert commit号删除本地分支上该条提交执行 revert 时要求工作树必须是干净的。# 摘取其他分支的提交到当前分支-x 会在提交说明里记录来源 git cherry-pick -x commit号 # 取消 cherry-pick git cherry-pick --abort # 反转提交生成一条新提交来抵消指定提交的改动 git revert commit号 # 删除本地分支上 commit 号之后的所有提交 git reset commit号 # 删除本地分支上最后一个提交仅限未 push 的本地提交 git reset commit号 --hardcherry-pick适合把某个修复从一个分支搬到另一个分支-x参数会在提交信息里加上来源 commit 号方便追溯。revert和reset的区别要分清revert是生成一条新提交来抵消旧提交历史记录保留reset是直接移动分支指针历史记录被截断。已经 push 到远程的提交用revert更安全本地未 push 的提交用reset更干净。git reset commit号 --hard删除的是本地最后一个提交前提是这个提交没有 push 到服务器。4. 避坑与排查这些命令用错一次就够记一辈子4.1 git reset --hard 之后发现删错了文件现象执行git reset --hard HEAD或git reset --hard commitid之后工作区未提交的修改全部消失包括刚写了一半的代码。原因--hard参数会同时重置工作区和暂存区未提交的内容没有进入 Git 对象库无法通过常规方式找回。解决如果文件曾经被git add过可以用git fsck --lost-found查找悬空对象在.git/lost-found目录下找回部分内容。更稳妥的做法是执行前先git stash保存当前状态或者用git clean -nxfd预览将要删除的文件。我现在的习惯是任何--hard操作之前先跑一遍git status确认没有未提交的重要改动。4.2 git push -f 覆盖了别人的提交现象强制推送之后远程分支上别人的提交不见了团队群里开始找人。原因git push -f会用本地历史覆盖远程历史如果本地分支落后于远程远程上那些本地没有的提交就会被冲掉。解决先git fetch origin拉取远程最新状态用git log origin/分支名对比本地和远程的差异确认本地包含远程所有提交后再推。如果已经覆盖了被覆盖的提交如果还在本地 reflog 里可以通过git reflog找到对应 commit 号恢复。更安全的做法是用git push --force-with-lease它在远程有更新时会拒绝推送。4.3 git checkout . 和 git checkout -- . 分不清现象想丢弃某个文件的修改敲了git checkout .结果把所有文件的修改都丢了。原因git checkout .后面的点表示当前目录下所有文件不加文件名就会作用于全部。git checkout -- .和git checkout .在多数 Git 版本里效果一样都是取消所有未提交的修改。解决只想撤销单个文件时把点换成具体路径比如git checkout -- src/main.js。执行前用git status看清楚哪些文件有改动确认只丢弃目标文件。如果改动已经git add过需要先用git reset HEAD 文件名退回工作区再git checkout -- 文件名。4.4 git clean -xfd 删掉了编译产物之外的东西现象跑完git clean -xfd之后本地一些没被跟踪的配置文件、日志、临时数据全没了。原因-x参数会连.gitignore里忽略的文件一起删-f是强制-d是连目录一起删。三者组合起来范围很大。解决养成先git clean -nxfd预览的习惯-n是 dry-run只列出会删哪些文件而不实际执行。确认列表里没有重要文件后再去掉-n执行。如果某些文件确实需要保留把它们加入.gitignore之外或者放到 Git 跟踪范围里。4.5 git pull 之后出现多余的合并提交现象每次git pull之后git log里多出一条 “Merge branch xxx of ...” 的提交历史线变得很乱。原因默认的git pull是 fetch 加 merge本地有提交时就会产生合并提交。解决用git pull --rebase origin 分支名代替直接git pull它会把本地提交变基到远程最新提交之后保持历史线性。如果已经产生了多余的合并提交可以用git rebase -i整理但已经 push 到远程的合并提交不建议再改避免影响其他人。5. 进阶技巧别名、打包与仓库搭建5.1 用 alias 把长命令缩短文档里提到git config --global alias.yourcmd和一段lg别名的配置这个技巧用熟了能省不少敲键盘的时间。# 配置一个 lg 别名图形化显示提交历史 git config --global alias.lg log --color --graph --prettyformat:%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset --abbrev-commit # 配置后直接 git lg 就能看到彩色图形化日志 git lg # 配置一个 st 别名代替 git status git config --global alias.st status # 配置一个 co 别名代替 git checkout git config --global alias.co checkoutalias.lg那段配置里的占位符%Cred开始红色%Creset重置颜色%h短 commit 号%d引用名称%s提交说明%cr相对时间%an作者名。配置一次全局生效之后git lg就能看到带颜色和分支图形的日志比默认git log直观得多。别名可以按自己习惯配比如git config --global alias.last log -1 HEAD看最后一次提交。5.2 把某个 commit 修改的文件打包出来文档里有一条命令git diff xxx xxx --name-only | xargs zip update.zip用来把一个 commit 号中修改的所有文件打包出来。这个在需要把改动同步到没有 Git 环境的服务器时特别有用。# 列出两个 commit 之间变更的文件名打包成 zip git diff xxx xxx --name-only | xargs zip update.zip # 如果只想看某个 commit 改了哪些文件 git show commit号 --name-only # 把日志输出到文件方便后续处理 git log gitLog.txtgit diff xxx xxx --name-only输出的是两个 commit 之间所有变更文件的路径列表通过管道传给xargs zip update.zip就打包好了。注意文件路径里如果有空格xargs可能会拆错可以用xargs -d \n指定分隔符。这个技巧在部署时很实用只传变更文件而不是整个项目。5.3 在 Ubuntu 上搭一个简单的 Git 远程仓库文档最后提到了在 Ubuntu 上搭建 Git 远程仓库的步骤git --bare init初始化裸仓库chmod -R 777 *赋权在 config 文件中添加[receive] denyCurrentBranch ignore。# 在服务器上创建一个裸仓库 mkdir /home/git/code.git cd /home/git/code.git git --bare init # 给 git 用户组下的远程库赋权 chmod -R 777 /home/git/code.git # 编辑 config 文件允许推送到当前分支 # 在 [receive] 段落下添加 # denyCurrentBranch ignoregit --bare init创建的仓库没有工作区专门用来做远程仓库接收推送。denyCurrentBranch ignore这个配置是为了允许推送到非裸仓库的当前分支但裸仓库本身没有工作区这个配置在裸仓库里其实不是必须的文档里这个配置更适合非裸仓库的场景。chmod -R 777权限给得比较宽生产环境建议按用户组精细控制。搭好之后本地用git remote add origin git服务器地址:/home/git/code.git关联再git push -u origin master推上去。5.4 用 git blame 和 git grep 定位问题git blame 文件名显示每一行最后一次改动是谁、什么时候改的排查问题时直接定位到人和提交。git grep delete from在文件中搜索文本比普通 grep 快因为它只搜 Git 跟踪的文件。# 查看文件每一行的最后修改者和时间 git blame src/main.js # 在 Git 跟踪的文件中搜索文本 git grep delete from # 查看某个 commit 属于哪个 branch git branch -r --contains commit号 # 查看工作区改动时间 ls --full-time .git/indexgit blame配合git show commit号可以快速还原某行代码的修改上下文。git branch -r --contains commit号用来确认某个提交在哪些远程分支上存在排查分支合并问题时很有用。ls --full-time .git/index查看索引文件的修改时间可以辅助判断工作区状态。从那以后我每次执行git reset --hard或git push -f之前都强制先跑一遍git status和git log --oneline -5确认当前状态和最近提交再决定下一步。这个习惯帮我避开了好几次差点覆盖别人提交的情况。希望帮到你。本文还有配套的精品资源点击获取
02
RELATED NEWS

相关资讯

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

03
WHY YAOTU

想打造同款高转化官网?

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

◈

场景化定制

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

◐

营销型架构

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

▲

全周期服务

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

免费获取你的建站方案

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