开发过程中,git常用命令

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

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

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

    bash 复制代码
    git reset --soft HEAD~1
    • HEAD~1 表示撤回最近一次提交,保留修改到工作区。
    • 重新修改代码后,执行 git add 和 git 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 --amend → git push -f(若已推送)

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

相关推荐
XLYcmy4 分钟前
实验报告分析评价文档——《第四次阶段汇报:模型产物的仓库瘦身、云端部署与评测链路打通》评析
git·llm·cpu·gpu·反编译·反汇编·safetensors
全栈陈序员5 分钟前
【Git】从入门到精通(三)—— 创建第一个Git仓库
大数据·git·elasticsearch
全栈陈序员36 分钟前
【Git】从入门到精通(四)—— Git三大区域:工作区、暂存区与版本库
大数据·git·elasticsearch
YIN_尹1 小时前
【git原理与使用】git基本操作及底层原理(一)
java·git·elasticsearch
AI 编程助手GPT1 小时前
GPT 改完配置别直接覆盖:用 git diff 审查两份文件
git·gpt
叼烟扛炮13 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
netyeaxi19 小时前
Git:git深入理解及常见问题
git
蹊黎21 小时前
Git 从入门到精通(二):创建本地仓库与三大核心区域
git
蹊黎1 天前
Git 从入门到精通(一):初识 Git 与环境搭建
git
゛凌乱的记忆づ2 天前
好用的md文件编辑器——TyporaS与Typora
笔记·git·typora·markdown