开发过程中,git常用命令

场景 1:仅本地提交未推送(未执行 git push

如果提交仅在本地,未推送到远程仓库:

  1. 撤回最后一次提交并保留修改

    bash 复制代码
    git reset --soft HEAD~1
    • HEAD~1 表示撤回最近一次提交,保留修改到工作区。
    • 重新修改代码后,执行 git addgit commit
  2. 撤回提交并丢弃修改(慎用):

    bash 复制代码
    git reset --hard HEAD~1

场景 2:已推送提交到远程仓库

如果提交已推送到远程分支(如 origin/main),需分情况处理:

方法 1:新增提交覆盖旧提交(推荐,安全)

使用 git revert 创建新提交来撤销之前的提交:

  1. 撤销指定提交

    bash 复制代码
    git revert <commit-hash>  # 替换为要撤回的提交哈希值
    • 这会生成一个新的提交,内容与原提交相反。

    • 解决可能的冲突后,推送新提交:

      bash 复制代码
      git push origin 分支名
    • 优点 :不修改历史,适合公共分支(如 main)。

方法 2:强制修改历史(谨慎!)

如果确定需要彻底删除旧提交(仅限个人分支或团队允许时):

  1. 本地回退到指定提交

    bash 复制代码
    git reset --hard <commit-hash>  # 回退到要保留的提交
  2. 强制推送覆盖远程分支

    bash 复制代码
    git push -f origin 分支名
    • 风险:会覆盖远程历史,导致其他协作者代码冲突。
    • 操作前建议
      • 通知团队其他成员。
      • 备份分支:git branch backup-branch

场景 3:修改最后一次提交(未推送或允许强制推送)

如果只是修改最后一次提交的内容或提交信息:

  1. 修改最后一次提交

    bash 复制代码
    git commit --amend  # 修改提交内容或信息
  2. 强制推送 (如果已推送过):

    bash 复制代码
    git push -f origin 分支名

操作流程示例

假设你误提交了文件并已推送到远程分支 feature/login

bash 复制代码
# 1. 本地回退到上一个提交(保留修改)
git reset --soft HEAD~1

# 2. 修改代码,重新提交
git add .
git commit -m "修复:正确的提交信息"

# 3. 强制推送覆盖远程分支
git push -f origin feature/login

注意事项

  1. 强制推送 (-f) 的风险

    • 会覆盖远程分支的历史记录,可能导致团队协作混乱。
    • 仅在个人分支或团队允许时使用。
  2. 公共分支(如 main)的处理

    • 优先使用 git revert 代替 git reset,避免修改历史。
  3. 备份当前状态

    • 操作前创建备份分支:git branch backup-branch

总结

场景 操作命令
撤回本地未推送的提交 git reset --soft HEAD~1 → 修改后重新提交
安全撤销远程提交 git revert <commit-hash> → 解决冲突 → git push
强制修改远程提交历史 git reset --hard <commit-hash>git push -f
修改最后一次提交 git commit --amendgit push -f(若已推送)

操作前请确保理解风险,并在团队协作中提前沟通!

相关推荐
李日灐1 天前
< 7 > Linux 开发工具:git 版本控制器 和 cgdb/gdb 调试器
linux·运维·服务器·开发语言·git·调试器·gdb/cgdb
Gust of wind1 天前
idea结合git和Gitee的初步使用
git·gitee·intellij-idea
夜七少eleanor1 天前
【Git】2026全图文详解安装教程
git
海边的Kurisu1 天前
从零开始的Git生活 | 刚实习同学的噩梦 And 参与开源不可缺的一环
git·生活
不老刘1 天前
Git Cherry-Pick:微前端架构下的“精准医疗”与最佳实践
前端·git
爬楼的猪1 天前
Git Folder Dashboard
git
Uncertainty!!1 天前
claude code中添加skills自动生成git commit信息
git·git commit·claude code
FserSuN1 天前
Git Worktree 使用学习
git·学习
Z文的博客1 天前
嵌入式LINUX QT 开发 .gitignore 文件编写指南
linux·git·qt·elasticsearch·嵌入式
前端双越老师1 天前
3 个命令 7 个步骤,学会 git worktree 并行开发
git·ai编程·全栈