Git常用命令速查手册

适用人群:所有使用Git进行版本控制的开发者
目标:快速查找和使用Git常用命令
前置知识:了解基本的版本控制概念


配置Git

初始配置

Terminal window
# 设置用户名
git config --global user.name "Your Name"
# 设置邮箱
git config --global user.email "your.email@example.com"
# 查看配置
git config --list
# 设置默认编辑器
git config --global core.editor vim
# 设置默认分支名称
git config --global init.defaultBranch main

创建仓库

初始化仓库

Terminal window
# 在当前目录创建新仓库
git init
# 克隆远程仓库
git clone https://github.com/user/repo.git
# 克隆指定分支
git clone -b branch-name https://github.com/user/repo.git

基本操作

添加和提交

Terminal window
# 查看文件状态
git status
# 添加单个文件到暂存区
git add filename
# 添加所有修改的文件
git add .
# 添加所有文件(包括删除的)
git add -A
# 提交更改
git commit -m "commit message"
# 添加并提交
git commit -am "commit message"
# 修改最后一次提交
git commit --amend -m "new message"

查看历史

Terminal window
# 查看提交历史
git log
# 简洁模式查看历史
git log --oneline
# 查看图形化历史
git log --graph --oneline --all
# 查看某个文件的修改历史
git log -p filename
# 查看最近n次提交
git log -n 3

撤销操作

Terminal window
# 撤销工作区的修改
git checkout -- filename
# 撤销暂存区的修改
git reset HEAD filename
# 撤销最后一次提交(保留修改)
git reset --soft HEAD^
# 撤销最后一次提交(丢弃修改)
git reset --hard HEAD^
# 创建新提交来撤销指定提交
git revert <commit-id>

分支管理

创建和切换分支

Terminal window
# 查看所有分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支(本地+远程)
git branch -a
# 创建新分支
git branch new-branch
# 切换分支
git checkout branch-name
# 创建并切换分支
git checkout -b new-branch
# 删除分支
git branch -d branch-name
# 强制删除分支
git branch -D branch-name

合并分支

Terminal window
# 合并指定分支到当前分支
git merge branch-name
# 合并时创建合并提交
git merge --no-ff branch-name
# 查看已合并的分支
git branch --merged
# 查看未合并的分支
git branch --no-merged

变基(Rebase)

Terminal window
# 变基到主分支
git rebase main
# 交互式变基(修改历史提交)
git rebase -i HEAD~3
# 继续变基(解决冲突后)
git rebase --continue
# 放弃变基
git rebase --abort

远程仓库

管理远程仓库

Terminal window
# 查看远程仓库
git remote
# 查看远程仓库详细信息
git remote -v
# 添加远程仓库
git remote add origin https://github.com/user/repo.git
# 删除远程仓库
git remote remove origin
# 重命名远程仓库
git remote rename old-name new-name

推送和拉取

Terminal window
# 推送到远程仓库
git push origin branch-name
# 推送并设置上游分支
git push -u origin branch-name
# 推送所有分支
git push --all origin
# 强制推送(谨慎使用)
git push -f origin branch-name
# 拉取远程更新
git pull origin branch-name
# 拉取并变基
git pull --rebase origin branch-name
# 获取远程更新(不合并)
git fetch origin

暂存工作

使用Stash

Terminal window
# 暂存当前工作
git stash
# 暂存时添加说明
git stash save "work in progress"
# 查看暂存列表
git stash list
# 恢复最近的暂存
git stash pop
# 恢复指定暂存
git stash apply stash@{n}
# 删除暂存
git stash drop stash@{n}
# 清空所有暂存
git stash clear

标签管理

创建和管理标签

Terminal window
# 查看所有标签
git tag
# 创建轻量标签
git tag v1.0.0
# 创建附注标签
git tag -a v1.0.0 -m "Version 1.0.0"
# 推送标签到远程
git push origin v1.0.0
# 推送所有标签
git push origin --tags
# 删除本地标签
git tag -d v1.0.0
# 删除远程标签
git push origin --delete v1.0.0

查看差异

Diff命令

Terminal window
# 查看工作区和暂存区的差异
git diff
# 查看暂存区和最新提交的差异
git diff --staged
# 查看两个提交之间的差异
git diff commit1 commit2
# 查看两个分支之间的差异
git diff branch1 branch2
# 只查看文件名
git diff --name-only

其他实用命令

清理仓库

Terminal window
# 删除未跟踪的文件
git clean -f
# 删除未跟踪的文件和目录
git clean -fd
# 预览将要删除的文件
git clean -n
# 清理所有未跟踪的文件(包括被.gitignore忽略的)
git clean -fx

二分查找

Terminal window
# 开始二分查找
git bisect start
# 标记当前提交为坏的
git bisect bad
# 标记某个提交为好的
git bisect good commit-id
# 重置二分查找
git bisect reset

查看文件内容

Terminal window
# 查看某个提交的文件内容
git show commit-id:filename
# 查看某个分支的文件内容
git show branch-name:filename

常见问题解决

撤销git add

Terminal window
# 撤销单个文件
git reset HEAD filename
# 撤销所有
git reset HEAD

修改已推送的提交信息

Terminal window
# 修改最后一次提交
git commit --amend -m "new message"
# 强制推送
git push -f origin branch-name

解决合并冲突

Terminal window
# 1. 手动编辑冲突文件
# 2. 标记为已解决
git add filename
# 3. 完成合并
git commit

总结

Git是开发者必备的版本控制工具,熟练掌握这些命令能大大提高开发效率。建议将常用命令保存为别名,进一步提高工作效率。

Terminal window
# 设置常用别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.lg "log --graph --oneline --all"

参考资源