开发过程中,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(若已推送)

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

相关推荐
weixin-a153003083161 小时前
git常用命令
git
西柚啊4 小时前
Git常用命令总结
前端·git
云梦谭5 小时前
Git 配置 GPG 提交签名
git·gpg
李艺为8 小时前
Ubuntu下展锐刷机工具spd_dump使用说明
android·linux·git·ubuntu
掘根14 小时前
Git分支管理
git
极小狐14 小时前
极狐GitLab 项目 API 的速率限制如何设置?
大数据·运维·git·elasticsearch·gitlab
残月只会敲键盘15 小时前
Git 命令速查手册
大数据·git·elasticsearch
掘金沸点顶流16 小时前
同一台电脑配置多个 git 账户(github, gitee, gitlab等)
git
苦逼IT运维20 小时前
Git LFS 学习笔记:原理、配置、实践与心路历程
笔记·git·学习