当前位置: 首页 > news >正文

【Git】详解git commit --amend用法以及使用遇到的问题

目录标题

在使用 Git 提交代码的时候,如果不想创建新的提交,而是将后续的改动合并到之前的提交中,可以使用一下命令:

实现在commit之前先将代码改动放在暂存区: git add .
使用–amend修改上次提交

git commit --amend --no-edit   # 如果不修改提交信息,合并改动到上次提交
# 或
git commit --amend -m "新的提交信息"  # 修改提交信息

由于修改历史提交,需要使用 -f 强制进行推送push:

git push -f origin <分支名> 或者 git push --force origin <分支名>

在这里插入图片描述
–amend是仅适用于未共享的提交

遇到的问题:
首先我在A分支执行了git commit --amend --no-edit提交操作,后续我又pull 拉去分支上的代码,就会出现冲突,解决完冲突后,仓库中就显示我有三次commit,这个时候可以执行先撤回最近的三次提交,然后再强制push推送,执行git reset HEAD~3 --soft ,
撤回三次,再进行提交,这样再看仓库中就只有一次commit了,包含全部改动,注意,这个时候就不要使用amend了,否则会导致他们的历史记录冲突,然后再git push --force-with-lease 强制推送;

git push --force-with-lease 和git push -f 区别
git push --force-with-lease 是一种比 git push -f 更安全的强制推送命令,它能防止意外覆盖远程分支的提交历史;

替代方案(如果想保留多个提交但在远程合并):
如果你想在本地保留多个提交记录,但在远程仓库中只显示一个提交,可以使用 git rebase -i 合并本地提交,然后再强制推送:

git rebase -i HEAD~n  # 合并最近的 n 个提交
# 在弹出的编辑器中,将需要合并的提交前的 `pick` 改为 `squash` 或 `s`
git push -f origin <分支名>
http://www.lryc.cn/news/588609.html

相关文章:

  • eVTOL分布式电推进(DEP)适航审定探究
  • Python 操作Excel工作表:添加、删除、移动、隐藏
  • redis集群的部署
  • 线性代数小述(三)
  • Pitaya 是一个简单、快速、轻量级的游戏服务器框架,它为分布式多人游戏和服务器端应用程序提供了一个基本的开发框架
  • 【橘子分布式】Thrift RPC(编程篇)
  • Vim多列操作指南
  • 028_分布式部署架构
  • 淘宝扭蛋机小程序开发:重构电商娱乐化体验的新范式
  • GaussDB 数据库架构师修炼(四) 备份容量估算
  • 【轨物洞见】光伏运维的“无人区”突围战,数据智能是唯一航标
  • Python Docker SDK库详解:从入门到实战
  • docker 方式gost代理搭建以及代理链实施
  • Linux VFS 抽象层全解析:统一接口的力量
  • JAVA学习笔记 使用notepad++开发JAVA-003
  • 微信小程序进度条cavans
  • 虚拟主机CPU占用100导致打不开的一次处理
  • [数据结构]#3 循环链表/双向链表
  • 微信小程序未登录状态下的导航拦截有哪些方法可以实现
  • 暑假Python基础整理 --异常处理及程序调试
  • python原生处理properties文件
  • 电动汽车制动系统及其工作原理
  • slam中的eskf观测矩阵推导
  • LangChain智能体开发实战:从零构建企业级AI助手
  • C++ Boost Aiso TCP 网络聊天(服务端客户端一体化)
  • CMake基础:覆盖项目开发的五大配套工具
  • 【机器学习深度学习】大模型推理速度与私有化部署的价值分析
  • ELK部署与使用详解
  • Docker部署语音转文字(STT)服务并接入Home Assistant
  • Dubbo高阶难题:异步转同步调用链上全局透传参数的丢失问题