rewinding-git-commit-amend

Git Push/Pull 实操手册:从失败报错到安全协同 Git 的 push 和 pull 并非简单的文件上传下载,而是基于 commit 哈希与分支引用的状态同步机制。其核心原理在于本地与远程仓库间提交历史的拓扑关系判断——只有满足 fast-forward(快进)条件或显式解决分叉(如通过 merge 或 rebase),操作才能成功。这一机制保障了团队协作中代码历史的一致性与可追溯性,广泛应用于 GitHub、GitLab 等平台的日常开发、CI/CD 集成及多人并行开发场景。本文聚焦 push、pull 两大高频操作背后的真实状态模型,结合 upstre 阅读详情

http://blog.pivotal.io/labs/labs/rewinding-git-commit-amend


It may come to pass that you will amend HEAD with changes that were meant to go on a commit earlier than HEAD via git commit --amend. In this case, you’ll want to rewind that operation you just did, and apply it to the correct commit. With simple changes you may find git reset -p handy. For times when the changes are far too large and intertwined to the commit, you will want to refer to git reflog for help.

The reflog records when the tip of a branch is updated. The tip is updated any time you create a new commit, amend a commit, reset a commit, switch branches, etc. Basically, any time HEAD changes, you will get a reflog entry. The reflog therefore is a great tool for understanding how the repository came to be in a particular state.

git reflog -2 will give you the last two operations that Git performed. In this case, it will look something like:

8751261 HEAD@{0}: commit (amend): Something something something commit message
9d3a192 HEAD@{1}: reset: moving to HEAD~1

git commit --amend is kind of shorthand for (given changes have been made, and are either in the index or in the working directory):

git stash
git reset HEAD~1
git stash pop
git add .
git commit

Or, in English:

  • Save the changes that you want to apply to the HEAD commit off in the stash
  • Remove the HEAD commit and put its contents in the index
  • Apply the stashed changes to the working directory, adding them to the changes from the commit that was reset
  • Make a new commit.

Thus, the last two operations in the reflog are reset and commit.

So, what can we do with this? Well, 9d3a192 was HEAD before the amend (specifically, before the reset) happened. 8751261 was the commit that resulted at the end of the amend process. git diff 8751261..9d3a192 will show you what changes were applied as part of the amend.

From here, you can use git apply to apply the difference from before the amend to after the amend to your working tree via git diff:

git diff 8751261..9d3a192 | git apply -
  • Note: The hyphen in git apply - causes git apply to take stdin as input.
  • Extra Note: The arguments here are given in reverse order, with the later commit happening first to show the reverse of the amend. It’s the same as doing git diff 9d3a192..8751261 -R, which reverses the diff output. Additionally, the -R argument may be applied to git apply instead of git diff to achieve the same effect.

Now we can do another amend to put the commit back to where it was before we did the previous amend:

git commit -a --amend -CHEAD

And then, by reversing the order of the SHAs to git diff, get the changes we want to apply to the correct commit back:

git diff 9d3a192..8751261 | git apply -

And commit as necessary, this time using –fixup to indicate the correct commit (in this example, 1234567):

git commit -a --fixup 1234567

Then you can rebase at a later time (or now) to do the ‘amend’ you had originally intended:

git rebase --i --autosquash 1234567~1

So don’t fret when you do an accidental amend. It’s just a couple commands away from being unwound and applied to the correct commit.


避开奸商套路!手把手教你用Thaiphoon Burner和CPU-Z,一眼看穿内存SPD信息有没有被篡改 本文教你使用Thaiphoon Burner和CPU-Z工具,快速识别内存SPD信息是否被篡改,避免购买到虚标频率或假冒颗粒的内存条。通过详细步骤和实战案例,帮助用户掌握内存检测技巧,确保硬件购买的透明度和安全性。 阅读详情

相关推荐

电源完整性之Cadence Sigrity Power DC_IR_Drop仿真

之前和大家分享过电源完整性之仿真设计原理链接: link.今天接着上一篇文章总结一下电源直流压降的的仿真操作流程及一些simulation中的设置参数,用到的时候Cadence Sigrity 中的Power DC组件,下面开始享受仿真的快乐吧: 1.仿真模式选择与文件导入 选择Cadence Sigrity下的Power DC组件,然后先择licence,最后就可以打开我们之前转化好的.SPD文件。操作如下图: 2.设置层叠信息和过孔焊盘参数 层叠信息:每层的介质厚度、材料、介电常数、介质损耗角等,如

刘小同学的博客 1万+

git amend详解和撤销

git amend 详解和撤销git amend详解git amend 作用git amend如何撤销 git amend详解 git amend 作用        git 在现在的开发中使用频繁,解决了很多多人协作问题。今天我们来说说git --amend到底是干啥的。 git --amend简单地来说,可以理解成对最后一次...

不负如来不负卿 3万+

MODIS 遥感数据批量下载(使用Cygwin)

MODIS 遥感数据批量下载(使用Cygwin)包含Cygwin的下载教程

weixin_45913084的博客 916

『现学现忘』Git后悔药 — 34、git commit --amend 命令

即:有时你提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录,或者你上一次的。不推荐这样操作,多次提交可以使你选择撤销的余地比较多,简化提交次数是比较好的想法,但更推荐使用。分支只有你自己使用(这一点极其重要),由于开发周期较长,你不想每一次提交都产生一个新的。前提:你把遗漏提交的文件,或者修改的文件先提交到暂存区。有的时候,我们刚刚进行一次提交,突然发现该提交的描述(这个命令给人的感觉,是用新提交的数据,追加到了前一个。的情况下,将新修改的代码追加到前一次的。

m0_56069948的博客 1万+

C语言实现俄罗斯方块

使用C语言完成俄罗斯方块。《俄罗斯方块》的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它们在屏幕底部拼出完整的一条或几条。这些完整的横条会随即消失,给新落下来的板块腾出空间,与此同时,玩家得到分数奖励。没有被消除掉的方块不断堆积起来,一旦堆到屏幕顶端,玩家便告输,游戏结束。顾名思义,俄罗斯方块自然是俄罗斯人发明的。

qq_54169998的博客 7万+

IIS - 会话cookie中缺少HttpOnly属性

不啰嗦,我们直接开始! 先进行常规设置 打开配置编辑器 选中图中节点,将httpOnlyCookies设置为true 然后。。。不起作用。。。 换种方式 通过配置出站规则getcookie添加HttpOnly 在Web.config中添加如下出站规则 <rewrite> <outboundRules> <rule name="Add HttpOnly"> <match serverVa.

。 21万+

掌握 Git 提交修正:如何使用 git commit --amend

【代码】git 使用场景 --amend 提交。

张紫娃的博客 4356

YOLOv8n模型导出ONNX的避坑指南:解决版本差异,正确生成TensorRT/RKNN所需输出节点

本文详细介绍了YOLOv8n模型导出ONNX格式的实战避坑指南,涵盖版本差异处理、代码修改技巧及TensorRT/RKNN部署优化方案。针对不同推理框架需求,提供输出节点生成、动态轴处理和后处理划分等核心问题的解决方案,帮助开发者高效完成模型部署。

weixin_33247358的博客 357

git --amend用法

git commit --amend 这个命令是让我们可以对上一次提交有修改,可以修改文件也可以修改说明,不产生新的commit 在我们有一次提交,然后提交之后评审发现代码有问题,我们没有进行和入,需要重新修改,但是我们又不能产生新的commit 第一种办法 git reset --soft origin/branchname 然后重新提交 第二种办法使用–amend 这种方法觉得更简单,不用重新reset,直接修改commit信息即可。 如果不行修改信息 git commit –amend –no-e

风烟 2万+

29、5G PUCCH格式及资源配置详解

本文详细解析了5G通信系统中的物理上行控制信道(PUCCH)的不同格式及其资源配置方案。PUCCH负责传输上行控制信息(UCI),包括混合自动重传请求(HARQ)确认信息、调度请求(SR)和信道状态信息(CSI)等。文章从PUCCH的基本概念出发,深入分析了格式0到格式4的特点、编码调制方式、干扰随机化机制以及适用场景,并探讨了PUCCH资源集的配置方法和上行控制信令在PUSCH上的传输机制。通过对比不同格式的传输能力、干扰随机化方式和频率跳变能力,为读者提供了选择合适PUCCH格式的决策依据。最后,文章总

oil88的博客 251

[VCS]VCS dump fsdb的精细化控制

本文介绍了VCS FSDB波形dump的精细化控制方法。主要内容包括:1)基本dump方式;2)通过$fsdbDumpoff排除特定层次;3)使用$fsdbDumpvars选择性dump指定模块;4)运行时动态控制dump开关;5)通过文件管理排除列表($fsdbDumpoffFile或自定义读取);6)层次控制策略(剪除整棵树或仅当前层)。这些方法可有效控制波形文件大小,提高仿真效率。

元直的博客 1033

git commit 参数详解 --amend

git commit 参数详解 -m -a --amend

rd_w_csdn的博客 8927

手把手教你学BSP(11.3)--BSP实例:基于Raspberry Pi 4 Model B的Linux BSP开发实例

通过以上步骤,我们完成了一个基于Raspberry Pi 4 Model B的Linux BSP开发过程,包括硬件初始化、设备驱动编写、Bootloader配置、内核配置和编译,以及最终映像的生成。每个步骤都非常重要,确保每一步都正确无误才能使整个系统正常运行。

MHD0815的博客 1010

git error

fatal: refusing to merge unrelated histories 解决方法 git pull --rebase origin master 然后出现 First, rewinding head to replay your work on top of it... 解决方法  git fetch origin 然后再 git pull --rebase origi...

hqm178933的博客 268

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Git 秒会

必知必会的git 操作,面试必问的 git 问题。

码刀攻城 1765

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

git:总结

本文整理了多个实用的Git操作技巧和常见问题解决方法,包括:显示commit修改文件名的命令、cherry-pick冲突处理、gerrit差异文件应用、VSCode合并工具注意事项、git配置查询、分支删除命令、版本描述查询、权限配置建议、detach状态风险、二分法查错、仓库清理(gc/prune)、代码重构影响、远程仓库URL查看、撤销文件修改、Git服务器搭建、代理设置等。还特别提醒Windows用户注意Git对文件名大小写的处理问题,建议避免在仓库中使用仅大小写区分的文件名。

mzhan017的博客 4829

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Git命令】git commit --amend

【Git命令】git commit --amend

万物皆字节 2万+

git commit --amend 详细用法及示例

【代码】git commit --amend用法。

qq_44815135的博客 3444

Git学习笔记-- amend 详解

Git学习笔记-- amend 详解

游戏码农一枚,不定时分享技术文章~ 3104

Git实战经验分享:深入掌握git commit --amend的进阶技巧

是Git版本控制系统的核心补救命令,主要用于修正最近一次提交的元数据。该命令不会产生新的提交记录,而是通过覆盖原提交实现版本历史的整洁性,特别适合在本地仓库进行提交优化。

ALex_zry的博客 1690

Git 常用操作 | 重写 commit 历史

当我们修改完代码,提交了一个 commit,然后发现改错了,怎么修正?这种情况分为两种:修正最近一次提交,和修正历史多个提交。修正最近一次提交如果发现刚刚提交的内容有错误,当场再修改一下...

dotNET跨平台 2218

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

Git提交修改技巧:使用git commit --amend可将新改动合并到上次提交,可选保留原信息或修改。注意需配合git push -f强制推送,但仅适用于未共享的提交。若出现冲突,可撤回多次提交重新整理(git reset HEAD~3 --soft),推荐使用更安全的--force-with-lease强制推送。替代方案是使用git rebase -i交互式合并多个提交后再推送。这些操作均会改写提交历史,团队协作时需谨慎使用。

m0_69892739的博客 1279

git commit 写错信息?这个 --amend 指令能让提交记录假装没翻车

当使用 --amend 指令修改了已经推送到远程仓库的提交后,由于本地的提交历史与远程仓库的提交历史发生了变化(创建了新的提交对象),此时执行普通的git push会失败,需要使用git push --force强制推送。因此,应尽量在提交前仔细检查提交信息和代码修改,减少使用 --amend 指令的次数。它的主要功能是允许开发者修改最近一次提交的信息,同时,如果在最近一次提交后又有新的修改(且这些修改已经被暂存),还可以将这些新的修改合并到最近一次的提交中,而不会产生新的提交记录。

2503_92849275的博客 1048

Git Amend

commit --amend 用于修改最近的 commit。 它将暂存区(staging environment)中的更改与最新 commit 相结合,并创建一个新的 commit。 这个新的 commit 完全取代之前的 commit。 Git 修改提交信息 使用 --amend 可以做的最简单的事情之一就是更改 commit 消息。 假设现在我们修改了 README.md 的内容,并且已经 c...

lio-zero 的博客 335

git commit --amend 详解

是 Git 中一个非常实用的命令,用于修改最近一次的提交信息或补充提交内容。它可以帮助你修正错误的提交信息,或者将忘记添加的文件纳入最近一次提交中,而不必创建新的提交记录。

weixin_45066931的博客 913

git commit --amend的使用

在本地,修改自己的代码逻辑后,将文件git add到暂存区,再使用git commit --amend提交到本地仓库,最后git push到gerrit,在gerrit上就可以看到自己上传这个patch.:在gerrit上,同事review自己提交的代码后,自己需要在本地更改一些代码逻辑,并提交这个patch到这笔代码提交上。git commit --amend 将暂存区的代码追加提交到本地仓。amend v.修正。

qq_51917382的博客 519
上一篇: createrepo and smart channel
下一篇: Persistent block device naming
Xalloc
博客等级 码龄16年 25粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值