是否可以从git commit中仅撤消某些字符

时间:2019-02-25 13:14:20

标签: git

我不确定这是否可行,但我环顾四周,却什么也没看见。甚至不知道我该如何缠绕它。

是否有可能,如果可以,如何撤消/删除git commit中的特定字符?

例如,假设进行一次提交,该更改将对具有许多字符更改的代码库文件进行更改

== to === // for if checks
is_null() to === null

,您只想撤消提交中字符“ =”的更改,其余的应保持不变。

谢谢您的帮助!

2 个答案:

答案 0 :(得分:2)

否,无法更改有关任何提交的任何

原因是提交的身份是其哈希ID,而其哈希ID是其内容的加密校验和。因此,如果您要做设法更改其内容,那么您将拥有新的提交。

这没什么不对,您可以说:大家好,忘记提交badf00d,请使用ID为cafedad的固定提交。但是您没有't change 提交,您只是做了一个新的改进。

这里的缺点是有人可能在旧的错误提交上构建东西。他们将不得不做一些事情以切换到在新的改进提交上构建自己的东西。那不是困难,但是有点烦人。将旧的,错误的提交留在中,然后将更正的提交放在后面会更容易:大家好,提交badf00d有一个错误,已在后续提交中修复f100ded特定的工作流程(挑选添加到现有项目的 new 提交)是每个人都必须能够随时执行的事情,因此更加容易。

(是否强迫他人切换)是您的选择。

(如果您对机制感兴趣,那么如何完成这些不同的动作(尤其是让人们忘记不好的承诺,而要做出好的决定),这是一个不同的问题。但是在StackOverflow上已经回答了)

答案 1 :(得分:0)

有很多方法可以更改(git修改),但是问题是您已经推送了修改。这意味着,如果有人将其拔出,则会遇到问题,因为您将拥有不同的树木。有关如何执行此操作以及为什么应避免执行此操作的信息,请参见以下内容:

How do I push amended commit to the remote Git repository?

在大多数情况下,使用这些额外的更改来创建新的提交更为简单。我绝对想更改上游回购的唯一情况是从回购历史记录中删除文件时(这需要重新创建提交)。

How to remove/delete a large file from commit history in Git repository?