GIT常用命令
仓库操作
初始化仓库
git init # 初始化本地仓库
git clone <url> # 克隆远程仓库
git clone --depth=1 <url> # 浅克隆(只下载最近提交)远程仓库管理
git remote -v # 查看远程仓库
git remote add <name> <url> # 添加远程仓库
git remote remove <name> # 删除远程仓库
git remote rename <old> <new> # 重命名远程仓库
git remote set-url <name> <new-url> # 修改远程仓库URL(重要补充)
git remote set-url origin <新的远程仓库URL> # 修改origin的URL使用场景示例
# 查看当前远程仓库
git remote -v
# origin https://github.com/old/repo.git (fetch)
# origin https://github.com/old/repo.git (push)
# 修改远程仓库URL
git remote set-url origin https://github.com/new/repo.git
# 验证修改是否成功
git remote -v
# origin https://github.com/new/repo.git (fetch)
# origin https://github.com/new/repo.git (push)文件操作
状态查看
git status # 查看工作区状态
git status -s # 简洁状态显示添加文件
git add <file> # 添加指定文件
git add . # 添加所有文件
git add -A # 添加所有变更
git add -p # 交互式添加(部分添加)提交更改
git commit -m "提交信息" # 提交更改
git commit -am "提交信息" # 添加并提交(已跟踪文件)
git commit --amend # 修改最后一次提交撤销操作
git restore <file> # 撤销工作区修改(Git 2.23+)
git restore --staged <file> # 取消暂存
git checkout -- <file> # 撤销工作区修改(旧版本)
git reset HEAD <file> # 取消暂存(旧版本)分支管理
分支操作
git branch # 查看本地分支
git branch -a # 查看所有分支(包括远程)
git branch <branch-name> # 创建分支
git checkout <branch-name> # 切换分支
git checkout -b <branch-name> # 创建并切换分支
git branch -d <branch-name> # 删除分支
git branch -D <branch-name> # 强制删除分支
git branch -m <new-name> # 重命名当前分支远程分支
git push origin <branch-name> # 推送分支到远程
git push -u origin <branch-name> # 推送并设置上游分支
git push origin --delete <branch-name> # 删除远程分支
git fetch origin # 获取远程分支信息
git pull origin <branch-name> # 拉取远程分支分支合并
这里推荐使用rebase命令(谨慎操作)
为什么建议使用 Rebase 合并
保持历史线性整洁:避免产生大量无意义的合并提交;时间线清晰,便于追踪问题
提升代码审查体验:显示实际修改内容,而非合并冲突;按逻辑顺序呈现提交
方便问题定位:每个提交都基于最新代码;git bisect 等调试工具更有效
重要提醒:谨慎对已推送到公共仓库的提交进行 rebase
rebase流程详解
1、准备阶段:更新目标分支
# 先切换到要合并的目标分支(通常是main)
git checkout main
# 拉取最新的远程代码(避免变基到过时版本)
git pull origin main
# 或者使用:git fetch origin && git merge origin/main2、切换到待变基分支
# 切换到你的功能分支
git checkout feature-branch3、关键步骤:备份原分支(强烈建议)
为什么必须备份?
变基会重写提交历史,一旦出现问题可能难以恢复。
常见问题场景:
冲突太多,解决到一半想放弃
变基后发现问题,想回到原始状态
团队协作时,其他人已基于原分支开发
# 备份当前分支到新分支,防止变基失败无法恢复
git checkout -b feature-branch-backup
# 确认备份成功
git branch
# * feature-branch-backup
# feature-branch
# main
# 回到原分支
git checkout feature-branch4、执行变基操作
# 方法1:标准变基(自动处理)
git rebase main
# 如果遇到冲突:
# 1. Git会暂停并显示冲突文件
# 2. 手动解决冲突后:
git add <解决的文件>
git rebase --continue
# 3. 如果想放弃变基:
git rebase --abort5、交互式变基(高级操作)
# 重新编排最近3个提交
git rebase -i HEAD~3
# 编辑界面会出现类似内容:
# pick a1b2c3d 提交1:添加登录功能
# pick b2c3d4e 提交2:修复样式问题
# pick c3d4e5f 提交3:添加表单验证
# 可进行的操作(替换pick为):
# r/reword - 修改提交信息
# e/edit - 修改提交内容
# s/squash - 合并到上一个提交
# f/fixup - 合并但不保留提交信息
# d/drop - 删除该提交工作流示例
# 场景:将feature/login分支变基到main
# 1. 保存当前工作状态(如果有未提交的修改)
git stash
# 2. 备份原分支
git checkout -b feature/login-backup-$(date +%Y%m%d-%H%M)
# 3. 返回原分支
git checkout feature/login
# 4. 更新主分支
git fetch origin
git checkout main
git pull origin main
# 5. 变基操作
git checkout feature/login
git rebase main
# 6. 如果出现冲突,依次解决:
# 查看冲突文件
git status
# 编辑冲突文件,解决冲突后标记为已解决
git add <冲突文件>
# 继续变基
git rebase --continue
# 重复直到所有冲突解决
# 7. 推送变基后的分支(需强制推送)
# 使用--force-with-lease更安全
git push origin feature/login --force-with-lease
# 8. 清理备份分支(确认变基成功后再执行)
git branch -d feature/login-backup-20241215-1430查看信息
查看提交历史
git log # 查看提交历史
git log --oneline # 简洁形式查看
git log --graph # 图形化显示分支
git log --stat # 显示文件更改统计
git log -p # 显示具体更改内容
git log -n <number> # 查看最近n条提交
git log --since="2024-01-01" # 按时间查看查看差异
git diff # 查看工作区与暂存区差异
git diff --staged # 查看暂存区与仓库差异
git diff <commit1> <commit2> # 比较两次提交
git diff <branch1>..<branch2> # 比较两个分支查看文件
git show <commit> # 查看提交详情
git show <commit>:<file> # 查看某次提交的文件
git blame <file> # 查看文件修改记录标签管理
git tag # 查看所有标签
git tag <tag-name> # 创建轻量标签
git tag -a <tag-name> -m "描述" # 创建带注释标签
git push origin <tag-name> # 推送标签到远程
git push origin --tags # 推送所有标签
git tag -d <tag-name> # 删除本地标签
git push origin --delete <tag-name> # 删除远程标签高级操作
储藏更改
git stash # 储藏当前更改
git stash save "描述信息" # 储藏并添加描述
git stash list # 查看储藏列表
git stash pop # 应用并删除最近储藏
git stash apply # 应用储藏但不删除
git stash drop # 删除最近储藏
git stash clear # 清空所有储藏重置与回退
git reset --soft HEAD^ # 回退提交但保留更改
git reset --mixed HEAD^ # 回退提交并取消暂存(默认)
git reset --hard HEAD^ # 彻底回退提交
git reset --hard <commit-id> # 回退到指定提交
git revert <commit-id> # 撤销某次提交(创建新提交)子模块
git submodule add <url> # 添加子模块
git submodule init # 初始化子模块
git submodule update # 更新子模块
git submodule foreach <command> # 对每个子模块执行命令配置相关
git config --list # 查看所有配置
git config user.name # 查看用户名
git config user.email # 查看用户邮箱
git config --global user.name "姓名" # 设置全局用户名
git config --global user.email "邮箱" # 设置全局邮箱
git config --global alias.<简称> "命令" # 设置命令别名清理与维护
git clean -n # 预览将被删除的文件
git clean -f # 删除未跟踪的文件
git clean -fd # 删除未跟踪的文件和目录
git gc # 清理无用数据,优化仓库
git fsck # 检查仓库完整性实用技巧
忽略文件
创建
.gitignore文件使用
*.log等模式匹配忽略特定文件
别名配置
添加到 ~/.gitconfig
配置示例
[alias]
co = checkout
br = branch
ci = commit
st = status
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
unstage = reset HEAD --
last = log -1 HEAD恢复误删分支
git reflog # 查看所有操作记录
git checkout -b <branch-name> <commit-id> # 根据记录恢复分支
GIT常用命令
https://www.ctuhub.top//archives/git-cmds