初始化仓库

创建一个新的Git仓库,开始版本控制之旅。

git init [目录名]

描述:在指定目录或当前目录初始化Git仓库

# 在当前目录初始化
git init

# 创建并初始化新目录
git init my-project
提示:执行后会在目录中创建.git文件夹,包含所有版本控制信息。

添加文件到暂存区

将文件更改添加到Git的暂存区,准备提交。

git add [文件/目录]

描述:将文件或目录添加到暂存区

# 添加所有更改
git add .

# 添加特定文件
git add app.js

# 添加多个文件
git add app.js styles.css

# 添加所有txt文件
git add *.txt
提示:使用git add -p可以交互式地选择要添加的更改部分。

提交更改

将暂存区的更改永久保存到Git历史中。

git commit -m "提交信息"

描述:提交暂存区的更改

# 基本提交
git commit -m "Initial commit"

# 跳过暂存区直接提交
git commit -am "Fix login bug"

# 修改最后一次提交
git commit --amend -m "Updated message"
提示:推荐使用Conventional Commits格式,如feat: 添加新功能

查看状态

查看工作区和暂存区的当前状态。

git status

描述:显示工作区状态

# 查看详细状态
git status

# 查看简洁状态
git status -s

# 查看分支状态
git status -sb
提示:会显示已修改、已暂存和未跟踪的文件。Git 2.50版本改进了状态显示的可读性。

查看历史

查看项目的提交历史记录。

git log [选项]

描述:查看提交历史

# 查看完整历史
git log

# 查看简洁历史
git log --oneline

# 查看图形化历史
git log --graph --oneline

# 查看特定文件历史
git log --follow file.js
提示:q退出日志查看。现代Git日志输出更加美观和直观。

查看分支

查看本地和远程的所有分支。

git branch [选项]

描述:列出、创建或删除分支

# 查看本地分支
git branch

# 查看所有分支(包括远程)
git branch -a

# 查看远程分支
git branch -r

# 查看分支详细信息
git branch -vv
提示:当前分支会显示星号(*)标记。

创建分支

创建新的开发分支。

git branch [分支名]

描述:创建新分支

# 创建新分支
git branch feature-login

# 从指定提交创建分支
git branch feature-login abc123

# 创建并切换到新分支
git checkout -b feature-login
提示:推荐使用描述性的分支名,如feature/bugfix/前缀。

切换分支

在不同的分支之间切换。

git checkout [分支名]

描述:切换到指定分支

# 切换到分支
git checkout feature-login

# 使用switch命令(Git 2.23+)
git switch feature-login

# 切换到上一个分支
git checkout -
提示:确保当前工作区是干净的,或使用git stash保存未提交的更改。

合并分支

将一个分支的更改合并到当前分支。

git merge [分支名]

描述:合并指定分支到当前分支

# 合并分支
git merge feature-login

# 禁用快进合并
git merge --no-ff feature-login

# 中断合并
git merge --abort
提示:如果出现冲突,需要手动解决冲突后再次提交。

删除分支

删除不再需要的分支。

git branch -d [分支名]

描述:删除分支

# 删除已合并的分支
git branch -d feature-login

# 强制删除分支
git branch -D feature-login

# 删除远程分支
git push origin --delete feature-login
提示:-d只删除已合并的分支,-D可以删除未合并的分支(谨慎使用)。

添加远程仓库

关联本地仓库到远程仓库。

git remote add [名称] [URL]

描述:添加远程仓库

# 添加origin远程仓库
git remote add origin https://github.com/user/repo.git

# 查看远程仓库
git remote -v

# 修改远程仓库URL
git remote set-url origin https://github.com/user/new-repo.git
提示:origin是远程仓库的默认名称,可以自定义多个远程仓库。

克隆仓库

从远程仓库克隆到本地。

git clone [URL] [目录]

描述:克隆远程仓库

# 克隆到当前目录
git clone https://github.com/user/repo.git

# 克隆到指定目录
git clone https://github.com/user/repo.git my-project

# 克隆特定分支
git clone -b develop https://github.com/user/repo.git
提示:克隆后会自动创建.git文件夹,并设置origin远程仓库。

推送代码

将本地提交推送到远程仓库。

git push [远程] [分支]

描述:推送本地分支到远程

# 推送当前分支
git push origin main

# 推送并设置上游分支
git push -u origin main

# 推送所有分支
git push --all origin

# 强制推送(谨慎使用)
git push --force origin main
提示:-u参数设置上游分支后,后续只需执行git push

拉取代码

从远程仓库拉取最新代码并合并。

git pull [远程] [分支]

描述:拉取并合并远程更新

# 拉取当前分支
git pull origin main

# 拉取并变基
git pull --rebase origin main

# 只拉取不合并
git fetch origin main
提示:git pull等同于git fetch + git merge

获取更新

从远程仓库获取最新更新但不合并。

git fetch [远程]

描述:获取远程更新

# 获取所有远程更新
git fetch

# 获取特定远程仓库
git fetch origin

# 获取特定分支
git fetch origin main
提示:获取后可以查看差异再决定是否合并,这是更安全的工作方式。

暂存工作

临时保存当前工作区的更改。

git stash [命令]

描述:暂存当前工作区的更改

# 暂存当前更改
git stash

# 带消息暂存
git stash save "work in progress"

# 恢复最近暂存
git stash pop

# 查看暂存列表
git stash list
提示:在切换分支前使用,避免未提交的更改造成冲突。

撤销提交

撤销或修改提交历史。

git reset [模式] [提交]

描述:重置当前分支到指定状态

# 撤销最后一次提交但保留更改
git reset HEAD~1

# 撤销提交并删除更改
git reset --hard HEAD~1

# 修改最后一次提交
git commit --amend
提示:--soft保留更改在暂存区,--mixed保留更改在工作区,--hard完全删除。

变基操作

重新应用提交到另一个基础。

git rebase [分支]

描述:变基操作,线性化提交历史

# 变基到main分支
git rebase main

# 交互式变基
git rebase -i HEAD~3

# 跳过变基
git rebase --skip

# 中止变基
git rebase --abort
提示:现代Git提供了更友好的交互式rebase界面。

选择提交

选择特定提交应用到当前分支。

git cherry-pick [提交]

描述:选择特定提交应用

# 选择单个提交
git cherry-pick abc123

# 选择多个提交
git cherry-pick abc123..def456

# 选择但不自动提交
git cherry-pick -n abc123
提示:需要提供完整的commit hash,可以使用git log查看。

AI 生成提交信息

使用AI工具分析代码变更,生成符合规范的提交信息。

AI Commit Generation

描述:AI辅助生成提交信息

# GitHub Copilot CLI
git add .
git commit -m "$(gh copilot suggest '生成描述这些变更的提交信息')"

# Gitmoji AI 助手
git commit -m "$(gitmoji -ai)"

# 自定义AI脚本
git commit -m "$(python ai-commit-generator.py)"
提示:AI能够理解代码语义,生成符合Conventional Commits规范的提交信息。

AI 代码审查

使用AI分析Pull Request,提供代码质量建议。

AI Code Review

描述:AI辅助代码审查

# GitHub Copilot 自动审查
# AI会自动检测潜在的bug、性能问题和安全漏洞

# GitLab Duo AI 审查
gitlab-duo review feature/new-ui

# 本地AI审查工具
ai-review --diff HEAD~1
提示:AI审查可以捕捉人工可能遗漏的问题,如未处理的边界条件、安全漏洞、性能优化机会等。主流平台都已集成AI审查功能。

AI 冲突解决

AI辅助理解和解决Git合并冲突。

AI Conflict Resolution

描述:AI辅助冲突解决

# 使用 AI 理解冲突
git conflict explain

# AI 建议合并策略
git merge-suggest feature/new-ui

# AI 自动解决简单冲突
git resolve-conflict --ai file.js
提示:现代Git工具已集成AI,可以解释冲突上下文并建议最佳合并方案。

AI 命令预测

AI根据上下文预测下一个Git命令。

AI Command Prediction

描述:AI预测下一个命令

# GitSense AI(假设的AI助手)
$ git [Tab]
# AI提示:根据您的更改,可能需要:
# git add modified-file.js
# git commit -m "fix: 修复登录验证逻辑"
# git push origin feature/login

# 配置shell集成
eval "$(git-predict init)"
提示:AI命令预测基于项目历史和个人使用模式,学习您的习惯并提供个性化建议。现代智能终端(如Warp、Fig)都集成了此功能。

GPG 签名验证

使用GPG/SSH密钥签名提交,验证作者身份。

Git GPG Signing

描述:启用GPG签名验证

# 配置GPG签名
git config --global commit.gpgsign true
git config --global gpg.program gpg2

# 查看签名状态
git log --show-signature

# 使用SSH签名
git config --global commit.gpgsign true
git config --global gpg.format ssh
提示:主流平台(GitHub/GitLab)推荐使用签名验证提交,提高代码可信度。

Conventional Commits

遵循规范化的提交信息格式。

Conventional Commits

描述:规范化提交信息格式

# 格式: type(scope): subject
git commit -m "feat(auth): 添加OAuth2登录支持"
git commit -m "fix(api): 修复用户数据获取bug"
git commit -m "docs(readme): 更新安装说明"
git commit -m "style(button): 优化按钮样式"

# 安装commitlint
npm install @commitlint/cli @commitlint/config-conventional
提示:使用commitlint工具自动验证提交信息格式,便于自动生成变更日志。

Partial Clone

部分克隆大型仓库,节省时间和空间。

Git Partial Clone

描述:部分克隆大型仓库

# 按需克隆(不下载历史)
git clone --filter=blob:none https://github.com/user/repo.git

# 仅克隆特定分支
git clone --single-branch --branch main repo.git

# 克隆特定文件
git clone --depth 1 --filter=blob:limit=1m repo.git
提示:对于包含大型媒体文件或历史的仓库,部分克隆可提速90%以上。Git 2.50版本进一步优化了partial clone的性能。

Sparse Checkout

只检出仓库的特定目录。

Git Sparse Checkout

描述:稀疏检出特定目录

# 启用稀疏检出
git clone --no-checkout repo.git
cd repo
git sparse-checkout init
git sparse-checkout set src/api docs

# 添加更多目录
git sparse-checkout add src/components

# 禁用稀疏检出
git sparse-checkout disable
提示:在monorepo项目中,只检出需要的目录可以大幅减少磁盘占用。

性能优化

优化大型仓库的性能。

Git Performance Optimization

描述:优化Git性能

# 启用并行索引操作
git config --global core.parallelIndex 8

# 优化大文件处理
git lfs install
git lfs track "*.psd"

# 使用Git 2.50+的新索引格式
git update-index --index-version 4

# 清理无用文件
git gc --prune=now
提示:Git 2.50版本增强了分支信息的显示。