EGit"修改之前的提交"删除推送的代码又回来了

时间:2014-06-25 15:06:40

标签: git egit amend

我有以下Git日志。:

Git log

我已经使用了EGit “Amend previous commit”函数来更改提交的提交消息,其中包含消息“在之前删除未使用的函数addSubinterval,我已经推送了到Git服务器“删除未使用的函数addSubinterval”

之后,我意识到我的代码已经在我的文件中,我已经删除并推送到服务器。它提交了消息:“删除未使用的函数setDocumentTextAndInfoColor()”。我不知道是否只有来自此提交的内容才会回来。

我检查了提交消息:“删除”nextrefid“和”nextrefid_nr“用于后续......”。该提交未在我的本地文件中恢复。

这是“修改先前提交”的理想行为吗?

我想这是一个错误,但也许我想念一些东西?

1 个答案:

答案 0 :(得分:0)

Amend用修改后的本地提交替换你的上一次本地提交。但在您的情况下,您已经将原始提交推送到您的服务器。在那种情况下,EGit甚至会警告你:

EGit warning on amend of pushed commit

我怀疑你后来做了什么"拉"。这会将远程分支origin/master与您的本地分支master合并。在您的情况下,这意味着原始提交已合并回您的本地分支,这就是您仍然在历史记录中看到它的原因。

如果您确实要从服务器中删除原始提交,则必须使用名为" force push"的内容。之所以这样称呼,是因为您有效地做的是覆盖/删除服务器上的数据。如果其他人已经拥有原始提交(他们在推送后获取),您还必须与这些人协调,以便他们也可以从本地存储库中删除提交。

由于这些原因,建议不要在提交后修改提交(除了Gerrit之类​​的特殊工作流程,或者如果你知道你在做什么)。