ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Git命令速查手册:从基础配置到高级技巧

Git命令速查手册:从基础配置到高级技巧

1. Git常用命令与场景速查手册

作为开发者每天都要打交道的版本控制工具,Git的命令行操作既是基本功又是效率瓶颈。我整理了这份包含高频命令、典型场景和实用技巧的速查表,特别强化了git fetch等易混淆指令的解析。这份手册的特点在于:

  • 按实际工作流分类,非字母排序
  • 包含命令组合的典型用法
  • 标注了各参数的行为差异
  • 附常见报错解决方案

1.1 基础配置与初始化

安装Git后首要工作是身份配置,这会影响所有提交记录:

git config --global user.name "你的姓名" git config --global user.email "公司邮箱" git config --global core.editor vim # 设置默认编辑器

查看当前配置:

git config --list

初始化新仓库的两种方式:

# 本地初始化 git init # 克隆远程仓库(推荐SSH协议) git clone git@github.com:user/repo.git

注意:公司项目建议配置SSH证书而非HTTPS,避免频繁输入密码。生成SSH key的命令:

ssh-keygen -t ed25519 -C "your_email@example.com"

1.2 日常代码提交流程

典型开发周期中的命令序列:

# 查看当前变更状态(养成习惯性操作) git status # 添加文件到暂存区(注意路径规范) git add src/main.js # 添加单个文件 git add . # 添加所有修改(慎用) # 提交到本地仓库(消息格式遵循约定) git commit -m "feat: 新增用户登录模块" # 推送到远程分支(首次推送需建立追踪) git push -u origin feature/login

避坑提示:git add .会包含所有未跟踪文件,建议使用git add -u只添加已跟踪文件的修改,或通过.gitignore文件排除构建产物、IDE配置等。

1.3 分支管理实战

分支操作是Git的核心价值所在:

# 查看所有分支(远程分支用git fetch更新) git branch -av # 创建并切换分支(推荐单条命令完成) git checkout -b hotfix/ssl-cert # 删除已合并的分支(-d参数更安全) git branch -d feature/old # 强制删除未合并分支(慎用) git branch -D experiment

分支合并的三种策略:

# 快速合并(线性历史) git merge feature/login # 变基合并(整洁历史线) git rebase main # 三方合并(解决冲突) git merge --no-ff feature/payment

经验法则:团队协作使用merge,个人分支使用rebase。执行rebase前务必保证工作区干净。

2. git fetch深度解析

2.1 与git pull的本质区别

多数开发者混淆的两个命令:

git fetch origin # 仅下载远程变更到本地仓库 git pull origin main # = fetch + merge

关键差异点:

行为git fetchgit pull
网络操作仅下载下载+合并
工作区影响可能产生合并冲突
安全系数高(可预览变更)低(直接修改)

2.2 高级fetch用法

查看远程分支更新情况:

git fetch --dry-run

获取特定分支到本地(不自动合并):

git fetch origin feature/chat:feature/chat-local

清理已删除的远程分支引用:

git fetch --prune

调试技巧:添加-v参数查看详细传输过程,如git fetch -v

3. 典型场景解决方案

3.1 撤销操作大全

# 撤销工作区修改(危险操作) git checkout -- file.txt # 撤销暂存区修改(回退到工作区) git reset HEAD file.txt # 修改最后一次提交(未push时) git commit --amend -m "新的提交信息" # 回退到指定提交(三种模式) git reset --soft HEAD~1 # 保留修改到暂存区 git reset --mixed HEAD~1 # 保留修改到工作区(默认) git reset --hard HEAD~1 # 彻底丢弃修改

3.2 冲突解决流程

  1. 合并时出现冲突:
Auto-merging src/index.js CONFLICT (content): Merge conflict in src/index.js
  1. 手动编辑文件,保留需要的代码(冲突标记为<<<<<<<>>>>>>>

  2. 标记冲突已解决:

git add src/index.js git commit # 不要加-m参数,使用自动生成的合并消息

专业工具推荐:配置git mergetool使用VS Code或Beyond Compare进行可视化冲突解决

3.3 找回丢失的提交

查看操作历史(含已删除的commit):

git reflog

重置到特定操作点:

git reset --hard HEAD@{5}

4. 高效工作技巧

4.1 别名配置

~/.gitconfig中添加:

[alias] st = status ci = commit br = branch co = checkout df = diff lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

4.2 交互式操作

选择性提交部分修改:

git add -p # 交互式选择代码块

修改多个历史提交:

git rebase -i HEAD~3 # 编辑最近3个提交

4.3 子模块管理

添加依赖库:

git submodule add https://github.com/jquery/jquery.git lib/jquery

更新所有子模块:

git submodule update --init --recursive

5. 企业级实践建议

5.1 提交消息规范

推荐格式:

类型(范围): 简要描述 详细说明(可选) 关联Issue: #123

常用类型:

  • feat:新功能
  • fix:错误修复
  • docs:文档变更
  • style:代码格式
  • refactor:重构
  • test:测试相关

5.2 代码审查流程

  1. 创建特性分支:
git checkout -b feature/oauth2
  1. 开发完成后推送到远程:
git push origin feature/oauth2
  1. 在Git平台创建Pull Request

  2. 根据审查意见修改后:

git commit --amend # 修正最后一次提交 git push -f # 强制更新(仅限特性分支)

5.3 大型仓库优化

部分克隆(仅获取最新历史):

git clone --depth=1 https://github.com/vuejs/vue.git

稀疏检出(只下载指定目录):

git init vue-core cd vue-core git remote add origin https://github.com/vuejs/vue.git git config core.sparsecheckout true echo "src/core" >> .git/info/sparse-checkout git pull origin main

6. 疑难问题排查

6.1 常见错误处理

问题1fatal: refusing to merge unrelated histories

# 当合并两个独立开发的仓库时出现 git merge --allow-unrelated-histories branch-name

问题2error: failed to push some refs

# 通常因远程有本地不存在的提交导致 git pull --rebase origin main git push

问题3warning: LF will be replaced by CRLF

# 统一换行符风格(Windows开发建议) git config --global core.autocrlf true

6.2 性能优化

清理历史大文件:

# 使用BFG工具清理(需Java环境) java -jar bfg.jar --strip-blobs-bigger-than 100M repo.git

重建本地仓库:

git gc --aggressive git repack -a -d --depth=250 --window=250

7. 可视化工具链

虽然命令行是核心,但合理使用GUI工具能提升效率:

  • GitKraken:跨平台图形客户端
  • SourceTree:免费的Git管理工具
  • VS Code Git插件:内置的版本控制功能
  • Tig:终端下的Git浏览器(brew install tig

配置差异对比工具:

git config --global diff.tool vscode git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"
返回列表