Git命令大全及详解

Git是一个分布式版本控制系统,广泛应用于软件开发中。以下是Git常用命令的详细解释:

基本配置

bash
 
复制
 
下载
# 设置全局用户名
git config --global user.name "Your Name"

# 设置全局邮箱
git config --global user.email "your.email@example.com"

# 查看当前配置
git config --list

# 设置默认编辑器为vim
git config --global core.editor vim

创建和克隆仓库

bash
 
复制
 
下载
# 初始化新仓库
git init [项目名]

# 克隆远程仓库
git clone <远程仓库地址>

# 克隆指定分支
git clone -b <分支名> <远程仓库地址>

基本工作流程

bash
 
复制
 
下载
# 检查当前文件状态
git status

# 添加文件到暂存区
git add <文件名>  # 添加特定文件
git add .        # 添加所有修改和新增文件
git add -A       # 添加所有修改、新增和删除的文件

# 提交更改到本地仓库
git commit -m "提交信息"

# 添加并提交(适用于已跟踪文件)
git commit -am "提交信息"

# 修改最后一次提交
git commit --amend

分支管理

bash
 
复制
 
下载
# 查看分支
git branch       # 查看本地分支
git branch -a    # 查看所有分支(包括远程)
git branch -v    # 查看分支及其最后一次提交

# 创建分支
git branch <分支名>

# 切换分支
git checkout <分支名>

# 创建并切换到新分支
git checkout -b <分支名>

# 合并分支
git merge <分支名>  # 将指定分支合并到当前分支

# 删除分支
git branch -d <分支名>   # 删除已合并的分支
git branch -D <分支名>   # 强制删除分支

# 重命名分支
git branch -m <旧分支名> <新分支名>

远程操作

bash
 
复制
 
下载
# 查看远程仓库
git remote -v

# 添加远程仓库
git remote add <远程名称> <远程仓库地址>

# 从远程获取更新
git fetch <远程名称>

# 拉取远程分支并合并
git pull <远程名称> <分支名>

# 推送到远程分支
git push <远程名称> <分支名>

# 删除远程分支
git push <远程名称> --delete <分支名>

# 设置上游分支
git push --set-upstream <远程名称> <分支名>

撤销操作

bash
 
复制
 
下载
# 撤销工作区修改(未add)
git checkout -- <文件名>

# 撤销暂存区修改(已add)
git reset HEAD <文件名>

# 回退到指定提交
git reset --hard <commit-id>  # 彻底回退
git reset --soft <commit-id>  # 保留修改到暂存区
git reset --mixed <commit-id> # 保留修改到工作区(默认)

# 回退到上一个提交
git reset --hard HEAD^

# 撤销某次提交(创建新提交来撤销)
git revert <commit-id>

查看历史

bash
 
复制
 
下载
# 查看提交历史
git log
git log --oneline       # 简洁显示
git log --graph         # 图形化显示
git log -p              # 显示差异
git log --stat          # 显示修改统计
git log --since="2 weeks ago"  # 按时间筛选
git log -n 5            # 显示最近5次提交
git log --author="name" # 按作者筛选
git log --grep="关键词"  # 按提交信息筛选

# 查看文件修改历史
git blame <文件名>

# 查看某次提交的修改内容
git show <commit-id>

标签管理

bash
 
复制
 
下载
# 查看标签
git tag

# 创建轻量标签
git tag <标签名>

# 创建附注标签
git tag -a <标签名> -m "标签信息"

# 查看标签详情
git show <标签名>

# 推送标签到远程
git push <远程名称> <标签名>
git push <远程名称> --tags  # 推送所有标签

# 删除标签
git tag -d <标签名>
git push <远程名称> :refs/tags/<标签名>  # 删除远程标签

储藏和清理

bash
 
复制
 
下载
# 储藏当前修改
git stash
git stash save "储藏信息"

# 查看储藏列表
git stash list

# 应用最近的储藏
git stash apply
git stash apply stash@{n}  # 应用指定储藏

# 删除储藏
git stash drop stash@{n}
git stash pop  # 应用并删除最近储藏

# 清理未跟踪文件
git clean -n  # 预览将被删除的文件
git clean -f  # 强制删除未跟踪文件
git clean -fd # 强制删除未跟踪文件和目录

子模块

bash
 
复制
 
下载
# 添加子模块
git submodule add <仓库地址> <路径>

# 初始化子模块
git submodule init

# 更新子模块
git submodule update

# 克隆包含子模块的项目
git clone --recurse-submodules <仓库地址>

高级操作

bash
 
复制
 
下载
# 交互式暂存
git add -i

# 交互式变基
git rebase -i <commit-id>

# 二分查找引入bug的提交
git bisect start
git bisect bad        # 当前版本有问题
git bisect good <commit-id>  # 指定已知好的提交
# 测试后标记good或bad,git会逐步缩小范围
git bisect reset      # 结束二分查找

# 重写提交历史
git filter-branch  # 谨慎使用,会改变历史

# 打包未推送的提交
git bundle create <文件名> <远程名称>/<分支名>..HEAD

其他实用命令

bash
 
复制
 
下载
# 查看命令帮助
git help <命令>

# 显示当前目录的Git根目录
git rev-parse --show-toplevel

# 忽略文件权限变化
git config core.fileMode false

# 设置Git命令别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

以上命令涵盖了Git日常使用的大部分场景。根据具体需求选择合适的命令组合,可以高效地完成版本控制工作。

posted @ 2025-04-23 17:01  丶Future  阅读(55)  评论(0)    收藏  举报