初始化仓库
创建一个新的Git仓库,开始版本控制之旅。
描述:在指定目录或当前目录初始化Git仓库
git init
# 创建并初始化新目录
git init my-project
添加文件到暂存区
将文件更改添加到Git的暂存区,准备提交。
描述:将文件或目录添加到暂存区
git add .
# 添加特定文件
git add app.js
# 添加多个文件
git add app.js styles.css
# 添加所有txt文件
git add *.txt
git add -p可以交互式地选择要添加的更改部分。
提交更改
将暂存区的更改永久保存到Git历史中。
描述:提交暂存区的更改
git commit -m "Initial commit"
# 跳过暂存区直接提交
git commit -am "Fix login bug"
# 修改最后一次提交
git commit --amend -m "Updated message"
feat: 添加新功能。
查看状态
查看工作区和暂存区的当前状态。
描述:显示工作区状态
git status
# 查看简洁状态
git status -s
# 查看分支状态
git status -sb
查看历史
查看项目的提交历史记录。
描述:查看提交历史
git log
# 查看简洁历史
git log --oneline
# 查看图形化历史
git log --graph --oneline
# 查看特定文件历史
git log --follow file.js
q退出日志查看。现代Git日志输出更加美观和直观。
查看分支
查看本地和远程的所有分支。
描述:列出、创建或删除分支
git branch
# 查看所有分支(包括远程)
git branch -a
# 查看远程分支
git branch -r
# 查看分支详细信息
git branch -vv
创建分支
创建新的开发分支。
描述:创建新分支
git branch feature-login
# 从指定提交创建分支
git branch feature-login abc123
# 创建并切换到新分支
git checkout -b feature-login
feature/、bugfix/前缀。
切换分支
在不同的分支之间切换。
描述:切换到指定分支
git checkout feature-login
# 使用switch命令(Git 2.23+)
git switch feature-login
# 切换到上一个分支
git checkout -
git stash保存未提交的更改。
合并分支
将一个分支的更改合并到当前分支。
描述:合并指定分支到当前分支
git merge feature-login
# 禁用快进合并
git merge --no-ff feature-login
# 中断合并
git merge --abort
删除分支
删除不再需要的分支。
描述:删除分支
git branch -d feature-login
# 强制删除分支
git branch -D feature-login
# 删除远程分支
git push origin --delete feature-login
-d只删除已合并的分支,-D可以删除未合并的分支(谨慎使用)。
添加远程仓库
关联本地仓库到远程仓库。
描述:添加远程仓库
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
克隆仓库
从远程仓库克隆到本地。
描述:克隆远程仓库
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 push origin main
# 推送并设置上游分支
git push -u origin main
# 推送所有分支
git push --all origin
# 强制推送(谨慎使用)
git push --force origin main
-u参数设置上游分支后,后续只需执行git push。
拉取代码
从远程仓库拉取最新代码并合并。
描述:拉取并合并远程更新
git pull origin main
# 拉取并变基
git pull --rebase origin main
# 只拉取不合并
git fetch origin main
git pull等同于git fetch + git merge。
获取更新
从远程仓库获取最新更新但不合并。
描述:获取远程更新
git fetch
# 获取特定远程仓库
git fetch origin
# 获取特定分支
git fetch origin main
暂存工作
临时保存当前工作区的更改。
描述:暂存当前工作区的更改
git stash
# 带消息暂存
git stash save "work in progress"
# 恢复最近暂存
git stash pop
# 查看暂存列表
git stash list
撤销提交
撤销或修改提交历史。
描述:重置当前分支到指定状态
git reset HEAD~1
# 撤销提交并删除更改
git reset --hard HEAD~1
# 修改最后一次提交
git commit --amend
--soft保留更改在暂存区,--mixed保留更改在工作区,--hard完全删除。
变基操作
重新应用提交到另一个基础。
描述:变基操作,线性化提交历史
git rebase main
# 交互式变基
git rebase -i HEAD~3
# 跳过变基
git rebase --skip
# 中止变基
git rebase --abort
选择提交
选择特定提交应用到当前分支。
描述:选择特定提交应用
git cherry-pick abc123
# 选择多个提交
git cherry-pick abc123..def456
# 选择但不自动提交
git cherry-pick -n abc123
git log查看。
AI 生成提交信息
使用AI工具分析代码变更,生成符合规范的提交信息。
描述:AI辅助生成提交信息
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 代码审查
使用AI分析Pull Request,提供代码质量建议。
描述:AI辅助代码审查
# AI会自动检测潜在的bug、性能问题和安全漏洞
# GitLab Duo AI 审查
gitlab-duo review feature/new-ui
# 本地AI审查工具
ai-review --diff HEAD~1
AI 冲突解决
AI辅助理解和解决Git合并冲突。
描述:AI辅助冲突解决
git conflict explain
# AI 建议合并策略
git merge-suggest feature/new-ui
# AI 自动解决简单冲突
git resolve-conflict --ai file.js
AI 命令预测
AI根据上下文预测下一个Git命令。
描述:AI预测下一个命令
$ git [Tab]
# AI提示:根据您的更改,可能需要:
# git add modified-file.js
# git commit -m "fix: 修复登录验证逻辑"
# git push origin feature/login
# 配置shell集成
eval "$(git-predict init)"
GPG 签名验证
使用GPG/SSH密钥签名提交,验证作者身份。
描述:启用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
Conventional Commits
遵循规范化的提交信息格式。
描述:规范化提交信息格式
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
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
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
性能优化
优化大型仓库的性能。
描述:优化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